如何获得通过终端服务连接的客户端设备的IP?

时间:2019-06-17 18:38:31

标签: asp.net terminal-services

问题

我需要从ASP站点获取通过RDP / TS连接的用户的客户端IP。

样本数据

  • 托管网站的服务器位于10.0.1.1。
  • 用户的计算机已连接到IP为10.2.0.1。的终端服务器。
  • 用户位于IP为10.3.0.1。的物理客户端上。

尝试的解决方案

我尝试过从标头中提取数据。

  • Request.ServerVariables["REMOTE_HOST"] 10.2.0.1
  • Request.ServerVariables["HTTP_X_FORWARDED_FOR"] [空白]
  • Request.ServerVariables["REMOTE_ADDR"] 10.2.0.1
  • Request.UserHostAddress 10.2.0.1

我也尝试了这些方法。

public static string getIP()
{
  string ips = string.Empty;
  string hostName = HttpContext.Current.Request.UserHostAddress.ToString();
  IPAddress[] ipAddresses = Dns.GetHostAddresses(hostName);
  foreach (IPAddress ipAddress in ipAddresses)
  {
    ips += ipAddress + "<br />";
  }
  return ips;
}

返回10.2.0.1。

public static string GetIPAddress()
{
  string ipAddress = "";
  string Hostname = Environment.MachineName;
  IPHostEntry Host = Dns.GetHostEntry(Hostname);
  foreach (IPAddress IP in Host.AddressList)
  {
    if (IP.AddressFamily == AddressFamily.InterNetwork)
    {
      ipAddress= Convert.ToString(IP);
    }
  }
  return ipAddress;
}

返回10.1.0.1。

问题

由于从用户的物理客户端到TS到网络服务器之间存在额外的跳跃,是否有可能返回10.3.0.1?另一种语言(例如PHP)有可能吗?

0 个答案:

没有答案