不发出出站 Web 请求是否可以查看我的外部 IP 地址?

不发出出站 Web 请求是否可以查看我的外部 IP 地址?

如果您的连接是 NAT,是否有可能在不发出出站 Web 请求的情况下查看您的外部 IP 地址?

任何操作系统(Windows、Linux 等)都可以。

答案1

如果您的计算机位于 NAT 后面,您可能会看到路由器的外部 IP 地址,但您需要具有路由器的管理访问权限。

路由器知道您的外部 IP 地址,因此您可以通过访问其配置页面来找到该 IP 地址。这种方式不需要任何专门的工具,只需使用 Web 浏览器即可。

其他需要工具来获取信息的协议:

经用户@dirkt 测试,所有方法仅适用于 IPv4(PCP 可能除外)。

答案2

有几种方法可以与某些 NAT 配合使用,但没有一种方法可以保证在任何地方都有效。

我相信 uPnP、NAT-PMP 和 PCP(通用即插即用、NAT 端口映射协议和端口控制协议)都有方法向兼容的 NAT 网关询问公共地址是什么,但并非所有 NAT 都支持这些协议。与企业或运营商级 NAT 解决方案相比,家庭网关路由器更支持这些协议。

当您发现自己处于 NAT 后面时,唯一可以确定的方法是将一些传出流量发送到某个公共主机,该主机将以 NAT 无法转换的方式报告您的流量来自哪个地址。使用基于 Web 的服务是一种方法,但您也可以通过 SSH 进入云服务器实例并查看您的 SSH 会话来自何处sshd

答案3

您可以使用 DNS 请求,我认为这不属于“Web 请求”类别:

nslookup myip.opendns.com resolver1.opendns.com

答案4

您可以使用 DNS 而不是 HTTP。例如,您可以使用:

dig +short TXT o-o.myaddr.l.google.com

这将显示您正在使用的 DNS 服务器的单播地址,如果它支持 EDNS,它还将显示您的 IP 地址,尽管可能被截断。

要获取完整的 IP 地址,您可以绕过本地 DNS 服务器,将上述请求直接发送到 ns{1,2,3,4}.google.com

dig +short TXT o-o.myaddr.l.google.com @ns3.google.com

如果您想查看特定协议版本的 IP 地址,可以-6使用-4

dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com

如果您愿意,也可以使用 OpenDNS。OpenDNS 不使用 TXT 记录,而是使用 A 和 AAAA 记录,因此您必须指定要查找的协议版本:

dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com

请注意,如果您的流量经过协议转换,您可能会得到不同的结果或根本没有结果。从 NAT64 后面的机器进行测试,我能够使用上述命令查看我的 IPv6 地址,但看不到 NAT64 的 IPv4 地址。

此答案基于以下来源1 2 3以及我自己的一些研究。

相关内容