【问题标题】:.Net Core 5 API keeps returning the same IP.Net Core 5 API 不断返回相同的 IP
【发布时间】:2021-02-04 22:42:15
【问题描述】:

在我的 .net core 5 api 中,我需要从请求中获取远程 IP。它在我的测试服务器上运行良好。 从不同的网络检查了几次。

但是

在我的客户端服务器上,无论我从哪里调用 API,我都会获得相同的 IP 地址。 所以,我的问题是在我的服务器上一切正常,但在客户端的服务器上,我得到了错误的 IP 地址。

我已经安装了 .Net 5 SDK 我已经将它与我的服务器和 IIS 进行了比较(不同版本的 IIS,但配置似乎很好)

有什么想法吗?

【问题讨论】:

  • 找到网络管理员并与他们讨论。您不能仅从请求本身获取远程 IP 地址,因为该 IP 地址可以是反向代理或介于两者之间的任何东西,并且实际的客户端 IP 地址可能出现在 HTTP 标头中。
  • 之前检查x-forwarded-for 标头,如果有值,则使用它。假设您的代理服务器正确填写了该值。
  • 能否请您发布如何您是如何获得远程 IP 的?
  • 您是否尝试过直接从这些不同的设备调用该 API。
  • @Charlino 几个月前它没有用,但我认为最近发生了一些变化,现在它就像这样简单:protected IPAddress RemoteIpAddress => HttpContext.Connection.RemoteIpAddress;

标签: asp.net-core iis .net-core .net-5 asp.net-core-5.0


【解决方案1】:

我假设你有 LB 环境。所以很可能你得到了LB IP。 如果是这种情况。您应该配置 LB 以允许将 HTTP 标头传输到内部请求。特别是如果您在 DMZ 中使用内部 HTTP 方向。 主要是您可以依赖“x-forwarded-for”,代理服务器 (LB) 将填写它并将其传递给您的内部服务器。

【讨论】:

    【解决方案2】:

    在和我的客户交谈后,显然他知道服务器实际上是在 NAT 后面(之前问过他,他否认了?‍♂️)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 2015-05-18
      相关资源
      最近更新 更多