it-swarm.com.de

Befehl zur Ermittlung meiner öffentlichen IP?

Wenn ich mit google nachschaue, kann ich meine öffentliche IP sehen. Gibt es etwas auf der Ubuntu-Kommandozeile, das mir die gleiche Antwort gibt?

628
kfmfe04

Wenn Sie sich nicht hinter einem Router befinden, können Sie dies mit ifconfig herausfinden.

Wenn Sie sich hinter einem Router befinden, kennt Ihr Computer die öffentliche IP-Adresse nicht, da der Router eine Netzwerkadressumsetzung durchführt. Sie könnten auf einer Website nachfragen, wie Ihre öffentliche IP-Adresse curl oder wget lautet, und die benötigten Informationen daraus extrahieren:

curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

oder kürzer

curl https://ipinfo.io/ip
907
Michael K

Zum Ermitteln der externen IP können Sie entweder externe webbasierte Dienste oder systembasierte Methoden verwenden. Die einfachere Möglichkeit besteht darin, den externen Dienst zu verwenden. Die auf ifconfig basierenden Lösungen funktionieren in Ihrem System nur, wenn Sie nicht hinter NAT stehen. Die beiden Methoden wurden weiter unten ausführlich erörtert.

Suche nach externer IP mit externen Diensten

Am einfachsten ist es, einen externen Dienst über einen Befehlszeilenbrowser oder ein Download-Tool zu verwenden. Da wget in Ubuntu standardmäßig verfügbar ist, können wir das verwenden.
Um Ihre IP zu finden, verwenden Sie

$ wget -qO- https://ipecho.net/plain ; echo

Mit freundlicher Genehmigung :

Sie können auch lynx (Browser) oder curl anstelle von wget verwenden, um Ihre externe IP-Adresse zu ermitteln.

Verwenden Sie curl, um die IP zu finden:

$ curl https://ipecho.net/plain

Für eine besser formatierte Ausgabe verwenden Sie:

$ curl https://ipecho.net/plain ; echo

Eine schnellere (wahrscheinlich schnellste) Methode, die Dig mit OpenDNS als Resolver verwendet:

Die anderen Antworten hier gehen alle über HTTP an einen Remote-Server. Einige von ihnen erfordern das Parsen der Ausgabe oder verlassen sich auf den User-Agent-Header, damit der Server im Klartext antwortet. Sie ändern sich auch sehr häufig (gehen runter, ändern ihren Namen, schalten Anzeigen, ändern möglicherweise das Ausgabeformat usw.).

  1. Das DNS-Antwortprotokoll ist standardisiert (das Format bleibt kompatibel).
  2. Historisch gesehen überleben DNS-Dienste (OpenDNS, Google Public DNS, ..) in der Regel viel länger und sind stabiler, skalierbarer und im Allgemeinen gepflegter als der heutzutage beliebte neue HTTP-Dienst whatismyip.com.
  3. (für diejenigen, die sich für die Mikrooptimierung interessieren), sollte diese Methode von Natur aus schneller sein (sei es nur um ein paar Mikrosekunden).

Dig mit OpenDNS als Resolver verwenden:

$ Dig +short myip.opendns.com @resolver1.opendns.com

111.222.333.444

Kopiert von: https://unix.stackexchange.com/a/81699/14497

Externe IP finden, ohne auf externe Dienste angewiesen zu sein

  • Wenn Sie den Namen Ihrer Netzwerkschnittstelle kennen

Geben Sie Folgendes in Ihr Terminal ein:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

Ersetzen Sie oben <interface_name> durch den Namen Ihrer tatsächlichen Schnittstelle, z. B .: eth0, eth1, pp0, etc ...

Beispielverwendung:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Wenn Sie den Namen Ihrer Netzwerkschnittstelle nicht kennen

Geben Sie Folgendes in Ihr Terminal ein (dabei werden Name und IP-Adresse jeder Netzwerkschnittstelle in Ihrem System abgerufen):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'

Beispielverwendung:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444

N.B: Ausgaben sind indikativ und nicht real.

Mit freundlicher Genehmigung: https://www.if-not-true-then-false.com/2010/linux-get-ip- Adresse /

UPDATE

  1. LANG=c wurde zu ifconfig basierten Verwendungen hinzugefügt, sodass unabhängig von der Ländereinstellung immer die englische Ausgabe ausgegeben wird.
