# ping — Netzwerk-Erreichbarkeit per ICMP prüfen

> Praxis-Guide zu ping — Netzwerkerreichbarkeit testen, Paketverlust messen und Laufzeiten per ICMP analysieren; mit Beispielen für alle Anwendungsfälle.

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

<!-- PROSE:intro -->
ping ist das erste Werkzeug, das du greifst, wenn ein Server nicht antwortet: Mit einem einfachen Befehl prüfst du, ob ein Host im Netz erreichbar ist, wie hoch die Umlaufzeit (RTT) ist und ob Pakete verloren gehen. Das Tool sendet ICMP-Echo-Anfragen und wertet die Antworten aus – von der Schnelldiagnose über die MTU-Pfaderkennung bis zum automatisierten Monitoring-Skript.
<!-- PROSE:intro:end -->

## Grundlegende Verwendung

`ping HOST` — Pingt einen Host dauerhaft (bis Ctrl+C). Zeigt die RTT für jedes Paket.

```bash
ping 8.8.8.8
```

`ping HOSTNAME` — Pingt einen Hostnamen. Die DNS-Auflösung erfolgt zuerst.

```bash
ping google.com
```

`ping -c COUNT HOST` — Sendet eine bestimmte Anzahl von Paketen und beendet dann.

```bash
ping -c 5 192.168.1.1
```

`ping -c COUNT -q HOST` — Stille Ausgabe – zeigt am Ende nur die Zusammenfassungsstatistiken.

```bash
ping -c 10 -q 192.168.1.1
```

`ping -W TIMEOUT HOST` — Setzt den Timeout in Sekunden für jede Antwort. Nützlich bei langsamen Verbindungen.

```bash
ping -c 3 -W 5 192.168.1.1
```

`ping -w DEADLINE HOST` — Bricht nach DEADLINE Sekunden ab, unabhängig von gesendeten oder empfangenen Paketen.

```bash
ping -w 10 192.168.1.1
```

## Timing & Intervall

`ping -i INTERVAL HOST` — Setzt das Intervall zwischen Paketen in Sekunden (Standard: 1).

```bash
ping -i 0.5 192.168.1.1
```

`ping -f HOST` — Flood-Ping – sendet Pakete so schnell wie möglich. Erfordert Root. Gibt einen Punkt pro gesendetes und einen Rückschritt pro empfangenes Paket aus.

```bash
sudo ping -f 192.168.1.1
```

`ping -f -c COUNT HOST` — Flood-Ping mit begrenzter Paketanzahl.

```bash
sudo ping -f -c 1000 192.168.1.1
```

`ping -i 0.2 HOST` — Schneller Ping mit 200-ms-Intervall (erfordert Root für Intervalle < 0,2 s).

```bash
sudo ping -i 0.2 192.168.1.1
```

`ping -D HOST` — Gibt einen UNIX-Zeitstempel vor jeder Zeile aus.

```bash
ping -D 192.168.1.1
```

## Paketgröße & TTL

`ping -s SIZE HOST` — Setzt die Paketdatengröße in Bytes (Standard: 56, gesamt ICMP: 64 mit Header).

```bash
ping -s 1000 192.168.1.1
```

`ping -s 1472 -M do HOST` — Testet den Pfad-MTU. Sendet 1472 Bytes mit Do-not-Fragment-Flag (1472 + 28 Header = 1500 MTU).

```bash
ping -s 1472 -M do 192.168.1.1
```

`ping -t TTL HOST` — Setzt den IP-Time-to-Live-Wert.

```bash
ping -t 10 8.8.8.8
```

