【问题标题】:Cannot get user IP address (proxy/firewall/load balancer)无法获取用户 IP 地址(代理/防火墙/负载均衡器)
【发布时间】:2011-08-26 06:26:09
【问题描述】:

我之前使用下面的代码通过 asp.net 获取客户端 IP,但在我移至 VDS 之后,此函数开始仅返回我的子网掩码,即 178.18.198.1 或 178.18.198.2。 谁能帮我解决这个问题?

Private Function GetIPAddress() As String
    Dim sIPAddress As String = Nothing
    sIPAddress = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

    If String.IsNullOrEmpty(sIPAddress) Then
        sIPAddress = Request.ServerVariables("REMOTE_ADDR")
    End If

    Return sIPAddress
End Function

编辑

发现类似问题here:

已经部署了很多2008 32位 使用 citrix 的标准 Web 服务器 netscaler isapi(netscaler 是 负载均衡器),在所有情况下 客户端IP地址登录 标准 IIS 日志。在一个新项目上,我 被要求部署 2008 R2, 以相同方式配置 IIS 7.5 我过去如何配置 IIS 7.0, 但是这次客户端IP是 返回负载均衡器地址 日志。这是奇怪的部分,我 安装了“高级日志记录”,它是 显示客户端 IP 地址 正确,所以 isapi 正在做它的 工作。已经用谷歌搜索了这个 并且可以使用一些建议。

我还找到了 ISAPI 过滤器模块,但无法使其工作:devcentral.f5.com/x_forwarded_for_log_filter_for_windows_servers

【问题讨论】:

  • 发现 HTTP_CLIENT_IP 返回了我正确的 ip 地址,但为什么这段代码不能像以前那样工作??
  • 第 3 方模块,由 F5 的一位架构师 devcentral.f5.com/articles/… 编写
  • IIS7/8: Logging the real client IP in the IIS hit logs blogs.iis.net/deanc/… 选项高级日志记录、ARR、F5 模块

标签: asp.net vb.net ip-address iis-7.5


【解决方案1】:

通过在源代码文件中使用 HTTP_CLIENT_IP 而不是 REMOTE_ADDR 解决了问题。

按照here 的建议安装 IIS 高级日志模块解决了有关 IIS 日志的问题。此外,我在安装 Advanced Logging 后收到错误“503:服务不可用”,但通过向每个人授予 Program Files\IIS 文件夹的读写权限并启动失败的应用程序池来解决此问题。

http://kb.parallels.com/6735

here 建议的另一个解决方案是:

在“负载”下的 NetScaler 平衡”,“服务”然后在 高级选项卡,在设置下,检查 “使用源 IP”框和 “客户端 IP”然后在标题字段中 “客户端 IP”

【解决方案2】:

我用

IP.Text = Request.UserHostAddress;

在 C# 中。这对你有用吗?

【讨论】:

  • 不,它返回相同的地址:178.18.198.2
  • 这对我来说很好,这似乎更像是一个基础设施问题
  • 服务器故障问题,希望问题解决:serverfault.com/questions/270751/server-records-wrong-ips
  • 由于 IIS 代理,我有同样的问题,不幸的是 Pleun,ip 标头在 IIS 代理/代理级别更改。
  • 同为Request.UserHostAddress.ToString();HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString()
猜你喜欢
  • 2021-12-05
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
相关资源
最近更新 更多