Linux-Kurs / IP-Adressen, DNS und Ports verstehen

Eine IP-Adresse identifiziert einen Netzwerkendpunkt, DNS sucht nach den mit einem Domainnamen verknüpften Einträgen, und ein Port identifiziert einen Kommunikationsendpunkt innerhalb eines Hosts. Um eine Website zu erreichen, sind funktionierende Namensauflösung, eine Route zum Ziel und ein Dienst erforderlich, der die Verbindung akzeptiert.

Nachdem Adressen, Namen und Ports getrennt wurden, verwenden Sie Netzwerk-Fehlerbehebung, um Ausfälle auf jeder Ebene zu testen.

Systemkonfigurationsübungen verwenden eine herkömmliche Ubuntu 26.04 LTS oder Rocky Linux 9 VM als Referenzumgebung. Container, WSL und andere Versionen können sich in Dienst- und Paketkonfiguration unterscheiden. Bereiten Sie die Konsolenwiederherstellung vor und zeichnen Sie Ihre Versionen mit der virtuellen Maschinen-Einrichtungslektion auf.

Trennen Sie Adressen, Namen und Ports in einer Verbindung

Betrachten Sie https://example.com/. Der Browser und das Betriebssystem erhalten Adressinformationen gemäß ihren Caches und Resolver-Konfigurationen, wählen eine Route und kontaktieren den Server. HTTPS verwendet normalerweise Port 443; der tatsächliche Austausch kann TCP und TLS oder einen Transport wie QUIC umfassen. Eine erfolgreiche DNS-Abfrage allein beweist nicht, dass die Website erreichbar ist.

Begriff Zweck Beispiel
IP-Adresse Adresse, die zum Senden von Paketen verwendet wird 192.0.2.10 oder 2001:db8::10
DNS Mit Domainnamen verknüpfte Einträge abfragen A-, AAAA- und MX-Datensätze
Port und Protokoll Kommunikationsendpunkte unterscheiden TCP 443 und UDP 443 sind unterschiedlich

Die Bereiche 192.0.2.0/24 und 2001:db8::/32 sind Dokumentationsbeispiele, keine erreichbaren Laborsserver. TCP und UDP haben separate Portbereiche, daher muss eine Firewall-Regel sowohl das Protokoll als auch die Nummer identifizieren.

IPv4, IPv6 und private Adressen verstehen

IPv4 verwendet 32-Bit-Adressen, die üblicherweise als dezimale Punktdarstellung geschrieben werden; IPv6 verwendet 128-Bit-Adressen, die üblicherweise in hexadezimalen Gruppen dargestellt werden, die durch Doppelpunkte getrennt sind. Ein Interface kann mehrere Adressen haben und beide Familien unterstützen. 127.0.0.1 und ::1 sind Loopback-Adressen. Ein Dienst, der nur auf Loopback hört, ist von einem anderen Computer aus nicht direkt verfügbar.

IPv4-Privatebereiche sind 10.0.0.0/8, 172.16.0.0/12 und 192.168.0.0/16. Sie können in privaten Netzwerken wiederverwendet werden und sind keine global gerouteten öffentlichen Adressen. Der ausgehende Zugriff kann die Netzwerkadressübersetzung (NAT) verwenden. Gehen Sie nicht davon aus, dass IPv6 lediglich IPv4 ohne NAT ist oder dass eine IPv4-Firewallregel automatisch IPv6 schützt.

Lesen Sie Präfixe und die Standardroute

In 192.168.10.20/24 ist /24 die Classless Inter-Domain Routing (CIDR)-Notation für ein 24-Bit-Netzwerkpräfix. Das Routing wählt ein passendes Zielpräfix aus, wobei in der Regel ein spezifischeres bevorzugt wird. Ein default via ...-Eintrag liefert einen nächsten Hop, wenn keine spezifischere Route zutrifft. Ein Gateway und ein DNS-Server können eine Adresse teilen, aber sie erfüllen unterschiedliche Aufgaben.

ip -brief address
ip route
ip -6 route
getent ahosts example.com

ip gehört zum iproute2-Projekt, aber die Namen der Distributionspakete unterscheiden sich: iproute2 auf Ubuntu 26.04 und iproute auf Rocky Linux 9. Diese Befehle zeigen Schnittstellenadressen, Routen und die Namensauflösung des Systems an. getent kann /etc/hosts und andere konfigurierte Quellen sowie DNS verwenden; Adressen und Schnittstellennamen variieren je nach Maschine.

Überprüfen Sie die installierten Versionen mit dpkg-query -W iproute2 unter Ubuntu oder rpm -q iproute unter Rocky. Das offizielle Rocky Linux 9 BaseOS-Repository zeigt ebenfalls den RPM-Paketnamen an.

Testen Sie die Namensauflösung separat vom Dienst

Ein A-Eintrag enthält eine IPv4-Adresse und ein AAAA-Eintrag enthält eine IPv6-Adresse. Ein Name kann mehrere Adressen zurückgeben, und das Caching kann beeinflussen, was Sie sehen. Auf einem System mit systemd-resolved zeigt der erste unten stehende Befehl die Resolver-Konfiguration an. Wenn dies nicht verfügbar ist, überprüfen Sie die von dieser Distribution verwendete NetworkManager- oder Resolver-Konfiguration.

resolvectl status
ss -lnt
curl -I --connect-timeout 5 --max-time 15 https://example.com/

ss -lnt listet lokale TCP-Sockets, die auf Verbindungen warten, auf, nicht die Ports auf der entfernten Website. curl fordert die HTTPS-Antwortheader vom entfernten Server an. Installieren Sie es mit sudo apt install curl auf Ubuntu oder sudo dnf install curl auf Rocky Linux, falls erforderlich. Proxy-Einstellungen, Zertifikatvertrauen und Netzwerkrichtlinien können alle das Ergebnis beeinflussen.

Wählen Sie die nächste Überprüfung basierend auf den Beweisen.

  1. Wenn die Schnittstelle keine Adresse hat, überprüfen Sie die VM-Netzwerkverbindung und die Schnittstellenkonfiguration.
  2. Wenn eine Adresse vorhanden ist, aber keine nutzbare Route existiert, untersuchen Sie das Routing und das Gateway.
  3. Wenn nur die Namensauflösung fehlschlägt, überprüfen Sie den Resolver und die Namensdienstkonfiguration.
  4. Wenn Auflösung und Routing funktionieren, unterscheiden Sie zwischen hörenden Ports, Filtern, TLS-Fehlern und Anwendungsfehlern.

Die Befehle in dieser Lektion ändern keine Konfiguration. Vermeiden Sie es, Resolver-Dateien zu überschreiben oder eine Firewall als erste Maßnahme zu deaktivieren. Identifizieren Sie die fehlerhafte Schicht, bevor Sie eine gezielte Änderung vornehmen.

Offizielle Referenzen