`ping -M do HOST` — Setzt das DF-Bit (Don't Fragment). Nützlich für die MTU-Erkennung.

```bash
ping -M do 192.168.1.1
```

`ping -M dont HOST` — Erlaubt Fragmentierung (Standard).

```bash
ping -M dont 192.168.1.1
```

`ping -p PATTERN HOST` — Füllt die Paketnutzlast mit einem Hex-Muster (nützlich zur Diagnose datenabhängiger Probleme).

```bash
ping -p ff 192.168.1.1
```

## Interface & Quelladresse

`ping -I INTERFACE HOST` — Verwendet ein bestimmtes Netzwerk-Interface.

```bash
ping -I eth0 192.168.1.1
```

`ping -I SOURCE_IP HOST` — Setzt eine bestimmte Quell-IP-Adresse.

```bash
ping -I 10.0.0.5 192.168.1.1
```

`ping -S SOURCE_IP HOST` — Setzt die Quelladresse (alternative Syntax auf manchen Systemen).

```bash
ping -S 10.0.0.5 192.168.1.1
```

## IPv6

`ping -6 HOST` — Erzwingt IPv6-Ping (ICMPv6).

```bash
ping -6 ::1
```

`ping6 HOST` — IPv6-Ping-Befehl (Alias auf vielen Systemen).

```bash
ping6 google.com
```

`ping -6 -I INTERFACE HOST` — Pingt eine IPv6-Link-Local-Adresse (erfordert Interface-Angabe).

```bash
ping -6 -I eth0 fe80::1
```

## DNS & Namensauflösung

`ping -n HOST` — Nur numerische Ausgabe – löst keine Hostnamen auf. Beschleunigt die Ausgabe.

```bash
ping -n 8.8.8.8
```

`ping -a HOST` — Akustischer Ping – gibt bei jeder empfangenen Antwort einen Ton aus.

```bash
ping -a 192.168.1.1
```

`ping -O HOST` — Meldet ausstehende (unbeantwortete) Pakete. Zeigt Timeouts explizit an.

```bash
ping -O 192.168.1.1
```

## Ausgabe & Statistiken

`ping -c COUNT HOST | tail -3` — Zeigt nur die Zusammenfassungsstatistiken.

```bash
ping -c 10 8.8.8.8 | tail -3
```

`ping -c 5 HOST 2>&1 | grep 'packet loss'` — Extrahiert nur die Zeile mit dem Paketverlust.

```bash
ping -c 5 8.8.8.8 2>&1 | grep 'packet loss'
```

`ping -v HOST` — Ausführliche Ausgabe. Zeigt ICMP-Pakete außer Echo-Antworten.

```bash
ping -v 192.168.1.1
```

`ping -c 1 -W 2 HOST > /dev/null 2>&1 && echo UP || echo DOWN` — Schneller Einzeiler zum Prüfen, ob ein Host erreichbar ist.

```bash
ping -c 1 -W 2 192.168.1.1 > /dev/null 2>&1 && echo UP || echo DOWN
```

## Typische Muster

`ping -c 100 HOST | tee ping.log` — Pingt und speichert die Ausgabe gleichzeitig in eine Datei.

```bash
ping -c 100 8.8.8.8 | tee ping.log
```

`for h in HOST1 HOST2 HOST3; do ping -c 1 -W 1 $h && echo "$h OK" || echo "$h FAIL"; done` — Pingt mehrere Hosts und meldet den Status jedes Einzelnen.

```bash
for h in 8.8.8.8 1.1.1.1 9.9.9.9; do ping -c 1 -W 1 $h > /dev/null 2>&1 && echo "$h OK" || echo "$h FAIL"; done
```

`ping -c 10 HOST | awk '/rtt/ {print $4}' | cut -d/ -f2` — Extrahiert die durchschnittliche RTT aus der Ping-Statistik.

```bash
ping -c 10 8.8.8.8 | awk '/rtt/ {print $4}' | cut -d/ -f2
```

`while ! ping -c 1 -W 1 HOST > /dev/null 2>&1; do sleep 1; done; echo 'Host is up!'` — Wartet, bis ein Host wieder erreichbar wird.

```bash
while ! ping -c 1 -W 1 192.168.1.1 > /dev/null 2>&1; do sleep 1; done; echo 'Host is up!'
```

`ping -c 4 -s 1472 -M do HOST` — MTU-Pfaderkennung: findet die maximale Paketgröße ohne Fragmentierung.

```bash
ping -c 4 -s 1472 -M do 192.168.1.1
```

## ping-Ausgabe lesen

`64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=12.3 ms` — Normale Antwort: 64 Bytes empfangen, Sequenznummer, TTL (verbleibende Hops), Umlaufzeit (RTT).

`Request timeout / Destination Host Unreachable` — Keine Antwort empfangen. Der Host ist möglicherweise nicht erreichbar, eine Firewall blockiert ICMP, oder es liegt ein Routing-Problem vor.

`rtt min/avg/max/mdev = 10.1/12.5/15.3/1.8 ms` — Zusammenfassungsstatistiken: Minimum, Durchschnitt, Maximum der RTT und Standardabweichung (Jitter).

`3 packets transmitted, 3 received, 0% packet loss` — Paketverlust-Zusammenfassung. 0 % = stabile Verbindung, >5 % = mögliches Problem.

`From 192.168.1.1 icmp_seq=1 Time to live exceeded` — TTL im Transit abgelaufen. Das Paket hat einen Router erreicht, aber die TTL ist auf 0 gefallen.

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

ping bleibt nach Jahrzehnten das erste Diagnosemittel im Netz-Troubleshooting: Wenn du RTT-Spitzen, Paketverluste oder ICMP-Blockaden per Firewall aufspüren willst, kommst du an ihm nicht vorbei. Für detailliertere Pfadanalysen greifst du anschließend zu `traceroute` oder `mtr`.

## Weiterführende Links

- [ping – Wikipedia](https://de.wikipedia.org/wiki/Ping_(Netzwerkwerkzeug)) – Funktionsweise und Geschichte des Tools
- [ICMP – Wikipedia](https://de.wikipedia.org/wiki/Internet_Control_Message_Protocol) – Grundlagen des ICMP-Protokolls hinter ping
- [ping(8) – Linux man page](https://linux.die.net/man/8/ping) – alle Optionen im Überblick (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [traceroute](https://www.jpkc.com/db/cheatsheets/networking/traceroute/) – Netzwerkpfad zum Ziel-Host Hop für Hop verfolgen
- [mtr](https://www.jpkc.com/db/cheatsheets/networking/mtr/) – Ping und Traceroute kombiniert für kontinuierliches Monitoring
- [dig](https://www.jpkc.com/db/cheatsheets/networking/dig/) – DNS-Auflösung prüfen, bevor du die Erreichbarkeit testest

