題 什麼跨平台命令行工具允許我獲取外部IP地址?


如何從Windows和Linux命令行獲取外部IP地址?
在Windows上,ipconfig顯示內部網絡IP地址,但不顯示外部IP地址。


4
2018-04-03 05:01


起源


您是否在學校或辦公室等受管理的環境中? - cutrightjm
他們也不應該知道外部網絡地址,網絡中的網關會知道這一點。您可以通過查詢網關獲取外部IP,但這一切都取決於它的配置方式。 - Ardesco
可能重複 如何從Windows命令行獲取我的外部IP地址(通過NAT)? - Diogo


答案:


Windows或Linux都不知道其外部IP地址,因此他們無法讓您知道。因此,您必須使用外部服務來查找IP地址。

在linux下,你可以使用 curl 以及眾多服務中的一項,讓您知道您的地址是什麼:

$ curl ip.alt.io
123.123.123.123

Windows有等效的選項,例如安裝 捲曲。請注意,curl本身並不是在確定您的IP地址,它只是向外部網站詢問您看起來來自哪個IP地址。

但是,最好的方法是使用動態DNS(DDNS)服務 no-ip.com。在這裡,您可以將您的外部IP地址動態註冊到DNS中。因此,您可以使用域地址,而不是使用IP地址 myhomeip.no-ip.com

大多數國內路由器支持在外部地址更改時自動更新DDNS,如果沒有,則有Windows和Linux客戶端(ddclient)。


17
2018-04-03 05:16



實際上,如果您使用的是支持UPnP的路由器並且沒有像雙NAT這樣的故障,Windows會執行此操作。 - David Schwartz
您還可以1.)登錄路由器查找外部IP; 2.) 谷歌“IP”; 3.)以及 whatismyip自動化鏈接, 您可以使用 域工具的API 這提供了很多其他信息。 - Lèse majesté
@DavidSchwartz你在哪裡可以在Windows中查看? - Paul
@Paul:你需要編寫一個程序來做或者找到一個。這些功能是其中的一部分 UPnP API。基本上,它要求路由器。 - David Schwartz


一個谷歌 搜索 我的IP地址是什麼 效果很好。

您的公共IP地址是##。###。###。178

您還可以獲得有關您的網絡的一些信息,以便您了解正在發生的事情。使用類似的工具 netstat的跟踪路由,ssh或 遠程登錄 你可以弄清楚你是如何進入互聯網的傀儡網絡的。

有公共和私人IP地址。如果您知道哪個是私有IP地址範圍,那麼您可以猜測您在外部網絡上使用的IP地址。立刻 一個 traceroute 它使用在公共網絡上移動的私有IP地址範圍結束。

私人網絡 (維基百科)

10.0.0.0/24
  172.16.0.0/20
  192.168.0.0/16

我首先找到我的默認網關。

在Linux中:

netstat -r

在Windows中:

netstat / 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 到谷歌的DNS服務器地址,8.8.8.8,看看你採取什麼樣的路徑到外面的世界。

Linux的:

tracepath 8.8.8.8

視窗:

traceroute 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地址是##。###。###。178

這裡可能有用的是知道路由器擁有所有三個IP地址的一台設備。私有的,172.16.0.2(默認路由),以及提供的內部版本購買我們的ISP ##。###。###。178和外部的##。###。###。177我們的ISP用於連接到Internet。因此,如果我知道如何使用Telnet / ssh遠程連接到路由器,我可以使用命令行直接查詢路由器來獲取此信息。

不同的路由器和ISP有不同的管理方式。大多數家用DSL調製解調器很容易獲得ssh,因為你有密碼和登錄信息,但如果ISP已經在辦公室放置路由器,他們可能不會讓你訪問他們的路由器。


4
2018-04-03 08:53





您可以使用lynx工具獲取外部IP。

lynx --dump http://whatismyip.org


1
2018-04-03 05:14



他們還提供lite版本,只返回ip: automation.whatismyip.com/n09230945.asp - stefgosselin


您的機器不知道您的外部地址。您必須使用外部服務並獲取結果(例如,checkip.dyndns.org)。

您可以將任何命令行HTTP客戶端用作wget或curl:

$ wget -q -O - checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: 129.132.208.173</body></html>

wget可在Windows和GNU / Linux上使用


1
2018-04-03 05:17





ifconfig.me 是您可以在瀏覽器中訪問的網站,以獲取您需要的幾乎所有信息。你也可以使用 curl 在該頁面上顯示變量,以獲得該特定信息。數據以JSON格式的字符串返回,這使得腳本編寫非常簡單。有關更多示例,請查看ifconfig.me頁面的底部。

例如:

curl ifconfig.me/ip

curl ifconfig.me/all


1
2018-04-03 13:24