Jeśli twoje połączenie ma NAT, czy możesz zobaczyć swój zewnętrzny adres IP bez wysyłania wychodzącego żądania internetowego?
Każdy system operacyjny (Windows, Linux itp.) Jest w porządku.
networking
nat
ip-address
Axel Persinger
źródło
źródło
Odpowiedzi:
Jeśli twój komputer ma NAT, możesz zobaczyć zewnętrzny adres IP routera, ale potrzebujesz dostępu administracyjnego do routera.
Router zna twój zewnętrzny adres IP, więc wchodząc na stronę konfiguracji, możesz znaleźć ten adres IP. W ten sposób nie jest wymagane żadne specjalne narzędzie oprócz przeglądarki internetowej.
Inne protokoły wymagające narzędzia do uzyskiwania informacji:
Testowane przez użytkownika @dirkt, wszystkie metody działają tylko z IPv4 (z wyjątkiem ewentualnie PCP).
źródło
WANIPConn1/GetExternalIPAddress
i właśnie zwrócił prawidłowy adres.Istnieje kilka sposobów, które działają z niektórymi NAT, ale nic, co gwarantuje, że będzie działać wszędzie.
Wierzę, że uPnP, NAT-PMP i PCP (Universal Plug and Play, NAT Port Mapping Protocol i protokół kontroli portów) mają wszystkie sposoby, by zapytać zgodną bramę NAT o adres publiczny, ale nie wszystkie NAT obsługują te protokoły. Obsługa jest bardziej powszechna w routerach domowych bram niż w rozwiązaniach NAT klasy korporacyjnej lub operatorskiej.
Gdy znajdziesz się za NAT, jedynym pewnym sposobem, aby zobaczyć, na jaki publiczny adres IP, na który tłumaczy twój ruch, jest wysłanie ruchu wychodzącego do jakiegoś hosta publicznego, który to zgłosi, w sposób, w jaki NAT nie tłumaczy, co adres wydaje się, że pochodzi z twojego ruchu. Korzystanie z usługi internetowej jest jednym ze sposobów, ale możesz to również zrobić, powiedzmy, SSHing do instancji serwera w chmurze i zobacz, skąd
sshd
pochodzi twoja sesja SSH.źródło
Możesz użyć żądania DNS, które moim zdaniem nie mieści się w kategorii „żądanie internetowe”:
źródło
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Znalazłem polecenie tutaj: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…nsslookup
polecenie zawodzi dla mnie. DostajęServer: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
ponieważ nie ma go w systemie Windows. Dobra uwaga dotyczącamyaddr
Google, nie byłam tego świadoma! Myślę, żenslookup
odpowiednikiem systemu Windows byłbynslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
która wersja IP ma być używana do transportu, ale sposób, w jaki robi to OpenDNS, oznacza, że musisz. Bez tego musisz przewidzieć, która wersja IPnslookup
będzie używana do transportu i poprosić odpowiednio o A lub AAAA. Jeśli utkniesznslookup
, możesz skorzystać z usług innego usługodawcy, takiego jak Google. Jednak w odpowiedzi otrzymujesz tylko jedną wersję protokołu i nie możesz wybrać, która.nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
i to naprawdę działa. Ale jeśli mam zarówno IPv4, jak i IPv6, to nie pozwoli mi wybrać, który z nich zobaczę. Najprawdopodobniej pokaże mi adres IPv6 i najprawdopodobniej go używam, ponieważ chcę znać adres IPv4 NAT. Aby obejść ten problem, należy skorzystać z usługi, która ma nazwę tylko IPv4 i nazwę tylko IPv6, która rozwiązałaby również problem NAT64.Chciałbym dodać jeden punkt do już istniejących odpowiedzi.
Zależy to również od złożoności sieci. Możliwe, że komputer znajduje się w sieci, która ma wiele zewnętrznych adresów IP, a router gdzieś w linii wysyła ruch do Internetu na podstawie niektórych kryteriów: na przykład docelowego adresu IP lub pory dnia (może być jednym kanałem łącza zwrotnego jest tańsze w nocy lub z innych powodów).
Tak więc, aby być kompletnym, pojęcie „zewnętrznego adresu IP” może wymagać zdefiniowania punktu docelowego, do którego adres jest zewnętrzny.
W poniższym przykładzie
Router #2
można wykonać translację NAT i wysłać ruch do dowolnego łącza zwrotnego, a host odbierający może zobaczyć inny zewnętrzny adres IP dlaHost
.Lub może być tak, że określone miejsce docelowe (na przykład
host1.example.com
) zawsze prowadzi przezUplink A
, a hosthost2.example.com
zawsze prowadzi przezUplink B
. Więc twoje zewnętrzne adresy IP widziane przez tych gospodarzy będzie inny, pod warunkiem, żeUplink A
iUplink B
są różne ISP.Dlatego wysyłanie ruchu pozwoli uzyskać bardziej wiarygodne wyniki.
źródło
Możesz użyć DNS zamiast HTTP. Na przykład możesz użyć:
Spowoduje to wyświetlenie adresu emisji pojedynczej serwera DNS, którego używasz, a jeśli obsługuje EDNS, pokaże również Twój adres IP, choć może być skrócony.
Aby uzyskać pełny adres IP, możesz ominąć lokalny serwer DNS i wysłać powyższe żądanie bezpośrednio do ns {1,2,3,4} .google.com
Jeśli chcesz zobaczyć swój adres IP w określonej wersji protokołu, możesz użyć
-6
i-4
:Możesz również użyć OpenDNS, jeśli wolisz. OpenDNS nie używa do tego rekordów TXT, ale raczej rekordy A i AAAA, więc musisz określić, której wersji protokołu szukasz:
Zauważ, że jeśli Twój ruch przechodzi przez tłumaczenie protokołu, możesz uzyskać różne wyniki lub w ogóle ich nie mieć. Testowanie z komputera za NAT64 Widziałem mój adres IPv6 za pomocą powyższych poleceń, ale nie widziałem adresu IPv4 NAT64.
Ta odpowiedź jest oparta na tych źródłach 1 2 3 i trochę własnych badaniach.
źródło
Internet ogólnie odnosi się do HTTP, jeśli takie jest znaczenie twojego pytania, możesz na przykład użyć STUN ( artykuł Wikipedii ), który oznacza „Session Traversal Utilities for NAT”.
Teraz, jak zostało to zaznaczone w komentarzu, możesz mieć wiele zewnętrznych adresów IP. Ponieważ połączenia bezprzewodowe stają się coraz bardziej powszechne (rzecz 4G), nie jest niemożliwe, aby adres IP zgłoszony przez router nie był publiczny. W niektórych krajach spotkałem się nawet z tym scenariuszem połączeń światłowodowych, w którym dostawca usług internetowych przyznałby routerowi lokalnemu prywatny adres IP, który później zostałby przetłumaczony na publiczny adres IP w momencie opuszczania sieci.
Więc jeśli twoje pytanie brzmi „czy mogę znaleźć mój publiczny adres IP bez wysyłania pakietów z mojej sieci”, MOŻESZ w swoim kontekście, ale nie ma 100% dowodu na rozwiązanie.
źródło