Czy mogę uzyskać publiczny adres WAN w wierszu polecenia? Jestem za routerem (sieć LAN), z dynamicznym adresem IP przypisanym przez mojego dostawcę usług internetowych.
Widziałem rozwiązania wykorzystujące zewnętrzną usługę internetową (np. ifconfig.me
), Ale chcę wiedzieć, czy mogę to zrobić bez usługi zewnętrznej.
command-line
internet
ip
dynamic-ip
użytkownik61954
źródło
źródło
Odpowiedzi:
Zakładając, że system ma 2 urządzeń Ethernet,
eth0
aeth1
ieth0
jest podłączony do sieci LAN, powiedzmy IP 192.168.1.X aeth1
urządzenie jest podłączone do ISP (WAN) masz zamiar chcesz użyć następującegoifconfig
polecenia, aby otrzymać swój adres IP za strona WAN.UWAGA: Pierwsze 2 sposoby zakładają, że uruchamiasz je na komputerze, który ma 2 urządzenia Ethernet i że jeden z nich jest podłączony do twojego ISP (modem kablowy i / lub modem DSL). W tym scenariuszu urządzenie Ethernet (eth1) zostanie skonfigurowane z Twoim adresem IP w Internecie (WAN IP).
1. sposób
Możesz także użyć
ip
polecenia.2. sposób
Jeśli chcesz dowiedzieć się tego z systemu, który znajduje się tylko w sieci LAN, możesz skonfigurować klucz SSH bez hasła i dodać go do konta na komputerze LAN, aby mógł on zdalnie uzyskiwać dostęp do systemu za pomocą dostępu WAN.
3. sposób
Jeśli nie możesz ssh połączyć się z urządzeniem, które ma dostęp do sieci WAN i używasz domowego routera / przełącznika, takiego jak Linksys lub Netgear. Możesz być w stanie uzyskać adres IP z tego urządzenia za pośrednictwem strony statusu HTTP. Robiłem to również w przeszłości, coś podobnego do tego, co opisano w tym wpisie na forum whatismyip.com .
UWAGA: To podejście jest wysoce zależne od posiadanego routera / przełącznika, czy jest to marka Linksys, Netgear itp. Każda z nich będzie miała swoją własną unikalną stronę z WAN IP.
4. sposób
Wysłanie zapytania do zewnętrznej strony internetowej, która zgłosi Twój adres IP WAN.
UWAGA: Zdaję sobie sprawę, że pierwotne pytanie wspomniało, że szukali alternatyw dla tego podejścia, ale umieszczam je tutaj, aby ta odpowiedź obejmowała wszystkie podstawy.
Dodatkowe informacje są dostępne tutaj: HOWTO: Sprawdź zewnętrzny adres IP z wiersza poleceń
źródło
eth*
urządzeń nie będzie miało adresu WAN IP. O ile jego router nie obsługuje ssh, ma on dostęp, a jeśliconconfig, to nie zadziała. Nie oddawanie głosu, ale każdy, kto próbuje to zrobić, jest tego świadomy.Jeśli twój system ma zainstalowany program curl (większość z nich), możesz użyć
źródło
Kiedy jesteś za routerem NAT z UPNP, możesz użyć miniupnpc do wykrycia adresu IP ip:
Możesz użyć go w skrypcie np. Dla crona, takiego jak:
źródło
Najprawdopodobniej router musi zapewnić sposób na uzyskanie zewnętrznego adresu IP, jeśli żadna usługa zewnętrzna nie powinna lub nie może być użyta (jak już wskazano w innych odpowiedziach). W przypadku usług zewnętrznych w większości pozostałych odpowiedzi używana jest usługa internetowa. Ta odpowiedź w Unix SE sugeruje użycie DNS zamiast tego.
Na przykład, przy użyciu
dig
z OpenDNS jak selsynu:źródło
curl ident.me
z konkretnej usługi (wmyip.opendns,com
specjalnym przypadku serwera DNS)Pobierz informacje z routera przez ssh lub curl.
Używam curl, aby prosić dyndns o moje publiczne IP, ale takie polecenie wydaje się nie dotyczy ciebie, prawda?
curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'
źródło
Niestety nie ma sposobu na wykrycie mechanizmów takich jak NAT, które nie wymagają kontaktu z usługą zdalną. NAT z natury jest całkowicie przejrzysty dla użytkownika, oprócz zepsutych usług, i nie ma standardowego protokołu dla odnajdywania NAT.
Ale jeśli chodzi o usługi zewnętrzne, muszę zasugerować szybką i prostą, którą napisałem, ident.me, której można użyć zarówno dla IPv4, jak i IPv6; dla najprostszej formy, której można użyć,
curl ident.me
a pełne API jest udokumentowane na stronie http://api.ident.me/źródło
Jeśli router obsługuje protokół NAT PMP (Port Mapping Protocol), możliwe jest odzyskanie publicznego adresu IP za pomocą natpmp.
Istnieje interfejs wiersza poleceń biblioteki linuksowej natpmp o nazwie natpmpc. W Ubuntu znajduje się w pakiecie natpmp-utils . Mój router nie obsługuje natpmp, więc nie jestem pewien, czy narzędzie natpmpc zwróci twój publiczny adres IP.
źródło
Polecenie linux, którego
ifconfig
szukasz, zakłada, że masz bezpośrednie połączenie z Internetem.Jeśli nie i dostęp przez proxy lub specjalny routing, najłatwiejszym sposobem (jak wskazują inni) jest zalogowanie się / dostęp do innego hosta i sprawdzenie go stamtąd.
Możesz również omówić to pytanie ze swoim przyjaznym administratorem systemów sąsiedzkich.
źródło
ifconfig
jest przestarzałe.ifconfig
najnowszą datę wydania. Teraz spójrz naìproute2
najnowszą wersję. Jeśli chodzi o źródło, zobacz lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHYsed, jeśli trzeba
źródło
curl icanhazip.com