# traceroute — Netzwerkpfad Hop für Hop analysieren

> Praxis-Guide zu traceroute und tracepath — Netzwerkpfade Hop für Hop verfolgen, Latenzen lokalisieren und Firewall-Sperren per TCP oder ICMP umgehen.

Source: https://www.jpkc.com/db/cheatsheets/networking/traceroute/

<!-- PROSE:intro -->
traceroute zeigt dir Schritt für Schritt, welchen Weg Pakete von deinem Rechner zu einem Ziel-Host nehmen – und wo Latenzen oder Paketverluste auftreten. Das Tool sendet Probes mit schrittweise steigendem TTL-Wert; jeder Router, der ein Paket verwirft, antwortet mit einer ICMP-Meldung und verrät so seine Adresse und Round-Trip-Zeit. So erkennst du auf einen Blick, ob ein Problem beim Internet-Provider, einem Transit-Router oder erst beim Ziel-Server liegt.
<!-- PROSE:intro:end -->

## Grundlegende Verwendung

`traceroute HOST` — Verfolgt den Weg zu einem Host mit UDP-Probes (Standard).

```bash
traceroute 8.8.8.8
```

`traceroute HOSTNAME` — Verfolgt den Weg zu einem Hostnamen mit DNS-Auflösung.

```bash
traceroute google.com
```

`traceroute -n HOST` — Nur numerische Ausgabe – keine Reverse-DNS-Auflösung. Deutlich schneller.

```bash
traceroute -n 8.8.8.8
```

`traceroute -q N HOST` — Legt die Anzahl der Probe-Pakete pro Hop fest (Standard: 3).

```bash
traceroute -q 1 8.8.8.8
```

`traceroute -w TIMEOUT HOST` — Setzt den Timeout in Sekunden für eine Antwort (Standard: 5).

```bash
traceroute -w 3 8.8.8.8
```

`traceroute -m MAX_TTL HOST` — Legt die maximale Hop-Anzahl fest (Standard: 30).

```bash
traceroute -m 20 8.8.8.8
```

`traceroute -f FIRST_TTL HOST` — Beginnt mit einem bestimmten TTL-Wert statt 1.

```bash
traceroute -f 5 8.8.8.8
```

## Probe-Methoden

`traceroute -I HOST` — Nutzt ICMP-Echo-Probes statt UDP. Funktioniert oft besser durch Firewalls.

```bash
sudo traceroute -I 8.8.8.8
```

`traceroute -T HOST` — Nutzt TCP-SYN-Probes. Gut für Traces durch Firewalls, die UDP/ICMP blocken.

```bash
sudo traceroute -T 8.8.8.8
```

`traceroute -T -p PORT HOST` — Nutzt TCP-SYN-Probes auf einem bestimmten Port.

```bash
sudo traceroute -T -p 443 8.8.8.8
```

`traceroute -U HOST` — Nutzt UDP-Probes (Standardmethode).

```bash
traceroute -U 8.8.8.8
```

`traceroute -p PORT HOST` — Legt den Zielport für UDP-Probes fest (Standard: 33434).

```bash
traceroute -p 53 8.8.8.8
```

## Erweiterte Optionen

`traceroute -s SOURCE HOST` — Setzt die Quell-IP-Adresse für ausgehende Probes.

```bash
traceroute -s 10.0.0.5 8.8.8.8
```

`traceroute -i INTERFACE HOST` — Nutzt ein bestimmtes Netzwerk-Interface.

```bash
traceroute -i eth0 8.8.8.8
```

`traceroute -z PAUSE HOST` — Legt die Pause zwischen Probes in Millisekunden fest.

```bash
traceroute -z 50 8.8.8.8
```

`traceroute -A HOST` — Zeigt AS-Nummern (Autonomous System) an jedem Hop.

```bash
traceroute -A 8.8.8.8
```

`traceroute -e HOST` — Zeigt ICMP-Erweiterungen (MPLS-Labels usw.).

```bash
traceroute -e 8.8.8.8
```

`traceroute -6 HOST` — Erzwingt einen IPv6-Traceroute.

```bash
traceroute -6 google.com
```

