哪个跨平台命令行工具允许我获取我的外部 IP 地址?

哪个跨平台命令行工具允许我获取我的外部 IP 地址?

如何从 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

相关内容