vom DNS-Lookup bis zur Anwendungsschicht
Ein Server erreicht ploetzlich einen Zahlungsanbieter, eine externe API oder einen internen Dienst nicht mehr, und die Fehlermeldung Connection timed out sagt nichts ueber die Ursache. Dieser Artikel zeigt den vollstaendigen Diagnose-Pfad fuer eine fehlschlagende Netzwerkverbindung: DNS, Routing, Firewall, TCP-Handshake und Anwendungsschicht, jeweils mit dem passenden Befehl fuer jede Ebene.
Inhaltsverzeichnis
- 1. Warum ein Schichtmodell die Diagnose beschleunigt
- 2. Schicht 1: Loest der Name ueberhaupt korrekt auf?
- 3. Schicht 2: Routing und Erreichbarkeit mit ping
- 4. Schicht 3: Den Pfad mit traceroute und mtr sichtbar machen
- 5. Schicht 4: Firewall und Sicherheitsgruppen ausschliessen
- 6. Schicht 5: Den TCP-Handshake mit tcpdump beobachten
- 7. Schicht 6: TLS-Handshake und Zertifikatsprobleme
- 8. Schicht 7: Anwendungsschicht mit curl -v pruefen
- 9. Symptome und Schichten im Vergleich
- 10. Zusammenfassung
- 11. FAQ
1. Warum ein Schichtmodell die Diagnose beschleunigt
Die groesste Zeitverschwendung beim Debuggen einer Netzwerkverbindung ist, wahllos zwischen Werkzeugen zu springen, ohne eine feste Reihenfolge einzuhalten. Ein systematischer Ansatz arbeitet sich stattdessen von unten nach oben durch die Netzwerkschichten: erst Namensaufloesung, dann Erreichbarkeit auf IP-Ebene, dann Routing, dann Firewall-Regeln, dann der TCP-Handshake, dann TLS und zuletzt die Anwendungsschicht selbst. Jede Schicht schliesst eine ganze Klasse moeglicher Ursachen aus, bevor die naechste betrachtet wird.
Dieser Ansatz spart in der Praxis erhebliche Zeit, weil er verhindert, dass man beispielsweise minutenlang Anwendungslogs durchsucht, obwohl das eigentliche Problem bereits bei der DNS-Aufloesung liegt. Eine fehlschlagende Netzwerkverbindung hat immer eine konkrete Schicht, an der sie tatsaechlich scheitert, und der Trick besteht darin, diese Schicht moeglichst schnell einzugrenzen, statt Symptome auf der falschen Ebene zu behandeln.
Ein zusaetzlicher Vorteil des Schichtmodells: Es liefert ein gemeinsames Vokabular fuer das gesamte Team. Statt vager Aussagen wie es geht einfach nicht laesst sich eine fehlschlagende Netzwerkverbindung praezise als DNS-Problem, Firewall-Problem oder Anwendungsproblem benennen, was die Uebergabe zwischen Kollegen oder an einen externen Provider erheblich beschleunigt.
2. Schicht 1: Loest der Name ueberhaupt korrekt auf?
Der erste Diagnoseschritt bei jeder fehlschlagenden Netzwerkverbindung zu einem Hostnamen ist, die DNS-Aufloesung isoliert zu pruefen, bevor ueberhaupt ein Verbindungsversuch unternommen wird. dig api.example.com +short zeigt die aufgeloeste IP-Adresse direkt, waehrend dig api.example.com ohne +short zusaetzlich die Antwortzeit, den verwendeten Nameserver und die TTL zeigt. Eine leere Antwort oder ein SERVFAIL bedeutet, dass das Problem bereits hier liegt, lange bevor ein TCP-Paket ueberhaupt versendet wurde.
Ein haeufiger Sonderfall: Die Aufloesung funktioniert mit einem externen Nameserver wie 8.8.8.8, schlaegt aber mit dem im System konfigurierten Resolver fehl. dig @8.8.8.8 api.example.com gegen dig api.example.com zeigt diesen Unterschied direkt und deutet auf ein Problem mit dem lokalen oder internen DNS-Server hin, statt mit dem Zielserver selbst. Fuer die Netzwerkverbindung ist das ein entscheidender Unterschied, weil die Loesung dann bei der DNS-Konfiguration liegt, nicht beim Zieldienst.
# Layer 1: isolate DNS resolution before attempting any connection
dig api.example.com +short
# 203.0.113.42
# Compare system resolver against a known-good external one
dig @8.8.8.8 api.example.com +short
# 203.0.113.42
# Check /etc/resolv.conf if results differ
cat /etc/resolv.conf
3. Schicht 2: Routing und Erreichbarkeit mit ping
Loest der Name korrekt auf, folgt die Pruefung der grundlegenden Erreichbarkeit auf IP-Ebene. ping -c 4 203.0.113.42 testet, ob ICMP-Pakete das Ziel erreichen und eine Antwort zurueckkommt. Wichtig dabei: Viele moderne Firewalls blockieren ICMP gezielt, waehrend TCP-Verbindungen auf bestimmten Ports weiterhin funktionieren. Ein fehlgeschlagener Ping bedeutet deshalb nicht automatisch, dass die eigentliche Netzwerkverbindung unmoeglich ist, sondern muss im Kontext der restlichen Diagnose interpretiert werden.
Aussagekraeftiger fuer TCP-basierte Dienste ist nc -zv 203.0.113.42 443, das gezielt prueft, ob ein TCP-Handshake auf dem konkreten Zielport erfolgreich ist, unabhaengig von ICMP-Filterung. Diese Unterscheidung zwischen ICMP-Erreichbarkeit und TCP-Port-Erreichbarkeit ist einer der haeufigsten Stolpersteine bei der Diagnose von Netzwerkverbindungen, weil beide Tests unterschiedliche Aussagen treffen und leicht verwechselt werden.
4. Schicht 3: Den Pfad mit traceroute und mtr sichtbar machen
Schlaegt sowohl Ping als auch der TCP-Verbindungsversuch fehl, zeigt traceroute den Pfad der Pakete durch die Netzwerk-Hops bis zum Ziel und deckt auf, an welcher Stelle die Route abbricht. traceroute -T -p 443 203.0.113.42 nutzt TCP-Pakete statt der Standard-UDP-Pakete, was in Umgebungen mit striktem UDP-Filtering realistischere Ergebnisse liefert, weil damit dieselbe Protokollfamilie getestet wird wie bei der eigentlichen Netzwerkverbindung.
# Layer 3: trace the path using TCP instead of default UDP/ICMP
traceroute -T -p 443 203.0.113.42
# 1 gateway (10.0.0.1) 0.412 ms
# 2 10.20.0.1 1.203 ms
# 3 * * *
# 4 * * *
# 5 203.0.113.1 14.902 ms
# Hop 3-4 show no response — route breaks there or filters TCP probes
mtr 203.0.113.42 kombiniert Ping und Traceroute in einer kontinuierlichen, live aktualisierten Ansicht und zeigt Paketverlustraten pro Hop ueber die Zeit, statt nur einer einzelnen Momentaufnahme. Ein Hop mit konstant hoher Paketverlustrate, wo alle folgenden Hops normal funktionieren, deutet oft auf ein reines ICMP-Rate-Limiting an diesem Hop hin und ist kein echtes Problem fuer die Netzwerkverbindung. Ein Verlust, der sich bis zum Ziel durchzieht, ist dagegen ein ernstzunehmendes Signal.
5. Schicht 4: Firewall und Sicherheitsgruppen ausschliessen
Funktioniert das Routing bis zum Ziel, aber die Netzwerkverbindung bleibt trotzdem erfolglos, ist eine Firewall-Regel ein sehr wahrscheinlicher Kandidat, entweder lokal auf dem Quellserver, auf dem Zielserver oder in einer dazwischenliegenden Cloud-Sicherheitsgruppe. iptables -L -n -v beziehungsweise bei nftables nft list ruleset zeigt die lokal aktiven Regeln, wobei besonders auf DROP- und REJECT-Regeln fuer den betroffenen Port zu achten ist.
Bei Cloud-Umgebungen wie AWS, Hetzner Cloud oder Azure ist zusaetzlich die Sicherheitsgruppe beziehungsweise Cloud-Firewall auf Provider-Ebene zu pruefen, die vollstaendig unabhaengig von den lokalen iptables-Regeln existiert und Pakete bereits vor dem Erreichen des Servers verwerfen kann. Ein haeufiger Fehler bei der Diagnose einer Netzwerkverbindung: Nur die lokale Firewall zu pruefen und die vorgelagerte Cloud-Sicherheitsgruppe zu uebersehen, die den eigentlichen Blocker darstellt.
6. Schicht 5: Den TCP-Handshake mit tcpdump beobachten
tcpdump macht den TCP-Handshake direkt sichtbar und zeigt exakt, an welchem Punkt eine Netzwerkverbindung scheitert. tcpdump -i any -n host 203.0.113.42 and port 443 zeichnet alle Pakete zwischen dem lokalen Server und dem Ziel auf dem relevanten Port auf. Ein erfolgreicher Handshake zeigt die Sequenz SYN, SYN-ACK, ACK. Fehlt die Antwort SYN-ACK vollstaendig, wird das SYN-Paket entweder unterwegs verworfen oder der Zielserver antwortet nicht, was auf ein Firewall-Problem naeher am Ziel oder einen nicht lauschenden Dienst hindeutet.
# Layer 5: capture the TCP handshake for the specific connection
tcpdump -i any -n host 203.0.113.42 and port 443
# 14:22:01.102341 IP 10.0.0.5.51234 > 203.0.113.42.443: Flags [S], seq 123456
# (no SYN-ACK response follows within several seconds)
# Compare to a working connection for reference
tcpdump -i any -n host 203.0.113.42 and port 443
# 14:23:10.881233 IP 10.0.0.5.51240 > 203.0.113.42.443: Flags [S], seq 998877
# 14:23:10.902104 IP 203.0.113.42.443 > 10.0.0.5.51240: Flags [S.], seq 445566, ack 998878
# 14:23:10.902411 IP 10.0.0.5.51240 > 203.0.113.42.443: Flags [.], ack 445567
Ein Antwortpaket mit dem Flag [R] fuer Reset statt eines SYN-ACK bedeutet dagegen etwas anderes: Der Zielserver ist erreichbar und die Firewall laesst das Paket durch, aber es lauscht schlicht kein Dienst auf dem angefragten Port. Diese Unterscheidung zwischen keiner Antwort und einem expliziten Reset ist bei der Netzwerkverbindung-Diagnose extrem wertvoll, weil sie zwischen einem Firewall-Problem und einem falsch konfigurierten oder gestoppten Dienst unterscheidet.
7. Schicht 6: TLS-Handshake und Zertifikatsprobleme
Ist der TCP-Handshake erfolgreich, aber die Netzwerkverbindung scheitert dennoch, folgt bei verschluesselten Diensten der TLS-Handshake als naechste Verdachtsschicht. openssl s_client -connect api.example.com:443 -servername api.example.com baut manuell eine TLS-Verbindung auf und zeigt die vollstaendige Zertifikatskette, das Ablaufdatum und eventuelle Fehler bei der Validierung, etwa einen abgelaufenen oder nicht vertrauenswuerdigen Aussteller. Ein abgelaufenes Zertifikat oder ein fehlendes Zwischenzertifikat in der Kette ist eine der haeufigsten Ursachen fuer scheiternde TLS-basierte Verbindungen, die auf TCP-Ebene voellig unauffaellig aussehen.
8. Schicht 7: Anwendungsschicht mit curl -v pruefen
Funktionieren DNS, Routing, Firewall, TCP- und TLS-Handshake, aber die Netzwerkverbindung liefert trotzdem ein unerwartetes Ergebnis, liegt das Problem auf der Anwendungsschicht selbst. curl -v https://api.example.com/endpoint zeigt jede einzelne Phase des Requests inklusive gesendeter und empfangener HTTP-Header, was insbesondere bei Authentifizierungsfehlern, falschen Content-Types oder unerwarteten Redirect-Ketten unmittelbar sichtbar wird.
Die Option --resolve api.example.com:443:203.0.113.42 erzwingt eine bestimmte IP-Adresse fuer den Hostnamen, ohne DNS zu veraendern, was besonders bei Load-Balancer-Setups mit mehreren Backend-IPs hilft, ein einzelnes fehlerhaftes Backend gezielt zu isolieren und zu testen, waehrend die restliche Netzwerkverbindung-Infrastruktur unveraendert bleibt.
Ein weiterer haeufiger Sonderfall auf dieser Schicht ist eine Verbindung, die nach einer laengeren Idle-Zeit ploetzlich stirbt, obwohl der urspruengliche Handshake erfolgreich war. Ein dazwischenliegendes NAT-Gateway oder ein Load Balancer mit einem zu kurzen Idle-Timeout kann die Verbindungstabelle bereits verworfen haben, waehrend Client und Server die Netzwerkverbindung noch fuer offen halten, was sich erst beim naechsten Datenaustausch als Fehler zeigt.
9. Symptome und Schichten im Vergleich
Die folgende Tabelle ordnet typische Symptome der jeweiligen Netzwerkschicht sowie dem passenden Diagnosewerkzeug zu und dient als schneller Einstiegspunkt fuer die naechste fehlschlagende Netzwerkverbindung.
| Symptom | Betroffene Schicht | Werkzeug |
|---|---|---|
| Name loest nicht auf | DNS | dig |
| Ping zeitweise ok, TCP scheitert | Firewall / Filterung | nc -zv, iptables -L |
| Route bricht mitten im Pfad ab | Routing | traceroute -T, mtr |
| Kein SYN-ACK, keine Antwort | TCP-Handshake | tcpdump |
| Zertifikatsfehler, Handshake bricht ab | TLS | openssl s_client |
| 401, falscher Content, Redirect-Loop | Anwendung | curl -v |
| Verbindung nach Idle-Zeit tot | NAT / Load Balancer Timeout | ss -o state established |
| Nur von bestimmten Clients unerreichbar | Asymmetrisches Routing | traceroute von beiden Seiten |
Wer diese Tabelle als mentale Checkliste nutzt, arbeitet sich bei jeder neuen fehlschlagenden Netzwerkverbindung systematisch von unten nach oben durch die Schichten und vermeidet, wertvolle Zeit auf der falschen Ebene zu verlieren, etwa Anwendungslogs zu durchsuchen, waehrend das Problem tatsaechlich bei der DNS-Aufloesung liegt.
Asymmetrisches Routing, bei dem Hin- und Rueckweg der Pakete unterschiedliche Pfade nehmen, ist ein weiterer Sonderfall, der nur sichtbar wird, wenn traceroute von beiden Seiten der Netzwerkverbindung ausgefuehrt wird, statt sich auf eine einzige Blickrichtung zu verlassen.
Mironsoft
Netzwerk-Diagnose, Server-Konnektivitaet und Magento-Integrationen
Eine Verbindung schlaegt fehl und niemand weiss auf welcher Ebene?
Wir gehen mit DNS-, Routing-, Firewall- und Paketanalyse gezielt jeder fehlschlagenden Netzwerkverbindung auf den Grund, egal ob zu Zahlungsanbietern, externen APIs oder internen Diensten.
Netzwerk-Diagnose
Schicht fuer Schicht von DNS bis Anwendung mit Paketanalyse
Firewall-Audit
Lokale und Cloud-Sicherheitsgruppen konsistent pruefen und dokumentieren
Integration-Support
Schnelle Fehlersuche bei ausfallenden externen Schnittstellen
10. Zusammenfassung
Eine fehlschlagende Netzwerkverbindung lässt sich zuverlaessig eingrenzen, wenn man sich strikt an die Reihenfolge der Netzwerkschichten haelt: DNS mit dig, Erreichbarkeit mit ping und nc -zv, Routing mit traceroute -T und mtr, Firewall-Regeln lokal und in der Cloud, der TCP-Handshake mit tcpdump, TLS mit openssl s_client und schliesslich die Anwendungsschicht mit curl -v. Jede Schicht liefert ein eindeutiges Signal, das die naechsten moeglichen Ursachen entweder bestaetigt oder ausschliesst.
Der groesste Fehler beim Debuggen einer Netzwerkverbindung ist, Schichten zu ueberspringen oder in falscher Reihenfolge zu pruefen, etwa sofort Anwendungslogs zu durchsuchen, obwohl bereits die DNS-Aufloesung scheitert. Wer die hier beschriebene Reihenfolge einmal verinnerlicht hat, findet die tatsaechliche Ursache in der Regel innerhalb weniger Minuten statt Stunden.
Dieselbe Systematik laesst sich unabhaengig vom konkreten Zielsystem anwenden, egal ob die betroffene Netzwerkverbindung zu einem Zahlungsanbieter, einer internen Microservice-Schnittstelle oder einem externen SaaS-Dienst besteht.
Netzwerkverbindung debuggen — Das Wichtigste auf einen Blick
DNS zuerst pruefen
dig gegen System- und externen Resolver, um Namensaufloesung isoliert zu testen.
Routing und Firewall
traceroute -T zeigt abbrechende Routen, lokale und Cloud-Firewalls getrennt pruefen.
Handshake beobachten
tcpdump zeigt, ob SYN-ACK ausbleibt oder ein Reset zurueckkommt.
Anwendungsschicht
curl -v deckt Header-, Auth- und Redirect-Probleme nach erfolgreichem TCP/TLS auf.