Axe*_*ger 21 networking ip-address nat
如果您的连接经过 NAT,是否可以在不发出出站 Web 请求的情况下查看您的外部 IP 地址?
任何操作系统(Windows、Linux 等)都可以。
har*_*ymc 24
如果您的计算机在 NAT 之后,您可能会看到路由器的外部 IP 地址,但您需要对路由器进行管理访问。
路由器知道您的外部 IP 地址,因此通过访问其配置页面您可以找到该 IP 地址。这种方式不需要任何专门的工具,除了 Web 浏览器。
其他需要使用工具获取信息的协议:
经用户@dirkt 测试,所有方法仅适用于 IPv4(PCP 可能除外)。
Spi*_*iff 12
有几种方法可以与某些 NAT 配合使用,但没有任何方法可以保证在任何地方都有效。
我相信 uPnP、NAT-PMP 和 PCP(通用即插即用、NAT 端口映射协议和端口控制协议)都有办法向兼容的 NAT 网关询问公共地址是什么,但并非所有 NAT 都支持这些协议。与企业或运营商级 NAT 解决方案相比,家庭网关路由器的支持更为普遍。
当您发现自己位于 NAT 后面时,查看它将您的流量转换为哪个公共 IP 地址的唯一可靠方法是将一些传出流量发送到某个公共主机,该主机将以 NAT 不会转换的方式返回报告,地址您的流量似乎来自。使用基于 Web 的服务是一种方法,但您也可以通过 SSH 连接到云服务器实例并查看sshd您的 SSH 会话来自何处。
您可以使用 DNS 请求,我认为它不属于“网络请求”类别:
nslookup myip.opendns.com resolver1.opendns.com
Run Code Online (Sandbox Code Playgroud)
我想对已有的答案补充一点。
它还取决于网络的复杂性。您的计算机可能位于具有多个外部 IP 地址的网络中,并且线路上某处的路由器根据某些条件将流量发送到 Internet:例如,目标 IP 地址或一天中的时间(可能一个上行信道在夜间或其他原因更便宜)。
因此,为了完整起见,“外部 IP 地址”的概念可能需要定义您的地址在外部的目标点。
在下面的示例中,Router #2可以执行 NAT 并将流量发送到任一上行链路,并且接收主机可以看到Host.
或者可能是某个目的地(例如host1.example.com)始终通过 路由Uplink A,而主机host2.example.com始终通过 路由Uplink B。因此,通过这些主机所看到的外部IP地址会有所不同,提供Uplink A和Uplink B不同的互联网服务供应商。
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Run Code Online (Sandbox Code Playgroud)
因此,发送流量将允许获得更可靠的结果。
您可以使用 DNS 而不是 HTTP。例如您可以使用:
dig +short TXT o-o.myaddr.l.google.com
Run Code Online (Sandbox Code Playgroud)
这将显示您正在使用的 DNS 服务器的单播地址,如果它支持 EDNS,它还将显示您的 IP 地址,尽管可能会被截断。
要获取完整的 IP 地址,您可以绕过本地 DNS 服务器并将上述请求直接发送到 ns{1,2,3,4}.google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Run Code Online (Sandbox Code Playgroud)
如果您想查看特定协议版本中的 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
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以使用 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
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的流量经过协议转换,您可能会得到不同的结果或根本没有结果。在 NAT64 后面的机器上进行测试,我能够使用上述命令看到我的 IPv6 地址,但看不到 NAT64 的 IPv4 地址。
| 归档时间: |
|
| 查看次数: |
7483 次 |
| 最近记录: |