Einführung
Die Netzwerkdiagnose wird einfacher, wenn Sie die einzelnen Ebenen nacheinander prüfen. Beginnen Sie mit der Identität des Hosts und überprüfen Sie anschließend seine Schnittstellen und Adressen, die Routenauswahl, die grundlegende Erreichbarkeit, die Namensauflösung, offene Sockets, die Antwort der Anwendung und schließlich die lokale Firewall-Richtlinie.
In diesem Lab durchlaufen Sie diese Reihenfolge auf einem Ubuntu-Host. Ein vorbereiteter HTTP-Dienst lauscht ausschließlich auf dem Loopback-Port 8088 und bietet damit ein sicheres Ziel für Übungen mit ss, curl und UFW-Regeln. Die Konfiguration der Netzwerkschnittstellen, die Standardroute, die DNS-Einstellungen und der SSH-Zugriff des Hosts werden nicht verändert.
Den Host identifizieren
In diesem Schritt untersuchen Sie den Hostnamen und die lokalen Namenseinträge, anhand derer Programme diesen Rechner identifizieren können.
Wechseln Sie in den Arbeitsbereich des Labs:
cd /home/labex/project/network-lab
Geben Sie den aktuellen Hostnamen aus:
hostname
Zeigen Sie die statische, temporäre und vom Betriebssystem erkannte Identität an, die systemd bekannt ist:
hostnamectl
Static hostname bezeichnet den konfigurierten Namen. Auf Cloud-Trainingsmaschinen kann der temporäre Name beim Systemstart vergeben werden.
Untersuchen Sie die lokalen Host-Zuordnungen:
cat /etc/hosts
Die Loopback-Namen localhost, 127.0.0.1 und ::1 verweisen auf denselben Host, ohne eine externe Netzwerkverbindung zu benötigen. Zeigen Sie die zugewiesenen IP-Adressen des Hosts in kompakter Form an:
hostname -I
Speichern Sie den Hostnamen und die Adressliste:
printf 'hostname=%s\naddresses=%s\n' "$(hostname)" "$(hostname -I | xargs)" > host-identity.txt
cat host-identity.txt
Schnittstellen und IP-Adressen untersuchen
In diesem Schritt ermitteln Sie Netzwerkschnittstellen, Link-Status, IPv4-Adressen, Präfixe und den Gültigkeitsbereich von Adressen.
Verwenden Sie die kompakte Ansicht der Links:
ip -brief link
lo ist die Loopback-Schnittstelle. Eine weitere Schnittstelle, die häufig eth0 oder ens... heißt, verbindet die virtuelle Maschine mit ihrem Netzwerk. UP bedeutet, dass die Schnittstelle administrativ aktiviert ist.
Zeigen Sie die Adressen in kompakter Form an:
ip -brief address
Eine Adresse wie 192.0.2.10/24 kombiniert eine IPv4-Adresse mit einer Präfixlänge. Das Präfix beschreibt, welche führenden Bits das lokale Netzwerk kennzeichnen.
Untersuchen Sie die Loopback-Schnittstelle im Detail:
ip address show dev lo
Die IPv4-Adresse 127.0.0.1/8 hat den Gültigkeitsbereich scope host und ist daher nur innerhalb dieses Hosts gültig. Ermitteln Sie die Schnittstelle, die von der Standardroute verwendet wird:
primary_if=$(ip route show default | awk 'NR==1 {print $5}')
echo "Primary interface: $primary_if"
ip address show dev "$primary_if"
ifconfig ist ein älteres Schnittstellenwerkzeug, das noch in vorhandenen Runbooks und Anleitungen zur Fehlerbehebung vorkommt. Vergleichen Sie seine Ausgabe mit der modernen ip-Ausgabe, die Sie gerade untersucht haben:
ifconfig
Speichern Sie auch diese ältere Ansicht:
ifconfig > ifconfig-addresses.txt
Speichern Sie eine kompakte Momentaufnahme der Schnittstellen:
ip -brief address > interface-addresses.txt
cat interface-addresses.txt
Die Routing-Tabelle lesen
In diesem Schritt ermitteln Sie das Standard-Gateway und fragen Linux, welche Route für ein Ziel verwendet würde.
Zeigen Sie die Haupt-Routing-Tabelle an:
ip route
Verbundene Routen beschreiben direkt angeschlossene Netzwerke. Eine Zeile, die mit default via beginnt, wird verwendet, wenn keine spezifischere Route zutrifft.
Fragen Sie den Kernel, wie er ein öffentliches Ziel erreichen würde. Dieser Befehl meldet das ausgewählte Gateway, die Schnittstelle und die Quelladresse, ohne ein Paket zu senden:
ip route get 1.1.1.1
Ermitteln Sie das Standard-Gateway und die Schnittstelle:
gateway=$(ip route show default | awk 'NR==1 {print $3}')
primary_if=$(ip route show default | awk 'NR==1 {print $5}')
echo "Default gateway: $gateway via $primary_if"
Speichern Sie eine Zusammenfassung der Route:
printf 'gateway=%s\ninterface=%s\n' "$gateway" "$primary_if" > route-summary.txt
cat route-summary.txt
Die Netzwerk-Erreichbarkeit testen
In diesem Schritt verwenden Sie ping, um zunehmend weiter entfernte Grenzen zu testen. Dabei berücksichtigen Sie, dass manche Netzwerke Diagnosepakete blockieren.
Beginnen Sie mit dem Loopback-Test. Die Optionen -c 2 senden zwei Anfragen, und -W 2 wartet höchstens zwei Sekunden auf jede Antwort:
ping -c 2 -W 2 127.0.0.1
Ein erfolgreicher Loopback-Test bestätigt, dass der lokale IP-Stack antwortet. Rufen Sie anschließend das Standard-Gateway ab und testen Sie es:
gateway=$(ip route show default | awk 'NR==1 {print $3}')
ping -c 2 -W 2 "$gateway" || echo "The gateway does not answer ICMP echo requests"
Die Ersatzmeldung ist wichtig, da ein Router Datenverkehr weiterleiten, aber Ping-Anfragen ablehnen kann. Testen Sie eine öffentliche IP-Adresse, ohne DNS zu verwenden:
ping -c 2 -W 2 1.1.1.1 || echo "Public ICMP is blocked or unavailable"
Speichern Sie ein stabiles lokales Konnektivitätsergebnis, das nicht von externen Richtlinien abhängt:
ping -c 1 -W 2 127.0.0.1 > loopback-ping.txt
tail -n 2 loopback-ping.txt
Die Namensauflösung testen
In diesem Schritt untersuchen Sie die Resolver-Konfiguration und übersetzen Hostnamen in Adressen.
Zeigen Sie die Resolver-Datei an, die von standardmäßigen Linux-Anwendungen verwendet wird:
cat /etc/resolv.conf
Sie enthält häufig eine oder mehrere nameserver-Zeilen. Auf Hosts mit systemd-resolved kann die Adresse auf einen lokalen Stub-Resolver und nicht direkt auf einen externen DNS-Server verweisen.
Lösen Sie einen lokalen Namen über die vollständige Namensdienst-Konfiguration des Systems auf:
getent hosts localhost
getent folgt /etc/nsswitch.conf und kann daher /etc/hosts, DNS sowie weitere konfigurierte Quellen kombinieren. Lösen Sie einen externen Namen auf und fordern Sie IPv4-Socket-Adressen an:
getent ahostsv4 example.com
Wenn der Ping einer IP-Adresse erfolgreich ist, diese Abfrage jedoch fehlschlägt, sollten Sie die Resolver-Konfiguration oder die DNS-Erreichbarkeit untersuchen. Speichern Sie den ersten aufgelösten IPv4-Eintrag:
getent ahostsv4 example.com | head -n 1 > dns-result.txt
cat dns-result.txt
Einen offenen Port und eine HTTP-Antwort untersuchen
In diesem Schritt ordnen Sie einen offenen TCP-Socket dem zugehörigen Prozess zu und testen das Anwendungsprotokoll.
Der vorbereitete Demo-Dienst lauscht auf dem Loopback-Port 8088. Verwenden Sie ss, um offene TCP-Sockets zu untersuchen. Die Optionen -l, -t, -n und -p stehen für Listening-Sockets, TCP, numerische Adressen und Prozessinformationen:
sudo ss -ltnp | grep ':8088'
Achten Sie auf 127.0.0.1:8088. Die Bindung an das Loopback bedeutet, dass der Dienst nur von diesem Host aus erreichbar ist.
Überprüfen Sie den Prozess hinter dem Socket:
systemctl status labex-network-demo.service --no-pager
Verwenden Sie curl -i, um die HTTP-Antwort einschließlich Headern und Inhalt anzuzeigen:
curl -i http://127.0.0.1:8088/
Der HTTP-Status 200 OK bestätigt mehr als nur einen offenen Port: Die Anwendung hat eine HTTP-Anfrage angenommen und Inhalte zurückgegeben. Speichern Sie mit dem stillen Modus -s nur den Antwortinhalt:
cd /home/labex/project/network-lab
curl -s http://127.0.0.1:8088/ > http-response.html
grep 'network demo ready' http-response.html
Zugriff erhalten und UFW aktivieren
In diesem Schritt prüfen Sie den UFW-Status, erhalten den Remote-Verwaltungszugriff, erlauben den Port des Übungsdienstes und aktivieren die Firewall.
UFW ist eine Oberfläche für Linux-Paketfilterregeln. Prüfen Sie den aktuellen Zustand:
sudo ufw status verbose
Die Vorbereitung lässt UFW inaktiv und verwendet einen sauberen Regelsatz. Bevor Sie eine Host-Firewall aus der Ferne aktivieren, müssen Sie den benötigten Verwaltungsweg erlauben. Diese VM verwendet TCP-Port 22 für SSH:
sudo ufw allow 22/tcp
Erlauben Sie nun eingehenden TCP-Datenverkehr zum Port des Übungsdienstes:
sudo ufw allow 8088/tcp
Prüfen Sie die vorbereiteten Änderungen vor der Aktivierung:
sudo ufw show added
Aktivieren Sie UFW ohne interaktive Bestätigungsabfrage:
sudo ufw --force enable
Bestätigen Sie, dass die Firewall aktiv ist und beide Freigaben vorhanden sind:
sudo ufw status verbose
Der Dienst ist an die Loopback-Adresse gebunden. Testen Sie ihn daher nach der Firewall-Änderung lokal:
curl -fsS http://127.0.0.1:8088/
Speichern Sie den aktiven Status als überprüfbares Ergebnis:
cd /home/labex/project/network-lab
sudo ufw status verbose > firewall-status.txt
cat firewall-status.txt
Die Reihenfolge ist wichtig: Erhalten Sie zuerst den Verwaltungsweg, fügen Sie die benötigten Dienstregeln hinzu, aktivieren Sie die Firewall und prüfen Sie sofort Richtlinie und Erreichbarkeit der Anwendung. Produktionssysteme können einen anderen SSH-Port verwenden; bestätigen Sie deshalb den tatsächlichen Verwaltungsweg, statt Port 22 anzunehmen.
Zusammenfassung
Sie haben eine strukturierte Linux-Kette zur Netzwerkdiagnose durchlaufen: Host-Identität, Schnittstellen und IP-Adressen, Routenauswahl, Erreichbarkeit, Namensauflösung, offene Sockets und HTTP-Antwort. Dabei haben Sie gelernt, dass jede Ebene eine andere Frage beantwortet und ein Fehler an einer bestimmten Grenze den nächsten Untersuchungsschritt eingrenzt.
Außerdem haben Sie den UFW-Status geprüft und sicher eine eng gefasste Loopback-Regel verwaltet, ohne den Fernzugriff zu gefährden. Diese Vorgehensweisen helfen Ihnen dabei, Netzwerkdienste zu diagnostizieren und abzusichern, ohne weitreichende oder störende Änderungen vorzunehmen.



