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。
我正在将 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。