Wie man IP-Adressen unter Linux überprüft
Unter Linux kann die auf dem Server eingestellte IP-Adresse als grundlegende Methode von ip address überprüft werden. Wenn Sie wissen möchten, welche IP für die tatsächliche externe Kommunikation ausgewählt wird, überprüfen Sie den src-Wert von ip route get destination, und die im Internet sichtbare öffentliche IP muss aufgrund von NAT, Proxy oder VPN separat überprüft werden.
ip -brief address ip route get 1.1.1.1
Ein einzelner Server kann gleichzeitig mehrere Adressen haben, einschließlich Loopback, private IPv4, öffentliche IPv4, Link-Local IPv6, globale IPv6 usw. Daher hängt „meine IP“ davon ab, mit welchem Netzwerk Sie kommunizieren möchten.
Schnellster Weg, die IP-Adresse zu überprüfen
Alle Schnittstellen einfach anzeigen
ip -brief address
-brief zeigt den Schnittstellennamen, den Status und die Adresse in einer Zeile pro Schnittstelle an. lo ist die Loopback-Schnittstelle für die Kommunikation mit sich selbst, und 127.0.0.1 und ::1 sind keine Adressen, an die externe Geräte eine Verbindung herstellen können.
Nur IPv4-Adressen anzeigen
ip -4 address show
Um nur IPv4-Adressen mit globalem Gültigkeitsbereich einzuschränken, führen Sie Folgendes aus.
ip -4 address show scope global
Nur IPv6-Adressen anzeigen
ip -6 address show
IPv6 kann sowohl scope link-Adressen anzeigen, die nur innerhalb des Links gültig sind, als auch scope global-Adressen, die auf größerer Skala verwendet werden. Da es auch mehrere temporäre Privatsphäre-Adressen geben kann, überprüfen Sie die Adressmerkmale wie scope, temporary und dynamic zusammen.
Wie man die Ausgabe von 'ip address' liest
ip address show zeigt Netzwerkschnittstellen und die an diese Schnittstellen angehängten Protokolladressen im Detail an. Sie können die Befehlssyntax und Adress-Eigenschaften im ip-address Handbuch nachschlagen.
ip address show
| Anzeigepunkte | Bedeutung | Zu prüfende Punkte |
|---|---|---|
UP |
Die Schnittstelle ist administrativ aktiv | Dies bedeutet nicht, dass die tatsächliche Verbindung und Kommunikation normal sind. |
LOWER_UP |
Die untere Verbindungsschicht des Geräts ist aktiv | Hinweise zur Bestimmung des Status von Kabel- oder virtuellen Verbindungen. |
inet |
IPv4-Adresse und Präfixlänge | Angezeigt wie 192.0.2.10/24. |
inet6 |
IPv6-Adresse und Präfixlänge | Sie müssen zwischen Link-Local- und globalen Adressen unterscheiden. |
scope |
Gültiger Adressbereich | Beinhaltet host, link, global usw. |
valid_lft |
Gültige Lebensdauer der Adresse | Dynamische Adressen können sich im Laufe der Zeit ändern oder entfernt werden. |
Überprüfen Sie eine bestimmte Netzwerkschnittstelle
Finden Sie den Schnittstellennamen
ip -brief link
Je nach Umgebung kann der Name unterschiedlich sein, z. B. eth0, ens3, enp1s0, wlan0. Gehen Sie nicht von einem bestimmten Namen aus Dokumentation oder Skripten aus; überprüfen Sie zuerst die Liste des tatsächlichen Systems.
Sehen Sie sich die Adresse der ausgewählten Schnittstelle an
ip address show dev ens3
ens3 ist ein Beispiel. Ersetzen Sie es durch den tatsächlichen Schnittstellennamen. Wenn nur eine globale IPv4-Adresse benötigt wird, können Sie zusammen eine Bedingung angeben.
ip -4 address show dev ens3 scope global
Überprüfen Sie die IP für die tatsächliche externe Kommunikation
Überprüfen Sie src in der Routenabfrage
Wenn es mehrere Adressen gibt, können je nach Ziel die ausgewählte Schnittstelle und die Quelladresse variieren. Überprüfen Sie die Routing-Entscheidungen für ein bestimmtes Ziel mit ip route get.
ip route get 1.1.1.1
In der Ausgabe ist dev die zu verwendende Schnittstelle, via das nächste Gateway und src die vom Kernel ausgewählte Quelladresse. Dieser Befehl fragt die Routing-Tabelle ab und garantiert nicht, dass die Verbindung zum Zielserver oder zur Zielanwendung erfolgreich ist. Für die detaillierte Syntax siehe das ip-route-Handbuch.
Überprüfung des Standard-Gateways
ip route show default
Wenn es mehrere Standardrouten gibt, kann der tatsächliche Pfad je nach Metrik, Richtlinien für das Routing und Ziel abweichen. Deshalb wird empfohlen, die ip route get-Ergebnisse gemeinsam zu überprüfen.
Überprüfung der IPv6-Route
ip -6 route get 2606:4700:4700::1111
Selbst wenn IPv6 konfiguriert ist, ist eine tatsächliche Konnektivität nur möglich, wenn der Upstream-Router, die Firewall, DNS und Anwendungen alle IPv6-Kommunikation unterstützen.
Schnelle Überprüfung mit hostname -I
Bei einigen Linux-Distributionen kann der folgende Befehl die auf dem Host gesetzten Adressen durch Leerzeichen getrennt ausgeben.
hostname -I
Kurz und praktisch, aber es zeigt nicht den Schnittstellennamen, die Präfixlänge, den Adressbereich oder die ausgewählte Route an. Um festzustellen, welche Adresse tatsächlich für die Kommunikation unter mehreren Adressen verwendet wird, verwenden Sie ip address und ip route get.
hostname -i zeigt das Ergebnis der Namensauflösung an, daher wird es von /etc/hosts oder DNS-Einstellungen beeinflusst und unterscheidet sich vom direkten Abfragen der auf der Schnittstelle festgelegten Adresse. Es ist wichtig, ähnliche Optionen nicht zu verwechseln.
Unterscheidung zwischen privaten IPs und öffentlichen IPs
Lokale Schnittstellenadresse
Die von ip address angezeigten Adressen sind auf den Schnittstellen dieses Linux-Netzwerk-Namespaces eingestellt. Befindet man sich hinter einem Heimrouter oder Cloud-NAT, können private IPv4-Adressen in den Bereichen 10.0.0.0/8, 172.16.0.0/12 oder 192.168.0.0/16 sichtbar sein.
Adressen, die im Internet sichtbar sind
Beim Durchlaufen eines NAT können externe Dienste die öffentliche IP des Routers, des Cloud-Gateways, VPNs oder Proxys sehen. Diese Adresse kann nicht allein mit lokalen Befehlen bestimmt werden; der zuverlässigste Weg ist die Überprüfung über Netzwerkausrüstung oder die Cloud-Verwaltungsschnittstelle.
Man kann auch einen externen IP-Prüfdienst im Web verwenden, aber die Anforderungszeit und die Quelladresse werden an diesen Dienst gesendet. Wählen Sie einen vertrauenswürdigen Dienst und berücksichtigen Sie Automatisierungsabhängigkeiten, IPv4/IPv6-Unterscheidung und mögliche Ausfälle.
Ob ein Port offen ist, ist eine andere Frage.
Die öffentliche IP zu kennen bedeutet nicht, dass der Dienst des Servers aus dem Internet erreichbar ist. Sie müssen NAT-Port-Forwarding, Cloud-Sicherheitsgruppen, Host-Firewalls und die Empfangsadresse und den Port des Dienstes überprüfen.
ss -lntup
Administratorrechte können erforderlich sein, um Prozessinformationen anzuzeigen. Bevor ein Dienst extern freigegeben wird, sollten Authentifizierung, Verschlüsselung, Aktualisierungsstatus und der minimal erlaubte Umfang überprüft werden.
Umgang mit IP-Adressen in Skripten
Verwenden Sie JSON-Ausgabe
Es ist zuverlässiger, die JSON-Ausgabe von ip strukturiert zu verarbeiten, als grep-Kombinationen zu verwenden, die von festen Positionen in Zeichenketten abhängen.
ip -j -4 address show scope global
Der JSON-Parser sollte die Schnittstellen und das addr_info-Array durchlaufen und die Möglichkeit mehrerer Adressen berücksichtigen. Die Ausgabefelder können je nach ip-Version unterschiedlich sein, daher sollten sie in der Zieldistribution überprüft werden.
Wählen Sie nicht bedingungslos nur eine Adresse aus.
In Umgebungen mit Multi-Home-Servern, VPNs, Containern oder temporären IPv6-Adressen gibt es keine Garantie, dass die "erste Adresse" diejenige ist, die eine Anwendung benötigt. Wählen Sie, nachdem Ziel, Adressfamilie, Schnittstelle und Gültigkeitsbereichskriterien eindeutig definiert wurden.
Container und Netzwerk-Namespaces
Das Ausführen von ip address innerhalb eines Containers zeigt im Allgemeinen die Adressen des Netzwerk-Namespaces dieses Containers an. Diese können von den Schnittstellenadressen des Hosts oder von externen NAT-Adressen abweichen.
Hosts, Container, Kubernetes-Pods, Services, Ingress und externe Load Balancer können unterschiedliche Adressen haben. Bei der Fehlerdiagnose sollte vermerkt werden, in welchem Namespace der Befehl ausgeführt wurde, und jede Ebene des Kommunikationswegs unterschieden werden.
Kann ich ifconfig verwenden?
ifconfig wird häufig in älterer Dokumentation gesehen, kann jedoch auf aktuellen Linux-Distributionen möglicherweise nicht standardmäßig installiert sein und kann moderne Netzwerkfunktionen nicht vollständig darstellen. In neuer Dokumentation und Skripten wird empfohlen, iproute2-Befehle wie ip address, ip link und ip route zu bevorzugen.
Wenn bestehende Systembetriebsverfahren von ifconfig abhängen, entfernen Sie es nicht sofort. Überprüfen Sie stattdessen die Unterschiede in Ausgabe und Verhalten und wechseln Sie schrittweise.
Häufig gestellte Fragen
Ist 127.0.0.1 die IP des Servers?
Es ist die IPv4-Loopback-Adresse, die auf den Server selbst verweist. Geräte im selben Netzwerk können den Server unter dieser Adresse nicht erreichen.
Wenn mehrere Adressen angezeigt werden, welche sollte ich verwenden?
Es hängt vom Gegenüber ab, zu dem Sie eine Verbindung herstellen möchten, und von der Route. Für dasselbe interne Netzwerk verwenden Sie die private Adresse der entsprechenden Schnittstelle. Welche Quelladresse verwendet werden soll, wenn Sie zu einem bestimmten externen Ziel gehen, prüfen Sie in src in ip route get destination.
Warum sehe ich keine öffentliche IP bei ip address?
Es kann daran liegen, dass der Server hinter NAT, einem Load Balancer, einem VPN oder einem Proxy steht. Prüfen Sie die externe Adresszuordnung in Ihrer Netzwerkausrüstung oder Cloud-Konsole.
Kann ich mich nur durch die Kenntnis der IP-Adresse per SSH verbinden?
Nein. Der SSH-Server muss auf der entsprechenden Adresse und dem entsprechenden Port lauschen, Routing/NAT/Firewall/Sicherheitsgruppen müssen die Verbindung erlauben, und eine gültige Authentifizierungsmethode ist ebenfalls erforderlich.
Zusammenfassung
Sie können die Schnittstellenadresse mit ip -brief address überprüfen und detaillierte IPv4/IPv6-Informationen mit ip -4 address und ip -6 address abrufen. Die Quelladresse, die tatsächlich für ein Ziel verwendet wird, wird genauer durch den src-Wert von ip route get destination angezeigt.
Die lokale Adresse und die im Internet sichtbare öffentliche Adresse können sich aufgrund von NAT und Proxies unterscheiden. Geben Sie stets zusammen den Adressbereich, den Netzwerk-Namensraum, in dem Sie ausgeführt haben, und das tatsächliche Kommunikationsziel an.