384
saji89

Mein Favorit war schon immer:

curl ifconfig.me

einfach, leicht zu tippen.

Du musst zuerst curl installieren;)

Wenn ifconfig.me nicht verfügbar ist, versuchen Sie es mit icanhazip.com und/oder ipecho.net

curl icanhazip.com

oder

curl ipecho.net
116
Panther

icanhazip.com ist mein Favorit.

curl icanhazip.com

Sie können IPv4 explizit anfordern:

curl ipv4.icanhazip.com

Wenn Sie nicht über curl verfügen, können Sie stattdessen wget verwenden:

wget -qO- icanhazip.com
60
yprez

Ich fand alles nervig und langsam, also schrieb ich mein eigenes. Es ist einfach und schnell.

Seine API ist am http://api.ident.me/

Beispiele:

curl ident.me
curl v4.ident.me
curl v6.ident.me
48
Pierre Carrier

Sie könnten eine DNS-Anfrage anstelle einer HTTP-Anfrage verwenden, um Ihre öffentliche IP herauszufinden:

$ Dig +short myip.opendns.com @resolver1.opendns.com

Es verwendet den DNS-Server resolver1.opendns.com, um den magischen Hostnamen myip.opendns.com in Ihre IP-Adresse aufzulösen.

42
jfs

Amazon AWS

curl http://checkip.amazonaws.com

Beispielausgabe:

123.123.123.123

Ich mag es weil:

  • es gibt nur die Klartext-IP zurück, sonst nichts
  • es stammt von einem bekannten Anbieter, der wahrscheinlich nicht so schnell offline gehen wird

Das, was ich benutze, ist:

wget -O - -q icanhazip.com

Ja, du kannst eine IP haben :-)

18
jflaflamme

Tippen Sie dies genau ein und drücken Sie Enter wo angegeben:

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
Host: ipecho.net Enter
BROWSER: web-kitEnter
Enter

Dadurch wird manuell eine HTTP-Anforderung gesendet, die Ihre IP-Adresse am Ende eines HTTP/1.1 200 OK reply zurückgibt.

Beispielausgabe:

$ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
Host: ipecho.net
BROWSER: web-kit

HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html

f
111.222.333.444
0
11
Liam

Ein weiteres schnelles (kann relativ gesehen das schnellste sein)

curl ipecho.net/plain
9
Mohnish

Dafür wurde STUN erfunden. Als Client können Sie eine Anfrage an einen öffentlich zugänglichen STUN-Server senden und die IP-Adresse, die er sieht, zurückgeben lassen. So ähnlich wie whatismyip.com auf niedriger Ebene, da es kein HTTP und keine intelligent gestalteten DNS-Server verwendet, sondern das blitzschnelle STUN-Protokoll.

stunclient verwenden

Wenn Sie stunclient installiert haben (apt-get install stuntman-client unter debian/ubuntu), können Sie einfach Folgendes tun:

$stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541

dabei ist A.B.C.D die IP-Adresse Ihres Computers im lokalen Netz und W.X.Y.Z die IP-Adressenserver, die Websites von außen (und die von Ihnen gesuchte) anzeigen. Mit sed können Sie die Ausgabe oben nur auf eine IP-Adresse reduzieren:

stunclient stun.services.mozilla.com |
    sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"

Ihre Frage war jedoch, wie Sie es über die Befehlszeile finden, was die Verwendung eines STUN-Clients möglicherweise ausschließt. Also frage ich mich ...

bash verwenden

Eine STUN-Anforderung kann manuell erstellt, mit netcat an einen externen STUN-Server gesendet und mit dd, hexdump und sed wie folgt nachbearbeitet werden:

$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
    nc -u -w 2 stun.services.mozilla.com 3478 |
    dd bs=1 count=4 skip=28 2>/dev/null |
    hexdump -e '1/1 "%u."' |
    sed 's/\.$/\n/'

Das Echo definiert eine binäre STUN-Anfrage (0x0001 zeigt Binding Request an) mit der Länge 8 (0x0008) mit dem Cookie 0xc00cee und einigen eingefügten Dingen von wireshark. Nur die vier Bytes, die die externe IP darstellen, werden aus der Antwort entnommen, bereinigt und gedruckt.

