为什么“我的 IP 是什么”与我在 Apache 日志中看到的不匹配?

为什么“我的 IP 是什么”与我在 Apache 日志中看到的不匹配?

只是想更好地了解事情的运作方式。我目前被绑定到我的手机上,当我在 Google 上搜索我的 IP 时,我得到一个公共 IP 地址,我们在这里称之为 A,正如预期的那样,它在马里兰州地区注册到 AT&T。

但奇怪的是,我在 Azure 云上工作并设置了一条规则来阻止任何不是来自 A 的连接。该规则失败了,所以我删除了该规则,访问了 Azure 上的 Apache 服务器,检查了日志并得到了一个完全不同的公共地址 B,该地址也在马里兰地区的 AT&T 注册。

我仔细检查了我的 IP,它仍然显示 IP A。我设置了一条规则,改为只允许来自 IP B 的连接,一切正常。为什么我的 IP 站点看到 A,但我的 Apache 服务器看到一个单独的公共 IP 地址 B(同样,它也注册到 AT&T,所以这不是某种奇怪的 Azure 巫术)。

注意:所有 IP 均为 IPv4。

答案1

您的手机 ISP 正在使用运营商级 NAT。除非您为特殊的 IoT/商业服务付费,否则几乎世界上任何地方都是如此。

虽然运营商级 NAT 系统的工作原理与家用路由器有些相似,但它通常会分配多个公共 IP 地址,并会尝试在它们之间平衡负载。负载平衡算法的细节各不相同,但一个简单的关键点可能是(源 IP,目标 IP)。Azure 不是 Google,因此您的通信最终会被转换为不同的公共 IP 地址。


这就是为什么防火墙规则如“只允许来自1.1.1.1” 仅在以下情况下有效1.1.1.1实际上是静态 IP 地址。即使没有运营商级 NAT,非商业有线/DSL 连接上的 IP 地址也可能会随时更改。

相关内容