`traceroute6 HOST` — IPv6-Traceroute-Befehl (Alias auf vielen Systemen).

```bash
traceroute6 google.com
```

## tracepath (ohne Root-Rechte)

`tracepath HOST` — Verfolgt den Pfad zu einem Host und ermittelt die Path-MTU. Ohne Root-Rechte.

```bash
tracepath 8.8.8.8
```

`tracepath -n HOST` — Nur numerische Ausgabe – keine DNS-Auflösung.

```bash
tracepath -n 8.8.8.8
```

`tracepath -b HOST` — Zeigt sowohl Hostname als auch IP-Adresse.

```bash
tracepath -b 8.8.8.8
```

`tracepath -m MAX_HOPS HOST` — Legt die maximale Hop-Anzahl fest (Standard: 30).

```bash
tracepath -m 20 8.8.8.8
```

`tracepath -l PACKET_LEN HOST` — Setzt die anfängliche Paketlänge für die MTU-Erkennung.

```bash
tracepath -l 1500 8.8.8.8
```

`tracepath -p PORT HOST` — Legt den Zielport fest.

```bash
tracepath -p 443 8.8.8.8
```

`tracepath -4 HOST` — Erzwingt IPv4.

```bash
tracepath -4 google.com
```

`tracepath -6 HOST` — Erzwingt IPv6.

```bash
tracepath -6 google.com
```

## Ausgabe verstehen

` 1  192.168.1.1  1.234 ms  0.987 ms  1.102 ms` — Normaler Hop: Hop-Nummer, Router-IP und drei Round-Trip-Zeiten.

` 5  * * *` — Keine Antwort von diesem Hop. Der Router blockiert möglicherweise ICMP/UDP oder hat keine Rückroute.

` 3  10.0.0.1  2.5 ms !N  * *` — !N = Netzwerk nicht erreichbar. Weitere Codes: !H (Host), !P (Protokoll), !F (Fragmentierung erforderlich).

`Resume: pmtu 1500` — tracepath-Ausgabe: die ermittelte Path-MTU zum Ziel.

## Typische Anwendungsfälle

`traceroute -n -q 1 -w 2 HOST` — Schneller Traceroute: kein DNS, eine Probe pro Hop, 2 Sekunden Timeout.

```bash
traceroute -n -q 1 -w 2 8.8.8.8
```

`sudo traceroute -I -n HOST` — ICMP-Traceroute ohne DNS – zuverlässigste Methode durch Firewalls.

```bash
sudo traceroute -I -n 8.8.8.8
```

`sudo traceroute -T -p 443 -n HOST` — TCP-Traceroute auf dem HTTPS-Port – funktioniert durch die meisten Firewalls.

```bash
sudo traceroute -T -p 443 -n 8.8.8.8
```

`traceroute HOST | awk '{print $1, $2}'` — Extrahiert nur Hop-Nummern und IPs.

```bash
traceroute -n 8.8.8.8 | awk '{print $1, $2}'
```

<!-- PROSE:outro -->
## Fazit

Für die meisten Verbindungsprobleme reicht `traceroute -n` als erster Blick – du siehst sofort, wo der Weg endet oder wo Latenzen springen. Wenn Firewalls UDP-Probes blocken, wechselst du einfach zu `-I` (ICMP) oder `-T -p 443` (TCP). Für dauerhafte Überwachung löst `mtr` traceroute sinnvoll ab.

## Weiterführende Links

- [Traceroute – Wikipedia](https://de.wikipedia.org/wiki/Traceroute) – Hintergrund und Funktionsweise
- [traceroute(8) – Manpage](https://linux.die.net/man/8/traceroute) – alle Optionen im Überblick (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [mtr](https://www.jpkc.com/db/cheatsheets/networking/mtr/) – kombiniert traceroute und ping für kontinuierliches Netzwerk-Monitoring
- [ping](https://www.jpkc.com/db/cheatsheets/networking/ping/) – prüft die Erreichbarkeit eines Hosts und misst die Round-Trip-Zeit
- [dig](https://www.jpkc.com/db/cheatsheets/networking/dig/) – DNS-Auflösung prüfen, wenn Hostnamen nicht korrekt aufgelöst werden

