Jakie wieloplatformowe narzędzie wiersza polecenia pozwala mi uzyskać mój zewnętrzny adres IP?

4

Jak uzyskać zewnętrzny adres IP z wiersza polecenia systemu Windows i Linux?
W systemie Windows ipconfig pokazuje wewnętrzny adres IP sieci, ale nie pokazuje zewnętrznego.

użytkownik217631
źródło
Czy jesteś w środowisku zarządzanym, takim jak szkoła lub biuro?
cutrightjm
Nie powinni też znać zewnętrznego adresu sieciowego, brama z twojej sieci będzie o tym wiedzieć. Możesz uzyskać zewnętrzny adres IP, sprawdzając bramę, ale wszystko zależy od tego, jak została skonfigurowana.
Ardesco,

Odpowiedzi:

17

Ani Windows, ani Linux nie są świadomi swojego zewnętrznego adresu IP, więc nie mogą natywnie powiadomić Cię o tym. Musisz więc skorzystać z usługi zewnętrznej, aby dowiedzieć się, jaki jest adres IP.

W curlsystemie Linux możesz korzystać z jednej z wielu usług, które informują o tym, jaki jest twój adres:

$ curl ip.alt.io
123.123.123.123

Istnieją równoważne opcje dla systemu Windows, takie jak instalacja curl . Pamiętaj, że sam curl nie determinuje twojego adresu IP, po prostu pyta zewnętrzną stronę internetową, z którego adresu IP wydaje się pochodzić.

Jednak najlepszym sposobem na to jest skorzystanie z usługi dynamicznego DNS (DDNS), takiej jak no-ip.com . Tutaj możesz dynamicznie zarejestrować swój zewnętrzny adres IP w DNS. Zamiast używać adresu IP, możesz użyć adresu domeny, takiego jak myhomeip.no-ip.com.

Większość routerów krajowych obsługuje automatyczną aktualizację DDNS po zmianie adresu zewnętrznego, a jeśli nie, istnieją klienci dla systemu Windows i Linux (ddclient).

Paweł
źródło
1
W rzeczywistości system Windows działa, jeśli używasz routera obsługującego UPnP i nie masz czegoś zepsutego, takiego jak podwójna translacja NAT.
David Schwartz
2
Możesz również 1.) sprawdzić swój zewnętrzny adres IP, logując się do routera; 2.) Google „IP” ; 3.), a także link automatyzacji whatismyip , możesz użyć interfejsu API narzędzi domeny, który daje wiele innych informacji.
Lèse majesté
@DavidSchwartz Gdzie możesz to zobaczyć w systemie Windows?
Paul
1
@Paul: Musisz napisać program, aby to zrobić lub znaleźć taki, który to robi. Funkcje są częścią API UPnP . Zasadniczo pyta router.
David Schwartz
4

Wyszukiwarka Google „ Jaki jest mój adres IP” działa całkiem dobrze.

Twój publiczny adres IP to ##. ###. ###. 178

Możesz również uzyskać informacje na temat swojej sieci, które pomogą Ci zorientować się, co się dzieje. Korzystając z narzędzi takich jak netstat , traceroute , ssh lub telnet , możesz dowiedzieć się, jak się rozwijasz w sieci uczniowskiej w Internecie.

Istnieje publiczny i prywatny adres IP. Jeśli wiesz, jaki jest prywatny zakres adresów IP, możesz zgadnąć, którego adresu IP używasz w sieci zewnętrznej. Gdy tylko traceroutekończy się korzystanie z prywatnych zakresów adresów IP, przenosi się do sieci publicznej.

Sieć prywatna (Wikipedia)

10.0.0.0/24
172.16.0.0/20
192.168.0.0/16

Zacznę od znalezienia mojej domyślnej bramy.

W systemie Linux:

netstat -r

W systemie Windows:

netstat / r

Co powinno ci coś pokazać

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

Zwróć uwagę na domyślną wartość u dołu, która powinna być twoim ostatnim krokiem przed wyjściem do świata publicznego.

Teraz traceroutedo adresu serwera DNS Google, 8.8.8.8, aby zobaczyć, jaką ścieżkę podążasz do świata zewnętrznego.

Linux:

tracepath 8.8.8.8

Windows:

traceroute 8.8.8.8

Co powinno dać ci coś takiego

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

Krok po mojej domyślnej trasie znalazł się w naszej sieci zewnętrznej.

Wyszukiwarka Google różniła się od tej, tracerouteale tylko o jedną cyfrę. Wynika to z faktu, że aby móc się z nimi komunikować, potrzebny jest adres IP z tego samego zakresu co dostawca usług internetowych. Nasz router ma więc adres IP jeden w dół od naszego zewnętrznego adresu IP, który jest używany przez naszego dostawcę usług internetowych do kierowania ruchu do reszty świata.

Twój publiczny adres IP to ##. ###. ###. 178

Pomocne może być tutaj to, że jedno urządzenie, router, ma wszystkie trzy adresy IP. Prywatny, 172.16.0.2 (trasa domyślna) i wewnętrzny pod warunkiem, kup naszego ISP ##. ###. ###. 178, a zewnętrzny ##. ###. ###. 177 naszego ISP służy do łączenia się z Internetem. Jeśli więc wiem, jak zdalnie połączyć się z routerem za pomocą usługi Telnet / ssh, mogę użyć zapytania bezpośrednio do routera, aby uzyskać te informacje za pomocą wiersza polecenia.

Różne routery i dostawcy usług internetowych mają różne sposoby zarządzania tym. Większość domowych modemów DSL jest dość łatwa do uzyskania ssh, ponieważ masz hasło i dane logowania, ale jeśli ISP umieścił router w twoim biurze, prawdopodobnie nie dadzą ci dostępu do swojego routera.

nelaaro
źródło
1

Twoje urządzenie nie zna twojego zewnętrznego adresu. Musisz skorzystać z usługi zewnętrznej i pobrać wyniki (np. Checkip.dyndns.org).

Możesz używać dowolnego klienta HTTP z linii poleceń jako wget lub 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 jest dostępny zarówno w systemie Windows, jak i GNU / Linux

Matteo
źródło
1

ifconfig.me to witryna, którą można odwiedzić w przeglądarce, aby uzyskać prawie wszystkie potrzebne informacje. Możesz także użyć curltej strony z pokazanymi zmiennymi, aby uzyskać tylko ten konkretny element. Dane są zwracane w postaci sformatowanego ciągu JSON, co sprawia, że ​​tworzenie skryptów jest bardzo łatwe. Więcej przykładów znajdziesz na dole strony ifconfig.me.

Na przykład:

curl ifconfig.me/ip

curl ifconfig.me/all

PenguinCoder
źródło