Jeśli sprawdzę w Google , mogę zobaczyć mój publiczny adres IP. Czy w wierszu poleceń Ubuntu jest coś, co da mi tę samą odpowiedź?
networking
kfmfe04
źródło
źródło
notify-send
.ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'
gdzie eth1 jest interesującym urządzeniem sieciowym, możesz pominąć ciąg „et1”, aby pokazać wszystkie IP wszystkich adapterów. Zamiast tego\2
możesz napisać,\1 \2
aby pokazać nazwy każdego adaptera.Odpowiedzi:
Jeśli nie jesteś za routerem, możesz to sprawdzić za pomocą
ifconfig
.Jeśli jesteś za routerem, komputer nie będzie wiedział o publicznym adresie IP, ponieważ router dokonuje translacji adresów sieciowych. Możesz zapytać witrynę internetową, z czego korzysta Twój publiczny adres IP
curl
lubwget
wyodrębnić z niej potrzebne informacje:lub krócej
źródło
curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
Inne możliwości są wymienione tutaj: go2linux.org/what-is-my-public-ip-address-with-linuxAby 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ś zaNAT
. 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-
Dzięki uprzejmości :
Możesz także użyć
lynx
(przeglądarki) lubcurl
zamiastwget
niewielkich odmian powyższego polecenia, aby znaleźć swój zewnętrzny adres IP.Za pomocą
curl
znaleźć ip:Aby uzyskać lepiej sformatowane dane wyjściowe, użyj:
Szybsza (prawdopodobnie najszybsza) metoda
dig
z użyciemOpenDNS
jako resolvera:Skopiowano z: https://unix.stackexchange.com/a/81699/14497
Znajdowanie zewnętrznego adresu IP bez polegania na usługach zewnętrznych
Wpisz następujące dane w swoim terminalu:
W powyższym przykładzie, należy wymienić
<interface_name>
z nazwy swojego rzeczywistego interfejsu, np:eth0
,eth1
,pp0
, itd ...Przykładowe użycie:
Wpisz następujące dane w swoim terminalu (pobiera nazwę i adres IP każdego interfejsu sieciowego w systemie):
Przykładowe użycie:
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 doifconfig
zastosowań bazowych, dzięki czemu zawsze daje angielski wynik, niezależnie od ustawień regionalnych.źródło
sudo apt-get install wget
-w
opcji curl zamiast echa :)curl -w '\n' ident.me
Moim ulubionym zawsze było:
prosty, łatwy do pisania.
Najpierw musisz zainstalować curl;)
Jeśli ifconfig.me nie działa, spróbuj icanhazip.com i lub ipecho.net
lub
źródło
ifconfig.me
wydaje się nieco wolniejszy niżipecho.net
.curl
ale maszwget
:wget -U curl -qO- ifconfig.me
icanhazip.com jest moim ulubionym.
Możesz jawnie zażądać IPv4:
Jeśli nie masz
curl
, możeszwget
zamiast tego użyć :źródło
Uważam, że wszystko jest denerwujące i powolne, więc napisałem własne. To proste i szybkie.
Jego interfejs API znajduje się na stronie http://api.ident.me/
Przykłady:
źródło
time curl http://checkip.amazonaws.com
->0.91s
vs.241s
dlaident.me
Po prostu módlmy się, aws nie spada;)Możesz użyć żądania DNS zamiast żądania HTTP, aby znaleźć swój publiczny adres IP:
Używa
resolver1.opendns.com
serwera dns do rozpoznania magicznejmyip.opendns.com
nazwy hosta na Twój adres IP.źródło
curl icanhazip.com
. Średnia dlacurl
wersji: 174ms. Średnia dla wersji tylko DNS: 9ms. ~ 19x szybciej. Zobacz także: unix.stackexchange.com/a/81699/8383curl
sam był wolniejszy niżdig
. Nawet gdyby zostały przepisane tak, aby były jak najbardziej podobne,curl
nadal byłyby wolniejsze; używa HTTP (w tym DNS) idig
używa tylko DNS.Amazon AWS
Przykładowe dane wyjściowe:
Lubię to ponieważ:
źródło
Ten, którego używam to:
Tak, możesz mieć ip :-)
źródło
curl icanhazip.com
czasamiwget
jest dostępna tylko jedna, ale czasami też niewget
jest dostępna icurl
jest twoją jedyną opcją (jak OS / X). Tak czy inaczejcurl icanhazip.com
jest prawie tak łatwe,curl ifconfig.me
ale o wiele zabawniejsze ;-)Wpisz to dokładnie, naciśnij Entertam, gdzie wskazano:
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
EnterEnter
Spowoduje to ręczne przesłanie żądania HTTP, które zwróci adres IP na dole
HTTP/1.1 200 OK reply
Przykładowe dane wyjściowe:
źródło
Kolejny szybki (względnie najszybszy)
źródło
W tym celu wymyślono STUN . Jako klient możesz wysłać zapytanie do publicznie dostępnego serwera STUN i poprosić go o zwrócenie adresu IP, który widzi. Niby niski poziom whatismyip.com, ponieważ nie używa HTTP ani inteligentnie spreparowanych serwerów DNS, ale niesamowicie szybki protokół STUN.
Za pomocą
stunclient
Jeśli
stunclient
zainstalowałeś (apt-get install stuntman-client
na debian / ubuntu), możesz po prostu zrobić:gdzie
A.B.C.D
jest adres IP twojego komputera w sieci lokalnej iW.X.Y.Z
serwery adresów IP, takie jak strony internetowe, widzą z zewnątrz (i ten, którego szukasz). Za pomocą tej opcjised
możesz zmniejszyć powyższy wynik tylko do adresu IP:Pytanie dotyczyło jednak sposobu znalezienia go za pomocą wiersza polecenia, co może wykluczyć użycie klienta STUN. Zastanawiam się więc ...
Za pomocą
bash
Prośba STUN można ręcznie, wysłany do zewnętrznego serwera STUN użyciu
netcat
i być przetwarzane po użyciudd
,hexdump
ised
tak:Echo definiuje binarne żądanie STUN (0x0001 oznacza żądanie wiązania) o długości 8 (0x0008) z plikiem cookie 0xc00cee i niektórymi wklejonymi treściami z wireshark. Tylko cztery bajty reprezentujące zewnętrzny adres IP są pobierane z odpowiedzi, czyszczone i drukowane.
Działa, ale nie jest zalecany do użytku produkcyjnego :-)
PS Wiele serwerów STUN jest dostępnych, ponieważ jest to podstawowa technologia SIP i WebRTC. Używanie jednego z Mozilli powinno być bezpieczne z punktu widzenia prywatności, ale możesz także użyć innego: listy serwerów STUN
źródło
Mam na to głupią usługę przez telnet. Coś takiego:
Możesz go używać.
źródło
Możesz przeczytać stronę internetową za pomocą tylko bash, bez
curl
,wget
:źródło
checkip.amazonaws.com
jest dla mnie najszybszeDla tych z nas, którzy mają dostęp do logowania do naszych routerów, użycie skryptu do zapytania routera, jaki jest jego adres IP WAN, jest najbardziej wydajnym sposobem na określenie zewnętrznego adresu IP. Na przykład poniższy skrypt python wypisuje zewnętrzny adres IP mojego routera Medialink MWN-WAPR300N:
Pamiętaj, że nie jest to zbyt bezpieczne (jak w przypadku zwykłych danych uwierzytelniających i logowania do większości routerów), a na pewno nie jest przenośne (należy zmienić dla każdego routera). Jest to jednak bardzo szybkie i całkowicie rozsądne rozwiązanie w fizycznie bezpiecznej sieci domowej.
Aby dostosować skrypt dla innego routera, zalecamy użycie dodatku tamperdata w Firefoksie, aby ustalić, jakie żądania HTTP należy wykonać.
źródło
router = subprocess.check_output(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
.Otrzymają one lokalne adresy IP:
lub w przypadku krótszych wyników:
również
i prawdopodobnie:
To powinno uzyskać zewnętrzny adres IP
Uwaga: Jeśli nie masz nic przeciwko instalacji
curl
, to również:źródło
ifconfig | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*addr: *([^ ]+).*/\1,\2/p}'
wydrukuje lokalne interfejsy i odpowiadające im adresy IP V4ifconfig | sed -nre '/^[^ ]+/{N;N;s/^([^ ]+).*addr: *([^ ]+).*addr: *([^ ]+).*/\1,\2,\3/p}'
- adresy IP v4 i v6.Wiele routerów domowych może być zapytanych przez UPnP:
Następnie grep adres IP z odpowiedzi.
źródło
Jeśli używasz DD-WRT, to działa dla mnie:
lub
Gdzie 192.168.1.1 to adres IP bramy / routera LAN routera DD-WRT.
Składnik -s oznacza cichy (tzn. Nie pokazuje informacji o postępie zwijania).
źródło
Jeśli zainstalowałeś rysia w systemie Ubuntu
źródło
curl bot.whatismyipaddress.com
też działa.użyj
ip
!następnie poszukaj odpowiedniego adaptera (nie
lo
, i zwykleeth0
) i zlokalizuj adres IP w pobliżuinet
.źródło
Może jestem trochę spóźniony, ale inxi może to zrobić dość łatwo.
zainstalować
inxi
Następnie uruchom następujące polecenie
Przykład z moimi informacjami zablokowanymi przy użyciu
z
opcji kopiowania i wklejania do takich witryn:Gdzie jest napisane,
<filter>
gdzie pojawi się twój WAN IP, IPv4, adres MAC itpźródło
Wystarczy wydać polecenie traceroute dla dowolnej witryny lub usługi.
Linia 2 zawsze wydaje się moim publicznym adresem IP po przejściu przez bramę routera.
Więc wykonaj polecenie bash.
A wynik ...
Nie sądzę, aby poleganie na skryptach PHP, a ten rodzaj jest dobrą praktyką.
źródło
Polecenie bez zależności, z wyjątkiem 8.8.8.8 będącego GOogle DNS:
źródło