REMOTE_ADDR返回2个IPv4而不是1个

时间:2016-01-06 17:35:04

标签: php ipv6

我将IP存储到以前在char(15)下工作的数据库,最近我得到越来越多的IP看起来像这样:

  

'172.29.93.25,94.56.207.248'

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

我正在使用的命令:

$ip = $_SERVER['REMOTE_ADDR'] 

以上IP对我来说看起来不像IPv6,而是像两个以逗号分隔的IPv4。这怎么可能?

3 个答案:

答案 0 :(得分:4)

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

更新

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

答案 1 :(得分:1)

第一个地址是10.10地址,这意味着它是一个非路由地址。这是一个负载均衡器,或者您有一个虚拟机(即亚马逊AWS),它具有通过某个网关到达互联网的非公共地址。

答案 2 :(得分:1)

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