Verwenden Sie Linux, MacOSX, FreeBSD usw.? Die Ausgabe von 'ifconfig' unterscheidet sich für diese verschiedenen Betriebssysteme, und der Befehl 'ip' ist unter MacOSX nicht vorhanden. Suchen Sie nach der IP Ihres Computers (Sie benötigen ein Shell-Skript, um ifconfig oder etwas anderes zu analysieren) oder nach Ihrem Router (Die folgenden Websites funktionieren möglicherweise)?
Stefan Lasiewski
Antworten:
49
curl ifconfig.me
curl ifconfig.me/ip (nur für die ip)
curl ifconfig.me/all (für mehr Infos braucht man Zeit)
Das ist einfach cool. Für eine leicht zu merkende Version können Sie eingeben dig @resolver1.opendns.com myip.opendns.com. Oder unter Windows: nslookup myip.opendns.com resolver1.opendns.com.
Michael Kropat
2
Was bei mir am besten geklappt hat: dig @208.67.222.220 myip.opendns.com +shortum direkt die ip zu bekommen ohne die ganze antwort durchgehen zu müssen.
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Beachten Sie, dass das oben Genannte derzeit nur für IPv4 funktioniert (keiner dieser Resolver scheint derzeit über IPv6 zu verfügen). Wenn Sie jedoch -4das Explizite weglassen, besteht die -t aGefahr, dass es in Zukunft ausfällt (mit Ausnahme von Google txt, das möglicherweise tatsächlich funktioniert) IPv6 eines Tages, wenn es von Google ordnungsgemäß aktiviert wurde)).
Beachten Sie, dass dies myip.opendns.comnur durch resolver1.opendns.comund nicht durch auth1.opendns.combehoben werden kann. Sie scheinen also DNS-Hijacking durchzuführen und mitten in ihrem eigenen Domain-Namen zu sein! Sie können es daher nicht verwenden, um die IP eines zufälligen Auflösers zu finden, da dies resolver1.opendns.comfür nicht maßgeblich ist myip.opendns.com.
Beachten Sie, dass dies o-o.myaddr.l.google.comder flexibelste und zukunftssicherste Ansatz ist. Sie können sogar testen, ob Ihr DNS-Resolver die experimentelle EDNS0-Erweiterung für das Client-Subnetz unterstützt (für die nur sehr wenige Resolver die Unterstützung haben):
% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options: printcmd
o-o.myaddr.l.google.com. 60 IN TXT "74.125.189.16"
o-o.myaddr.l.google.com. 60 IN TXT "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec 8 20:38:46 2013
;; MSG SIZE rcvd: 114
I @ Matt3o12 <gefunden OpenDNS: dig +short AAAA myip.opendns.com @2620:0:ccc::2.
Bufh
Heutzutage unterstützt die Methode zum Abrufen von TXT-Einträgen von Google sowohl IPv4 als auch IPv6. Geben Sie daher an, -4oder -6ob Sie eine bestimmte IP-Version benötigen.
Martin
12
Eine sehr einfache Antwort, wenn Sie einen Internetzugang haben, ist:
curl icanhazip.com
Bedenken Sie, dass das Vertrauen in Drittanbieterquellen für Ihre IP-Adresse problematisch sein kann, insbesondere wenn das, was Sie mit diesen Daten tun, eine besondere Bedeutung hat.
Ein vertrauenswürdigerer Weg ist, einen bekannten, vertrauenswürdigen DNS-Server (im Idealfall DNSSEC) auszuwählen und den Hostnamen der Box damit abzufragen, sofern Ihr DNS-Server solche Einträge enthält.
Sie sind direkt mit dem Internet verbunden (kein NAT / Proxy / VPN usw.)
Dann können Sie einfach die Ausgabe von ifconfig nach den IP-Adressen der Schnittstellen (dem Teil "inet addr:") analysieren, um die Liste der IP-Adressen aller Ihrer Schnittstellen abzurufen. Die eine IP-Adresse, die nicht im privaten Bereich liegt (siehe http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ), ist Ihre öffentliche IP-Adresse.
Die gleiche Liste erhalten Sie auch über
ip addr show
Das kann einfacher zu analysieren sein.
Wenn Sie keine direkte Internetverbindung (NAT usw.) haben, können Sie Ihre öffentliche IP-Adresse nicht ohne externe Hilfe finden (da Ihr Computer sie nicht kennt). Dann musst du es wie in den anderen Antworten machen.
Ich habe einen etwas anderen Ansatz gewählt, indem ich das für NAT Traversal entwickelte STUN-Protokoll verwendet habe. Wenn Sie Ubuntu verwenden, können Sie das Paket "stun" einfach installieren, indem Sie Folgendes eingeben:
sudo apt-get install stun
Das Paket installiert einen STUN-Server, den Sie wahrscheinlich nicht benötigen, enthält jedoch auch einen STUN-Test-Client, mit dem ich dieses Problem gelöst habe. Jetzt können Sie Ihre öffentliche IP mit einem (nicht ganz einfachen) Befehl abrufen:
Nun geht es darum, dass stun den öffentlichen STUN-Server "stunserver.org" kontaktiert und eine Antwort mit Ihrer öffentlichen IP-Adresse erhält. Der Rest des Befehls besteht nur darin, die IP-Adresse aus der Ausgabe herauszufiltern.
Es dient Klartext mit einer Art von Text / HTML ...
Bortzmeyer
zeigt es nicht deine IP in deinem Browser an?
2
Aber mit dem falschen Typ.
Bortzmeyer
@bortzmeyer Äh, was ist der "richtige Typ"? text/htmlist in Ordnung für das, was diese Pseudo-API zurückgibt - es ist sicherlich nicht XML oder JSON. text/plainvielleicht, aber es ist völlig verwendbar als text/html.
Ceejayoz
3
+1 für eine Seite, die kein Greifen benötigt. Alsowget -q -O - http://wgetip.com/
Google zeigt aus irgendeinem Grund nur Ihre IP-Adresse an, basierend darauf, welche User-AgentZeichenfolge auf der Seite angezeigt wird. Mit Firefox funktioniert es; Aber SeaMonkey mit deaktiviertem "Firefox" -String (über "general.useragent.compatMode.firefox" auf "false" gesetzt) funktioniert dies plötzlich nicht mehr. Haben Sie überhaupt keine Ahnung, warum Google so etwas explizit nur für Firefox anstelle von Gecko aktiviert, da es viele andere Desktop-Browser auf Gecko-Basis gibt, die ebenfalls kompatibel sind, einschließlich SeaMonkey.
Dies gibt die interne IP-Adresse zurück, die nicht abgefragt wurde. Zu Ihrer Information können Sie dies jedoch auch mit dem Befehl hostname -I(Großbuchstabe 'i') tun .
Redsandro
3
Am einfachsten ist es , wie vorgeschlagen http://ifconfig.me/ zu verwenden .
Auf dieser Seite erfahren Sie, welcher Befehl für welche Informationen verwendet werden soll, die Sie abrufen möchten.
Auf diese Weise können Sie es in Ihrem internen Netzwerk zum Laufen bringen, wenn ein Nat oder ein Proxy an der Kommunikation beteiligt ist und Sie wissen möchten, von welcher IP aus Sie angezeigt werden.
Es ist kein Service von Drittanbietern erforderlich.
Um nicht auf externe Quellen angewiesen zu sein, verwende ich expect, um in meinen Router zu telneten und die IP-Adresse seiner öffentlichen Schnittstelle abzurufen. Hier ist ein Beispiel für ein Expect-Skript:
Dies basiert natürlich auf der Annahme, dass ich Administratorzugriff auf den Router habe und dass es sich um einen Linux-basierten Router handelt, für den der Befehl ifconfig verfügbar ist.
Wenn Sie die externe IP-Adresse Ihres Routers ermitteln möchten, fragen Sie entweder den Router selbst nach seiner WAN-Adresse oder fragen Sie jemanden außerhalb des Routers, ob er sie für Sie abrufen soll.
Manuell können Sie eine der oben angegebenen Sites durchsuchen, die die IP-Adresse der eingehenden Anfrage zurückgeben.
Sie können nur die Shell verwenden, um Ihre externe IP-Adresse zu überprüfen, auch mit externen Anbietern
#!/bin/bash
TCP_HOST="checkmyip.com"
TCP_PORT=80
exec 5<>/dev/tcp/"${TCP_HOST}"/"${TCP_PORT}"
echo -e "GET / HTTP/1.0\nHOST:${TCP_HOST}\n" >&5
while read -r line
do
case "$line" in
*"Your local IP address is"* )
line="${line#*Your local IP address is }"
line=${line%%</p>*}
echo "Your ip is: $line"
exec >&5-
exit
;;
esac
done <&5
Hier ist eine weitere Alternative, die von Hosts abhängt, deren Geschäft sich mit der Verwaltung dynamischer IP-Adressen befasst, und nicht mit "öffentlich zugänglichen" Sites, die möglicherweise nicht mehr funktionieren oder das Format ändern.
1) Registrieren Sie Ihren Server bei einem der vielen kostenlosen dynamischen DNS-Dienste (z. B. no-ip.com). Dadurch erhalten Sie einen DNS-Eintrag wie xxx.no-ip.org.
2) Installieren Sie das dynamische Aktualisierungstool des Dienstes (meldet IP-Änderungen an den Dienst).
Gehen Sie wie folgt vor, um die IP-Adresse in einem Skript abzurufen:
$external_ip = `dig +short xxx.no-ip.org`
Hervorragend für die Verwendung in Cron-Jobs geeignet, um zu überprüfen, ob sich die dynamische IP geändert hat und einige Konfigurationseinträge geändert werden müssen.
Unter OS X gibt es zwei einfache Lösungen, um sowohl die private als auch die öffentliche IP-Adresse abzurufen (mit Bonuscode, wenn Sie LaunchBar verwenden).
Private IP
$ ipconfig getifaddr $1
# $1=en0 || en1 || en*
LaunchBar Script
#!/bin/sh
title="$USER@$(HOSTNAME -s)"
text=$(ipconfig getifaddr en1)
open "x-launchbar:large-type?font-name=TerminalDosis-Light&string=$text&title=$title"
Antworten:
curl ifconfig.me
curl ifconfig.me/ip
(nur für die ip)curl ifconfig.me/all
(für mehr Infos braucht man Zeit)Weitere Befehle finden Sie unter: http://ifconfig.me/#cli_wrap
quelle
curl http://checkip.amazonaws.com/
Sie können anfordern
myip.opendns.com
. von OpenDNS.dig @208.67.222.220 myip.opendns.com
quelle
dig @resolver1.opendns.com myip.opendns.com
. Oder unter Windows:nslookup myip.opendns.com resolver1.opendns.com
.dig @208.67.222.220 myip.opendns.com +short
um direkt die ip zu bekommen ohne die ganze antwort durchgehen zu müssen.dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short
dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
dig -4 @resolver1.opendns.com -t a myip.opendns.com +short
Beachten Sie, dass das oben Genannte derzeit nur für IPv4 funktioniert (keiner dieser Resolver scheint derzeit über IPv6 zu verfügen). Wenn Sie jedoch
-4
das Explizite weglassen, besteht die-t a
Gefahr, dass es in Zukunft ausfällt (mit Ausnahme von Googletxt
, das möglicherweise tatsächlich funktioniert) IPv6 eines Tages, wenn es von Google ordnungsgemäß aktiviert wurde)).Beachten Sie, dass dies
myip.opendns.com
nur durchresolver1.opendns.com
und nicht durchauth1.opendns.com
behoben werden kann. Sie scheinen also DNS-Hijacking durchzuführen und mitten in ihrem eigenen Domain-Namen zu sein! Sie können es daher nicht verwenden, um die IP eines zufälligen Auflösers zu finden, da diesresolver1.opendns.com
für nicht maßgeblich istmyip.opendns.com
.Beachten Sie, dass dies
o-o.myaddr.l.google.com
der flexibelste und zukunftssicherste Ansatz ist. Sie können sogar testen, ob Ihr DNS-Resolver die experimentelle EDNS0-Erweiterung für das Client-Subnetz unterstützt (für die nur sehr wenige Resolver die Unterstützung haben):quelle
dig +short AAAA myip.opendns.com @2620:0:ccc::2
.-4
oder-6
ob Sie eine bestimmte IP-Version benötigen.Eine sehr einfache Antwort, wenn Sie einen Internetzugang haben, ist:
Bedenken Sie, dass das Vertrauen in Drittanbieterquellen für Ihre IP-Adresse problematisch sein kann, insbesondere wenn das, was Sie mit diesen Daten tun, eine besondere Bedeutung hat.
Ein vertrauenswürdigerer Weg ist, einen bekannten, vertrauenswürdigen DNS-Server (im Idealfall DNSSEC) auszuwählen und den Hostnamen der Box damit abzufragen, sofern Ihr DNS-Server solche Einträge enthält.
quelle
Ich habe dafür einen einfachen und schnellen Webservice geschrieben.
Sie können nach Ihrem IPv4 fragen:
Oder IPv6:
Die API ist unter http://api.ident.me/ dokumentiert.
quelle
Ein Weg: http://www.whatismyip.com/
quelle
Wenn
Dann können Sie einfach die Ausgabe von ifconfig nach den IP-Adressen der Schnittstellen (dem Teil "inet addr:") analysieren, um die Liste der IP-Adressen aller Ihrer Schnittstellen abzurufen. Die eine IP-Adresse, die nicht im privaten Bereich liegt (siehe http://en.wikipedia.org/wiki/IP_address#IPv4_private_addresses ), ist Ihre öffentliche IP-Adresse.
Die gleiche Liste erhalten Sie auch über
Das kann einfacher zu analysieren sein.
Wenn Sie keine direkte Internetverbindung (NAT usw.) haben, können Sie Ihre öffentliche IP-Adresse nicht ohne externe Hilfe finden (da Ihr Computer sie nicht kennt). Dann musst du es wie in den anderen Antworten machen.
quelle
Ich habe einen etwas anderen Ansatz gewählt, indem ich das für NAT Traversal entwickelte STUN-Protokoll verwendet habe. Wenn Sie Ubuntu verwenden, können Sie das Paket "stun" einfach installieren, indem Sie Folgendes eingeben:
Das Paket installiert einen STUN-Server, den Sie wahrscheinlich nicht benötigen, enthält jedoch auch einen STUN-Test-Client, mit dem ich dieses Problem gelöst habe. Jetzt können Sie Ihre öffentliche IP mit einem (nicht ganz einfachen) Befehl abrufen:
Nun geht es darum, dass stun den öffentlichen STUN-Server "stunserver.org" kontaktiert und eine Antwort mit Ihrer öffentlichen IP-Adresse erhält. Der Rest des Befehls besteht nur darin, die IP-Adresse aus der Ausgabe herauszufiltern.
quelle
Eine Möglichkeit ist, dass Sie eine Anfrage an die Seite unter stellen können
http://www.biranchi.com/ip.php
Es gibt die IP-Adresse Ihres Systems zurück
quelle
text/html
ist in Ordnung für das, was diese Pseudo-API zurückgibt - es ist sicherlich nicht XML oder JSON.text/plain
vielleicht, aber es ist völlig verwendbar alstext/html
.wget -q -O - http://wgetip.com/
Google zeigt jetzt Ihre öffentliche IP-Adresse an: http://www.google.com/search?q=ip
quelle
User-Agent
Zeichenfolge auf der Seite angezeigt wird. Mit Firefox funktioniert es; Aber SeaMonkey mit deaktiviertem "Firefox" -String (über "general.useragent.compatMode.firefox" auf "false" gesetzt) funktioniert dies plötzlich nicht mehr. Haben Sie überhaupt keine Ahnung, warum Google so etwas explizit nur für Firefox anstelle von Gecko aktiviert, da es viele andere Desktop-Browser auf Gecko-Basis gibt, die ebenfalls kompatibel sind, einschließlich SeaMonkey.Okay ... ich weiß, dass dies WEG ist und wahrscheinlich nicht einmal einen Beitrag wert ist, aber hier ist meine funktionierende Lösung.
Schön und einfach.
quelle
hostname -I
(Großbuchstabe 'i') tun .Am einfachsten ist es , wie vorgeschlagen http://ifconfig.me/ zu verwenden .
Auf dieser Seite erfahren Sie, welcher Befehl für welche Informationen verwendet werden soll, die Sie abrufen möchten.
Für IP:
oderFür öffentlichen Hostnamen:
Für alle Informationen in einer XML-Datei:
etc ... checkt einfach http://ifconfig.me aus
quelle
Ich mache das oft und von vielen Geräten aus, also habe ich meine eigenen zwei Dienste auf einem Server erstellt:
PHP-Datei im Stammverzeichnis eines Webservers:
Verwendung auf einer Shell:
funktioniert auch mit ipv6:
Mit Netcat:
Auf einem Cisco-Router:
Schneller Hack mit einem benutzerdefinierten Telnet-Server: xinetd spawning / usr / bin / env:
und dann telnet darauf:
funktioniert genauso mit einem router:
Auf diese Weise können Sie es in Ihrem internen Netzwerk zum Laufen bringen, wenn ein Nat oder ein Proxy an der Kommunikation beteiligt ist und Sie wissen möchten, von welcher IP aus Sie angezeigt werden.
Es ist kein Service von Drittanbietern erforderlich.
quelle
Um nicht auf externe Quellen angewiesen zu sein, verwende ich expect, um in meinen Router zu telneten und die IP-Adresse seiner öffentlichen Schnittstelle abzurufen. Hier ist ein Beispiel für ein Expect-Skript:
Ich führe dann das obige Skript wie folgt aus, um die öffentliche IP zu erhalten:
Dies basiert natürlich auf der Annahme, dass ich Administratorzugriff auf den Router habe und dass es sich um einen Linux-basierten Router handelt, für den der Befehl ifconfig verfügbar ist.
quelle
Duplikat von vielen anderen Fragen (daher meine -1 Stimme).
quelle
Eine einfache Shell-Skriptlösung finden Sie hier:
http://bash.cyberciti.biz/misc-shell/read-local-ip-address/
Funktioniert unter Linux, FreeBSD, SunOS und Apple Darwin (mit einer geringfügigen Änderung).
quelle
Wenn Sie die externe IP-Adresse Ihres Routers ermitteln möchten, fragen Sie entweder den Router selbst nach seiner WAN-Adresse oder fragen Sie jemanden außerhalb des Routers, ob er sie für Sie abrufen soll.
Manuell können Sie eine der oben angegebenen Sites durchsuchen, die die IP-Adresse der eingehenden Anfrage zurückgeben.
Auf automatisierte Weise können Sie versuchen:
Dadurch erhalten Sie die Zeile, die die IP - Adresse in der http - Antwort enthält, und können sie dann mit sed, awk usw
quelle
Sie können nur die Shell verwenden, um Ihre externe IP-Adresse zu überprüfen, auch mit externen Anbietern
Ausgabe
quelle
quelle
Ich mache das Es gibt mir nur die IP ohne Beteiligung von Dritten.
ip addr show | grep eth0 | grep inet | tr -s "" | cut -f3 -d "" | cut -f1 -d "/"
quelle
quelle
Hier ist eine weitere Alternative, die von Hosts abhängt, deren Geschäft sich mit der Verwaltung dynamischer IP-Adressen befasst, und nicht mit "öffentlich zugänglichen" Sites, die möglicherweise nicht mehr funktionieren oder das Format ändern.
1) Registrieren Sie Ihren Server bei einem der vielen kostenlosen dynamischen DNS-Dienste (z. B. no-ip.com). Dadurch erhalten Sie einen DNS-Eintrag wie xxx.no-ip.org.
2) Installieren Sie das dynamische Aktualisierungstool des Dienstes (meldet IP-Änderungen an den Dienst).
Gehen Sie wie folgt vor, um die IP-Adresse in einem Skript abzurufen:
$external_ip = `dig +short xxx.no-ip.org`
Hervorragend für die Verwendung in Cron-Jobs geeignet, um zu überprüfen, ob sich die dynamische IP geändert hat und einige Konfigurationseinträge geändert werden müssen.
quelle
Unter OS X gibt es zwei einfache Lösungen, um sowohl die private als auch die öffentliche IP-Adresse abzurufen (mit Bonuscode, wenn Sie LaunchBar verwenden).
Private IP
LaunchBar Script
Öffentliche IP
LaunchBar Script
quelle