有些网站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后得到的IP地址)。
编辑:正如@simlev 指出的那样,我应该添加以下信息:我是一名大学生,在 PC 上访问网站时连接到学院的 LAN,但我在手机上也观察到了同样的行为,而我的手机不在该 LAN 上。Imgur 截图这里和这里。
编辑:我觉得还有一点值得注意:当我使用 https:// 访问网站时,我会获得我的公共 IP(所需的 IP),但只有当我使用 http:// 访问网站时,我才会获得私有 IP。那么,我们在这里讨论的是不是某种协议问题?
答案1
你使用 http 代理吗?就我而言,Web 代理转发内部 IP,这可能是一种防滥用功能。
类似的可能性是,您的 ISP 只为您提供共享的外部 IP 地址,然后当您访问网站时,它还会向他们传递您的内部 IP;这是为了识别滥用者:网站可以在向 ISP 提交滥用报告时提供两个 IP,并且由于内部 IP,ISP 能够快速追踪滥用用户。如果只使用外部共享 IP,则很难做到这一点。
由于内部和外部 IP 都会随您的请求传递,因此一些显示您的 IP 网站选择显示请求实际来自的 IP,而另一些网站则显示发出请求的帐户的 IP。
检查你发送的标头(例如这里)。您的网络上或 ISP 的网络设备中可能添加了一个 X-Forwarded-For,其中包含您的私有 IP。
欲了解更多信息,请参阅 Cristopher、Adam Katz 和 Mark 的回答这里顺便说一句,马克给出了和我一样的建议,并且链接到了同一个网站 :-)
更新:是的,您(很可能)正在使用代理。
如果您在校园里,那么从您的评论中就可以推断出,您的 ISP(即大学)不将每个学生直接连接到互联网才有意义:我倾向于推测您是透明代理的。
更新:正如 OP 注意到并正确指出的那样,通过 https 访问的同一个网站显示的是外部 IP。这是意料之中的,因为代理通常不要改变 https 流量,因此不能添加泄露内部 IP 地址的 X-Forwarded-For。
答案2
该网站有可能正在利用 WebRTC 安全漏洞。
- “巨大安全漏洞泄露 VPN 用户真实 IP 地址”。TorrentFreak. 2015 年 1 月 30 日。
uBlock 起源 (对于 Firefox/对于 Chrome) 能够弥补这个安全漏洞。但你必须进入其设置页面,勾选相应的复选框“防止 WebRTC 泄露本地 IP 地址”。