如何从 Windows 和 Linux 命令行获取我的外部 IP 地址?
在 Windows 上,ipconfig 显示内部网络 IP 地址,但不显示外部 IP 地址。
答案1
Windows 和 Linux 都不知道其外部 IP 地址,因此它们无法原生地让您知道。因此您必须使用外部服务来查找 IP 地址。
在 Linux 下,您可以使用curl
众多服务之一来让您知道您的地址:
$ curl ip.alt.io
123.123.123.123
对于 Windows 也有类似的选项,例如安装卷曲。请注意,curl 本身并不能确定您的 IP 地址,它只是向外部网站询问您来自哪个 IP 地址。
然而,最好的方法是使用动态 DNS (DDNS) 服务,例如无ip.com。在这里,您可以将外部 IP 地址动态注册到 DNS。因此,您可以使用域地址(例如)而不是 IP 地址myhomeip.no-ip.com
。
国内大部分路由器都支持在外部地址变化时自动更新DDNS,如果不支持的话,还有适用于Windows和Linux的客户端(ddclient)。
答案2
谷歌搜索我的 IP 地址是多少效果很好。
您的公网 IP 地址是 ##.###.###.178
您还可以获取有关网络的一些信息,以便更好地了解正在发生的事情。使用以下工具网络状态,路由追踪、ssh 或远程登录您可以弄清楚自己是如何进入互联网公共网络的。
有公有和私有 IP 地址。如果您知道哪些是私有 IP 地址范围,那么您就可以猜出您在外部网络上使用的是哪个 IP 地址。一旦停止traceroute
使用私有 IP 地址范围,它就会转移到公共网络上。
专用网络(维基百科)
10.0.0.0/24
172.16.0.0/20
192.168.0.0/16
我首先要找到我的默认网关。
在 Linux 中:
网络状态-r
在 Windows 中:
网络状态/r
这将向您显示类似
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
172.16.0.0 * 255.255.255.0 U 0 0 0 eth0
172.16.0.0 * 255.255.255.0 U 0 0 0 wlan0
192.168.122.0 * 255.255.255.0 U 0 0 0 virbr0
link-local * 255.255.0.0 U 0 0 0 eth0
default 172.16.0.2 0.0.0.0 UG 0 0 0 eth0
请注意底部的默认设置,这应该是您走向公共世界之前的最后一步。
现在traceroute
转到 Google 的 DNS 服务器地址 8.8.8.8,看看你与外界联系的路径是怎样的。
Linux:
跟踪路径 8.8.8.8
视窗:
跟踪路由 8.8.8.8
这应该会给你一些类似的东西
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 172.16.0.2 (172.16.0.2) 0.564 ms 0.882 ms 0.848 ms
2 ##.###.###.177 (##.###.###.177) 12.239 ms 13.040 ms 13.859 ms
我的默认路由之后的步骤是进入我们的外部网络。
这谷歌搜索和 不同,traceroute
但只差一位数字。这是因为您需要一个与您的 ISP 在同一范围内的 IP 地址才能与他们通信。因此,我们的路由器有一个比我们的外部 IP 地址低一个的 IP 地址,我们的 ISP 使用该 IP 地址将流量路由到世界其他地方。
您的公网 IP 地址是 ##.###.###.178
了解路由器上的一个设备拥有所有三个 IP 地址可能会有所帮助。私有 IP 地址为 172.16.0.2(默认路由),ISP 提供的内部 IP 地址为 ##.###.###.178,ISP 用来连接互联网的外部 IP 地址为 ##.###.###.177。因此,如果我知道如何使用 Telnet/ssh 远程连接到路由器,我可以直接使用查询路由器来通过命令行获取此信息。
不同的路由器和 ISP 有不同的管理方式。大多数家用 DSL 调制解调器都很容易通过 ssh 进入,因为您有密码和登录信息,但如果 ISP 在您的办公室安装了路由器,他们可能不会允许您访问他们的路由器。
答案3
您可以使用lynx工具来获取外部ip。
lynx——转储http://whatismyip.org
答案4
ifconfig.me是一个您可以在浏览器中访问的网站,可以获取几乎所有您需要的信息。您还可以curl
在该页面上使用显示的变量来获取特定信息。数据以 JSON 格式的字符串返回,这使得使用它编写脚本非常容易。查看 ifconfig.me 页面底部的更多示例。
例如:
curl ifconfig.me/ip
curl ifconfig.me/all