Aby znaleźć zewnętrzny adres IP, możesz użyć zewnętrznych usług internetowych lub metod systemowych. Łatwiej jest skorzystać z usługi zewnętrznej, również ifconfig
rozwiązania oparte na systemie będą działać w twoim systemie tylko wtedy, gdy nie jesteś za NAT
. te dwie metody zostały szczegółowo omówione poniżej.
Znajdowanie zewnętrznego adresu IP za pomocą usług zewnętrznych
Najprostszym sposobem jest skorzystanie z usługi zewnętrznej za pomocą przeglądarki wiersza polecenia lub narzędzia do pobierania. Ponieważ wget
jest domyślnie dostępny w Ubuntu, możemy z niego korzystać.
Aby znaleźć swój adres IP, użyj-
$ wget -qO- https://ipecho.net/plain ; echo
Dzięki uprzejmości :
Możesz także użyć lynx
(przeglądarki) lub curl
zamiast wget
niewielkich odmian powyższego polecenia, aby znaleźć swój zewnętrzny adres IP.
Za pomocą curl
znaleźć ip:
$ curl https://ipecho.net/plain
Aby uzyskać lepiej sformatowane dane wyjściowe, użyj:
$ curl https://ipecho.net/plain ; echo
Szybsza (prawdopodobnie najszybsza) metoda dig
z użyciem OpenDNS
jako resolvera:
Pozostałe odpowiedzi tutaj przechodzą przez HTTP na zdalny serwer. Niektóre z nich wymagają analizy wyników lub polegają na nagłówku User-Agent, aby serwer odpowiedział zwykłym tekstem. Zmieniają się również dość często (zejdź na dół, zmień nazwę, umieść reklamy, mogą zmienić format wyjściowy itp.).
- Protokół odpowiedzi DNS jest ustandaryzowany (format pozostanie kompatybilny).
- Historycznie usługi DNS (OpenDNS, Google Publiczny DNS, ...) mają tendencję do przetrwania znacznie dłużej i są bardziej stabilne, skalowalne i ogólnie pod opieką niż jakakolwiek nowa, popularna dziś usługa HTTP whatismyip.com.
- (dla tych maniaków, którym zależy na mikrooptymalizacji), ta metoda powinna być z natury szybsza (czy to tylko o kilka mikro sekund).
Używanie dig z OpenDNS jako resolverem:
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Skopiowano z: https://unix.stackexchange.com/a/81699/14497
Znajdowanie zewnętrznego adresu IP bez polegania na usługach zewnętrznych
- Jeśli znasz nazwę swojego interfejsu sieciowego
Wpisz następujące dane w swoim terminalu:
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
W powyższym przykładzie, należy wymienić <interface_name>
z nazwy swojego rzeczywistego interfejsu, np: eth0
, eth1
, pp0
, itd ...
Przykładowe użycie:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Jeśli nie znasz nazwy interfejsu sieciowego
Wpisz następujące dane w swoim terminalu (pobiera nazwę i adres IP każdego interfejsu sieciowego w systemie):
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
Przykładowe użycie:
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
NB: Wyniki są orientacyjne i nierzeczywiste.
Dzięki uprzejmości: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
AKTUALIZACJA
LANG=c
został dodany do ifconfig
zastosowań bazowych, dzięki czemu zawsze daje angielski wynik, niezależnie od ustawień regionalnych.