Gibt es eine Möglichkeit, meine öffentliche (WAN) IP-Adresse in der Befehlszeile abzurufen? Ich befinde mich hinter einem Router (LAN-Netzwerk) mit einer von meinem Internetdienstanbieter zugewiesenen dynamischen IP-Adresse.
Ich habe Lösungen mit einem externen Webservice (z. B. ifconfig.me
) gesehen, möchte jedoch wissen, ob ich auf einen externen Service verzichten kann.
command-line
internet
ip
dynamic-ip
user61954
quelle
quelle
Antworten:
Angenommen , Ihr System verfügt über zwei Ethernet - Geräte,
eth0
undeth1
undeth0
ist mit Ihrem LAN, sagen IPs 192.168.1.X und Ihreth1
Gerät an Ihren ISP (WAN) verbunden ist , Sie gehen zu wollen , die folgenden verwendenifconfig
Befehl Ihre IP zu erhalten für die WAN-Seite.HINWEIS: Bei den ersten beiden Methoden wird davon ausgegangen, dass Sie sie auf einem Computer mit zwei Ethernet-Geräten ausführen und eines davon mit Ihrem Internetdienstanbieter (Kabelmodem und / oder DSL-Modem) verbunden ist. In diesem Szenario wird das Ethernet-Gerät (eth1) mit Ihrer IP-Adresse im Internet (WAN-IP) konfiguriert.
1. Weg
Sie können auch den
ip
Befehl verwenden.2. Weg
Wenn Sie dies bei einem System herausfinden müssen, das nur im LAN installiert ist, können Sie einen passphrasenlosen SSH-Schlüssel einrichten und ihn einem Konto auf Ihrem LAN-Computer hinzufügen, damit er über den WAN-Zugriff remote auf das System zugreifen kann.
3. Weg
Wenn Sie nicht in die Box mit WAN-Zugang sshten können und einen Heim-Router / Switch wie eine Linksys- oder Netgear-Box verwenden. Möglicherweise können Sie die IP-Adresse von diesem Gerät über eine HTTP-Statusseite abrufen. Ich habe dies auch in der Vergangenheit getan, ähnlich dem, was in diesem whatismyip.com-Forumsbeitrag beschrieben wird .
HINWEIS: Dieser Ansatz hängt stark davon ab, über welchen Router / Switch Sie verfügen, ob es sich um eine Marke von Linksys, Netgear usw. handelt. Jeder hat eine eigene Seite mit der WAN-IP.
4. Weg
Senden einer Anfrage an eine externe Internetseite, die Ihre WAN-IP-Adresse zurückmeldet.
HINWEIS: Ich bin mir bewusst, dass in der ursprünglichen Frage erwähnt wurde, dass nach Alternativen zu diesem Ansatz gesucht wurde, aber ich füge sie hier ein, damit diese Antwort alle Grundlagen abdeckt.
Zusätzliche Informationen finden Sie hier: HOWTO: Überprüfen Sie Ihre externe IP-Adresse über die Befehlszeile
quelle
eth*
Geräte die WAN-IP. Sofern sein Router ssh nicht unterstützt, hat er Zugriff und ifconfig wird dies nicht funktionieren. Kein Downvoting, aber jeder, der dies versucht, ist sich dessen bewusst.Wenn auf Ihrem System Curl installiert ist (die meisten tun dies), können Sie es verwenden
quelle
Wenn Sie sich hinter einem NAT-Router mit UPNP befinden, können Sie mit miniupnpc die WAN-IP-Adresse ermitteln:
Sie könnten es in einem Skript verwenden, zB für cron wie:
quelle
Höchstwahrscheinlich muss der Router eine Möglichkeit zum Abrufen der externen IP bereitstellen, wenn kein externer Dienst verwendet werden soll oder kann (wie in einigen anderen Antworten bereits angegeben). Für externe Dienste wird in den meisten anderen Antworten ein Webdienst verwendet. Diese Antwort bei Unix SE schlägt vor, stattdessen DNS zu verwenden.
Zum Beispiel
dig
mit OpenDNS als Resolver:quelle
curl ident.me
als würden wir uns auf einen bestimmten Dienst verlassen (in einemmyip.opendns,com
speziellen Gehäuse des DNS-Servers)Holen Sie sich Informationen von Ihrem Router per ssh oder curl.
Ich verwende curl, um dyndns nach meiner öffentlichen IP-Adresse zu fragen, aber ein solcher Befehl scheint für Sie nicht zutreffend zu sein, oder?
curl http://checkip.dyndns.org 2> /dev/null| perl -pe 's,.*Address: (\d+\.\d+\.\d+\.\d+).*,$1,'
quelle
Leider gibt es keine Möglichkeit, Mechanismen wie NAT zu erkennen, bei denen kein Remote-Service kontaktiert wird. NAT ist von Natur aus für den Benutzer völlig transparent, abgesehen von fehlerhaften Diensten, und es gibt kein Standardprotokoll für die NAT-Erkennung.
In Bezug auf externe Dienste muss ich jedoch den schnellen und einfachen Dienst vorschlagen, den ich geschrieben habe: ident.me, den Sie sowohl für IPv4 als auch für IPv6 verwenden können. Die einfachste Form, die Sie verwenden können,
curl ident.me
und die vollständige API finden Sie unter http://api.ident.me/.quelle
Wenn Ihr Router NAT PMP (Port Mapping Protocol) unterstützt, können Sie möglicherweise Ihre öffentliche IP-Adresse mit natpmp abrufen.
Es gibt eine Befehlszeilenschnittstelle zur Linux-Bibliothek natpmp mit dem Namen natpmpc. Unter Ubuntu ist es im Paket natpmp-utils enthalten. Mein Router scheint natpmp nicht zu unterstützen, daher bin ich mir nicht sicher, ob das Dienstprogramm natpmpc Ihre öffentliche IP-Adresse zurückgibt.
quelle
Der von Ihnen gesuchte Linux-Befehl geht davon aus,
ifconfig
dass Sie direkt mit dem Internet verbunden sind.Wenn dies nicht der Fall ist und der Zugriff über Proxys oder spezielles Routing erfolgt, ist der einfachste Weg (wie andere angeben), sich bei einem anderen Host anzumelden / auf ihn zuzugreifen und ihn von dort aus zu überprüfen.
Möglicherweise möchten Sie diese Frage auch mit Ihrem freundlichen Administrator für Nachbarschaftssysteme besprechen.
quelle
ifconfig
ist veraltet.ifconfig
späteste Erscheinungsdatum an. Schauen Sie sich jetzt dieìproute2
neueste Version an. Eine Quelle finden Sie unter lartc.org/howto/lartc.iproute2.html#LARTC.IPROUTE2.WHYsed das, wenn Sie müssen
quelle
curl icanhazip.com