Arbeiten, aber nicht für den produktiven Einsatz empfohlen :-)

P.S. Viele STUN-Server sind verfügbar, da es sich um eine Kerntechnologie für SIP und WebRTC handelt. Die Verwendung eines Mozilla-Servers sollte aus Datenschutzgründen sicher sein, Sie können jedoch auch einen anderen verwenden: STUN-Serverliste

9
Victor Klos

Ich habe einen blöden Dienst dafür per Telnet. Etwas wie das:

telnet myip.gelma.net

Your IPv4: xxx.xxx.xxx.xxx
Your IPv6: ::ffff:xxxx:xxxx

Fühlen Sie sich frei, es zu benutzen.

7
Gelma

Sie können eine Webseite nur mit Bash lesen, ohne curl, wget:

$ exec 3<> /dev/tcp/icanhazip.com/80 && # open connection
  echo 'GET /' >&3 &&                   # send http 0.9 request
  read -u 3 && echo $REPLY &&           # read response
  exec 3>&-                             # close fd
5
jfs

Wenn Sie DD-WRT verwenden, funktioniert dies für mich:

curl -s 192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'

oder

curl -s -u your_ddwrt_username:your_ddwrt_password http://192.168.1.1 | grep "ipinfo" | awk -v FS="(IP: |</span)" '{print $2}'
  • Wobei 192.168.1.1 die Gateway/Router-LAN-IP-Adresse des DD-WRT-Routers ist.

  • Die - s -Komponente bedeutet lautlos (d. H. Zeigt keine Informationen zum Lockenfortschritt an).

  • Oh, ich sollte erwähnen, dass ich das oben genannte mit "DD-WRT v24-sp2 (01/04/15) std" verwende.
2
CMP

Verwenden Sie cURL mit ipogre.com (IPv4 und IPv6 werden unterstützt).

IPv4

curl ipv4.ipogre.com

IPv6

curl ipv6.ipogre.com

http://www.ipogre.com/faqs/linux.php

2
Jacob

Diese erhalten die lokalen IPs:

ifconfig

oder für kürzere Ausgabe:

ifconfig | grep inet

ebenfalls

ip addr show

und wahrscheinlich:

hostname -I

Dies sollte die externe IP erhalten

wget http://smart-ip.net/myip -O - -q ; echo

N.B. Wenn es Ihnen nichts ausmacht, curl zu installieren, gilt Folgendes:

curl http://smart-ip.net/myip
2
Wilf

Wenn Sie lynx unter Ubuntu installiert haben, geben Sie Folgendes ein

lynx bot.whatismyipaddress.com
1
Binny

Viele Heimrouter können von UPnP abgefragt werden:

curl "http://fritz.box:49000/igdupnp/control/WANIPConn1" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:schemas-upnp-org:service:WANIPConnection:1#GetExternalIPAddress" -d "<?xml version='1.0' encoding='utf-8'?> <s:Envelope s:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'> <s:Body> <u:GetExternalIPAddress xmlns:u='urn:schemas-upnp-org:service:WANIPConnection:1' /> </s:Body> </s:Envelope>" -s

Ergreifen Sie dann die IP-Adresse aus der Antwort.

grep -Eo '\<[[:digit:]]{1,3}(\.[[:digit:]]{1,3}){3}\>'
1
user372194

Vielleicht bin ich etwas spät dran, aber inxi kann das ziemlich einfach.

inxi installieren

Sudo apt install inxi

Führen Sie dann den folgenden Befehl aus

inxi -i

Beispiel mit ausgeblendeten Informationen mithilfe der Option z zum Kopieren und Einfügen auf Websites wie der folgenden:

~$ inxi -iz
Network:   Card: NVIDIA MCP77 Ethernet driver: forcedeth
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: <filter>
           WAN IP: <filter>
           IF: eth0 ip-v4: <filter> ip-v6-link: N/A

Dort, wo <filter> steht, erscheint Ihre WAN IP, IPv4, MAC-Adresse usw.

0
Terrance

benutze ip!

ip addr show

suchen Sie dann nach dem entsprechenden Adapter (nicht lo und normalerweise eth0) und suchen Sie die IP-Adresse in der Nähe von inet.

0
Eliran Malka