REMOTE_ADDR returns 2 个 IPv4 而不是一个

REMOTE_ADDR returns 2 IPv4 instead of one

我正在将 IP 存储到以前在 char(15) 下工作的数据库,最近我得到越来越多的 IP,如下所示:

'172.29.93.25, 94.56.207.248'

不过,大多数条目看起来都不错。这不到所有案例的 1%。

我正在使用的命令:

$ip = $_SERVER['REMOTE_ADDR'] 

上面的 IP 在我看来不像是 IPv6,而更像是两个用逗号分隔的 IPv4。这怎么可能?

第一个 IPv4 地址可能是负载平衡器的内部 IP 地址。第二个 IPv4 地址可能是客户端的 IP 地址,并且可能被负载均衡器包含在 X-Forwarded-For http header.

更新:

我看到您已经编辑了问题,并将 IP 地址为 10.x.x.x 的示例替换为 IP 地址为 172.x.x.x 的新示例。在这种新情况下,第一个 IP 可能是代理服务器。通常,您可以在此字段中使用逗号分隔的 IP 地址列表,该列表可以任意长,它代表请求经过的所有代理和负载平衡器。最后一个 IP 地址是原始客户端的 IP。

第一个地址是 10.10 地址,这意味着它是 non-routing 地址。这是一个负载均衡器,或者您有一个虚拟机(即 Amazon AWS),该虚拟机的 non-public 地址通过某个网关到达互联网。

第一个地址是私有地址,可以了解一下address allocation for private internets here