Welchen * nix-basierten Befehl kann ich verwenden, um meine externe IP zu finden?

Antworten:

29
curl http://myip.dnsomatic.com
Can Berk Güder
quelle
Das ist viel weniger Arbeit als mein Beispiel :)
Alex
Wunderbare Einfachheit.
Drew Stephens
8
dig + short myip.opendns.com

Dies funktioniert nur, wenn Sie OpenDNS als DNS-Server verwenden.

Wenn Sie dies nicht tun, sollte eine der folgenden Möglichkeiten funktionieren:

dig + short myip.opendns.com @ 208.67.222.222
dig + short myip.opendns.com @ 208.67.220.220
dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220
Brad Gilbert
quelle
1
Funktioniert nicht auf meinem MacOS 10.5, Ubuntu 8.04 oder Ubuntu 9.04.
Drew Stephens
Interessant, dass es auf meinem Ubuntu 8.10 funktioniert.
Brad Gilbert
Es ist wahrscheinlich, weil ich opendns benutze.
Brad Gilbert
+1 für die Verwendung von DNS zum Ermitteln einer IP (anstelle von http). Sie können den DNS-Server auch mit seinem Namen angeben, z. B. @resolver1.opendns.com(zur besseren Lesbarkeit)
jfs
2
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'
Jason Down
quelle
2

Dazu muss man die Server von OpenDNS verwenden ... Sie können einen bestimmten DNS-Server mit dig wie folgt abfragen:

dig + short myip.opendns.com @ 208.67.222.222
fuero
quelle
2

Sie können curl verwenden, um die Seite von so etwas wie whatismyip abzurufen, und dann die Teile herausholen. Ich habe whatismyipaddress.com in diesem Beispiel verwendet ... offensichtlich unterscheiden sich die Felder bei verschiedenen Diensten.

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
Alex
quelle
1

Ich führe einfach eine Traceroute zu einem beliebigen Ort im Internet aus und suche nach dem Sprung aus unserem lokalen Netzwerk.

Vielleicht gibt es einen besseren Weg?

Hühnchen-Keks
quelle
1

der einfachste weg ist: curl ifconfig.me

Sina Loghavi
quelle
0

Mit dem Befehl ifconfig können Sie alle Schnittstellen und die zugehörigen IP-Adressen auflisten.

Wenn Sie also wissen, dass Ihre Internetschnittstelle ppp0 ist, können Sie ausführen

$ ifconfig ppp0
ppp0 Link encap: Punkt-zu-Punkt-Protokoll
          inet addr: XXXX.X PtP: YYYY Mask: 255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 Metrisch: 1
          Empfangspakete: 198986 Fehler: 0 verworfen: 0 Überläufe: 0 Rahmen: 0
          TX-Pakete: 122929 Fehler: 0 verworfen: 0 Überläufe: 0 Träger: 0
          Kollisionen: 0 txqueuelen: 3
          RX-Bytes: 134195571 (127,9 MiB) TX-Bytes: 17101701 (16,3 MiB)

XXXX ist Ihre IP-Adresse. JJJJ ist die IP-Adresse des nächsten Hops.

Sie können dann die Ausgabe von ifconfig mit grep / awk / sed / cut / perl / whatever nachbearbeiten, um nur die IP zu extrahieren.

Wenn Sie die iproute-Tools installiert haben, können Sie auch den Befehl ip verwenden. z.B

$ ip addr list ppp0
21842: ppp0: mtu 1444 qdisc htb state UNBEKANNT qlen 3
    link / ppp
    inet XXXX peer JJJJ / 32 scope global ppp0

Das ist wahrscheinlich einfacher zu lesen und sicher einfacher zu analysieren:

$ ip addr list ppp0 | awk '/ inet / {print $ 2}'
XXXX
cas
quelle
- Es Chance ist , dass jede IP in ifconfig nicht echten Internet - IP (im Fall von Binat) übereinstimmen - In FreeBSD gibt es kein iproute2 Paket, so ip Befehl nicht anwendbar ist
SaveTheRbtz
Es stimmt, ich verwende kein NAT, daher ist mir das nie in den Sinn gekommen. Es schien mir einfach "falsch", einen externen Dienst für Informationen zu verwenden, über die Sie Ihr eigenes System abfragen können. Selbst mit NAT würde ich es vorziehen, herauszufinden, wie der Router, der NAT ausführt (möglicherweise über eine SNMP-Abfrage), abgefragt werden soll, als sich auf einen externen Dienst zu verlassen, der verfügbar sein kann oder nicht, wenn ich ihn benötige.
cas
@Craig, Dein Ansatz ist in Ordnung. Es ist jedoch keine externe IP, es sei denn, Sie können sie über diesen Wert von außen erreichen. Sie tun müssen für diese Antwort auf einen externen Punkt verlassen. Die Idee ist, einen zuverlässigen externen Punkt für die Abfrage zu finden (mindestens mehr als Ihren Umfangspunkt). OpenDNS ist ein guter Punkt.
Nik
@nik: Der einzige wahrscheinliche Fall, in dem die IP Ihres Grenzrouters nicht die externe IP ist, liegt vor, wenn Sie sich hinter mehreren NAT-Ebenen befinden. In diesem Fall besteht die richtige Lösung darin, so schnell wie möglich auf einen nicht gehirngeschädigten Dienst zu wechseln . Das Problem beim Abrufen einer URL, um Ihre IP herauszufinden, ist, dass nur die IP des Hosts angezeigt wird, der sie tatsächlich abruft. Dies kann ein Proxy sein, der Via-Header entfernt.
cas