嗯,
$_SERVER['REMOTE_ADDR']
WhatIsMyIP显示了两个不同的 IP 地址。我想捕获 IP 地址,就像它在“whatismyip”上的显示方式一样。
3 回答
一些网络101:
+--+
| |
+--+
whatismyip.com +--+
108.162.207.135 +----- | |
| +--+
| +--+ | your computer
+------ | | ------+ 10.127.254.21
+--+ |
NAT router | +--+
85.89.XX.XX +----- | |
+--+
your web server
10.127.254.22
如果这是您的网络设置,your web server
将看到两者通信时10.127.254.21
的 IP 。your computer
这是因为要将数据从 路由your computer
到your web server
,数据包只需要直接在两者之间的线路上传输。如果两者是同一台机器,它甚至不需要这样做。
whatismyip.com
85.89.XX.XX
如果您尝试从 访问它,它将被视为原始 IP 地址,因为数据会在从到的途中your computer
遍历您。NAT 路由器使用 NAT 技术代理请求,在此过程中隐藏您的实际IP 地址。看起来请求来自路由器,而不是您的.NAT router
your computer
whatismyip.com
whatismyip.com
your computer
想要从头开始得到85.89.XX.XX
答案是相当随意的。这不是“你的真实IP”,它是路由器的IP,与和之间的通信没有任何关系。$_SERVER['REMOTE_ADDR']
your web server
your computer
your web server
该站点显示您的全球 IP 地址(您用来连接到互联网的地址)。REMOTE_ADDR
显示客户端地址,我猜是你自己的机器,根本不通过互联网。这就是为什么它向您显示本地 IP 地址,而不是全局 IP 地址。
底线:您使用您的全局地址请求远程服务器 (whatismyip.com),但使用您的本地地址请求您的本地服务器(如果它在同一台机器上,则为 127.0.0.1)。
当您运行本地 Web 服务器并使用$_SERVER['REMOTE_ADDR']
它时,它将返回您在本地网络上的地址(如果在另一台计算机上)或 127.0.0.1(又名 localhost)如果在您自己的计算机上。而“我的 IP 是什么”将查看您的网络到 Internet 的 IP 地址。我希望这有助于澄清正在发生的事情。
无论如何,$_SERVER['REMOTE_ADDR']
在适当的 Web 服务器上“实时”运行时应该可以正常工作,所以如果这是您计划做的,您不必担心。