Ist es bei einer NAT-Verbindung möglich, Ihre externe IP-Adresse anzuzeigen, ohne eine ausgehende Webanfrage zu stellen?
Jedes Betriebssystem (Windows, Linux usw.) ist in Ordnung.
Ist es bei einer NAT-Verbindung möglich, Ihre externe IP-Adresse anzuzeigen, ohne eine ausgehende Webanfrage zu stellen?
Jedes Betriebssystem (Windows, Linux usw.) ist in Ordnung.
Antworten:
Befindet sich Ihr Computer hinter NAT, können Sie möglicherweise die externe IP-Adresse Ihres Routers anzeigen, benötigen jedoch Administratorzugriff auf den Router.
Der Router kennt Ihre externe IP-Adresse. Durch Aufrufen der Konfigurationsseite können Sie diese IP-Adresse ermitteln. Auf diese Weise ist kein spezielles Tool außer einem Webbrowser erforderlich.
Andere Protokolle, für die ein Tool zum Abrufen der Informationen erforderlich ist:
Wie vom Benutzer @dirkt getestet, funktionieren alle Methoden nur mit IPv4 (außer möglicherweise für PCP).
WANIPConn1/GetExternalIPAddress
und er hat gerade erfolgreich die richtige Adresse zurückgegeben.
Es gibt einige Möglichkeiten, die mit einigen NATs funktionieren, aber keine, die garantiert überall funktionieren.
Ich glaube, dass uPnP, NAT-PMP und PCP (Universal Plug & Play, NAT Port Mapping Protocol und Port Control Protocol) alle Möglichkeiten haben, ein kompatibles NAT-Gateway nach der öffentlichen Adresse zu fragen, aber nicht alle NATs unterstützen diese Protokolle. Unterstützung ist bei Heim-Gateway-Routern üblicher als bei NAT-Lösungen für Unternehmen oder Netzbetreiber.
Wenn Sie sich hinter einem NAT befinden, können Sie nur dann sicher feststellen, in welche öffentliche IP-Adresse der Datenverkehr übersetzt wird, wenn Sie ausgehenden Datenverkehr an einen öffentlichen Host senden, der auf eine Weise zurückmeldet, dass das NAT nicht übersetzt, was Adresse, von der Ihr Verkehr zu kommen schien. Die Verwendung eines webbasierten Dienstes ist eine Möglichkeit. Sie können dies jedoch auch tun, indem sshd
Sie beispielsweise eine SSH- Verbindung zu einer Cloud-Server-Instanz herstellen und feststellen, woher Ihre SSH-Sitzung stammt.
Sie können eine DNS-Anfrage verwenden, von der ich glaube, dass sie nicht unter die Kategorie "Webanfrage" fällt:
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Ich habe den Befehl hier gefunden: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
Befehl schlägt für mich fehl. Ich bekomme Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
da es nicht unter Windows läuft. Ein guter Punkt myaddr
für Google, das war mir nicht bewusst! Ich denke, das Windows- nslookup
Äquivalent wärenslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
welche IP-Version für den Transport verwendet werden soll, aber wie OpenDNS dies tut, müssen Sie dies tun. Andernfalls müssten Sie vorhersagen, welche IP-Version nslookup
für den Transport verwendet wird, und entsprechend nach A oder AAAA fragen. Wenn Sie nicht weiterkommen nslookup
, können Sie einen anderen Anbieter wie Google verwenden. Sie erhalten jedoch nur eine Protokollversion in der Antwort und können nicht auswählen, welche.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
und das funktioniert in der Tat. Aber wenn ich sowohl IPv4 als auch IPv6 habe, kann ich nicht auswählen, welche von ihnen ich sehen möchte. Höchstwahrscheinlich wird mir die IPv6-Adresse angezeigt, und höchstwahrscheinlich verwende ich sie, weil ich die IPv4-Adresse eines NAT wissen möchte. Um dies zu umgehen, müsste ein Dienst verwendet werden, der einen Nur-IPv4-Namen und einen Nur-IPv6-Namen hat und der auch das Problem von NAT64 behebt.
Ich möchte einen Punkt zu bereits vorhandenen Antworten hinzufügen.
Dies hängt auch von der Netzwerkkomplexität ab. Es ist möglich, dass sich Ihr Computer in einem Netzwerk mit mehreren externen IP-Adressen befindet und der Router den Datenverkehr anhand einiger Kriterien an das Internet sendet: z. B. Ziel-IP-Adresse oder Uhrzeit (möglicherweise) Ein Uplink-Kanal ist nachts oder aus anderen Gründen günstiger.
Um vollständig zu sein, muss für den Begriff "externe IP-Adresse" möglicherweise ein Zielpunkt definiert werden, zu dem Ihre Adresse extern ist.
Im folgenden Beispiel Router #2
könnte NAT ausgeführt und Datenverkehr an beide Uplinks gesendet werden, und der empfangende Host könnte andere externe IP-Adressen für die anzeigen Host
.
Oder es kann sein, dass ein bestimmtes Ziel (zum Beispiel host1.example.com
) immer durch die Route Uplink A
führt und der Host host2.example.com
immer über die Route führt Uplink B
. Also, Ihre externe IP - Adressen von diesen Hosts gesehen wird anders sein, vorausgesetzt, Uplink A
und Uplink B
sind verschiedene ISPs.
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Wenn Sie also Datenverkehr senden, erhalten Sie zuverlässigere Ergebnisse.
Sie können DNS anstelle von HTTP verwenden. Zum Beispiel können Sie verwenden:
dig +short TXT o-o.myaddr.l.google.com
Hier wird die Unicast-Adresse des von Ihnen verwendeten DNS-Servers angezeigt. Wenn EDNS unterstützt wird, wird auch Ihre IP-Adresse angezeigt, auch wenn diese möglicherweise abgeschnitten ist.
Um Ihre vollständige IP-Adresse zu erhalten, können Sie Ihren lokalen DNS-Server umgehen und die oben aufgeführte Anfrage direkt an ns {1,2,3,4} .google.com senden
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Wenn Sie möchten , dass Ihre IP - Adresse in einer bestimmten Protokoll Version sehen können Sie verwenden , -6
und -4
:
dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com
Sie können auch OpenDNS verwenden, wenn Sie dies vorziehen. OpenDNS verwendet hierfür keine TXT-Einträge, sondern A- und AAAA-Einträge. Sie müssen also angeben, nach welcher Protokollversion Sie suchen:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
Beachten Sie, dass bei einer Protokollübersetzung Ihres Datenverkehrs möglicherweise andere oder gar keine Ergebnisse erzielt werden. Testen von einem Computer hinter NAT64 Ich konnte meine IPv6-Adresse mit den obigen Befehlen sehen, aber nicht die IPv4-Adresse des NAT64.
Diese Antwort basiert auf diesen Quellen 1 2 3 und ein bisschen meiner eigenen Forschung.
Web bezieht sich im Allgemeinen auf HTTP. Wenn dies die Bedeutung Ihrer Frage ist, können Sie beispielsweise STUN ( Wikipedia Article ) verwenden, das für "Session Traversal Utilities for NAT" steht.
Jetzt, da es in einem Kommentar hervorgehoben wurde, können Sie mehrere externe IPs haben. Auch wenn drahtlose Verbindungen immer häufiger werden (Ding 4G), ist es nicht unmöglich, dass die von Ihrem Router gemeldete IP-Adresse nicht öffentlich ist. Ich habe dieses Szenario sogar bei Glasfaserverbindungen in einigen Ländern erlebt, in denen der Internetdienstanbieter dem lokalen Router eine private IP-Adresse gab, die beim Verlassen des Netzwerks 1: 1 in eine öffentliche IP-Adresse umgewandelt wurde.
Wenn Sie also die Frage haben, ob ich meine öffentliche IP-Adresse finden kann, ohne Pakete aus meinem Netzwerk zu senden, können Sie dies möglicherweise in Ihrem Kontext tun, aber es gibt keine 100% ige Beweislösung.