一些网站如http://www.geoip.co.uk能够获得我的主机的私有 IP 地址,而其他网站如https://www.iplocation.net/则无法这样做。
这种行为背后的原因是什么?我一直认为如果我使用 NAT 接口,服务器将无法访问私有 IP。
NAT 是将公共 IP 附加到传出数据包还是完全删除私有 IP?如果是后者,为什么会观察到上述行为?
此外,当我查看http://www.geoip.co.uk的源代码时,我观察到我的 IP 直接呈现为文本,即没有任何对 JavaScript 函数的调用。那么网站之前是怎么知道我的私有IP的 它甚至呈现网页?
10.9.64.58 是我的私有 IP 地址(我在 ipconfig 之后得到的)。
编辑:正如@simlev 指出的那样,我应该添加以下信息:我是一名大学生,在我的 PC 上访问该站点时已连接到研究所的 LAN,但我在手机上也观察到了相同的行为,但我的手机没有打开那个局域网。Imgur 截图在这里和这里。
编辑:另一个我觉得相关的观察:当我使用 https:// 访问网站时,我获得了我的公共 IP(所需的东西),但只有当我使用 http:// 访问它时,我才能获得私有 IP。那么,我们在这里讨论的是一些协议问题吗?
你使用http代理吗?在我的情况下,网络代理转发内部 ip,这可能是一个反滥用功能。
一个类似的可能性是你的 ISP 只给你一个共享的外部 ip 地址,然后当你访问网站时,它也会将你的内部 ip 传递给他们;这是为了识别滥用者:网站可以在向 ISP 提交滥用报告时提供两个 ip,并且由于内部 ip,ISP 能够快速追踪滥用用户。只有外部共享 IP 才能做到这一点会更困难。
由于内部和外部 ip 都随您的请求一起传递,因此一些 show-your-ip 网站选择显示请求实际来自的 ip,而另一些网站则显示发出请求的帐户的 ip。
检查您发送的标头(例如此处)。您可能有一个 X-Forwarded-For,其中您的私有 ip 是由您网络上的某个东西或 ISP 的网络设备之一添加的。
有关更多信息,请参阅此处的Cristopher、Adam Katz 和 Mark 的回答。顺便说一句,马克提供了和我一样的建议,并链接到了同一个网站:-)
更新:是的,您(很可能)正在使用代理。
如果你在校园里,从你的评论中可以推断出,只有你的 ISP(也就是大学)没有将每个学生直接连接到互联网才有意义:我倾向于推测你是透明的代理.
更新:正如 OP 注意到并正确指出的那样,通过 https 访问的同一个网站显示的是外部 ip。这是意料之中的,因为代理通常不会改变 https 流量,因此无法添加 X-Forwarded-For 来泄露内部 IP 地址。