15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
08.10.2024

„ping: command not found” — So installieren und verwenden Sie Ping in Ubuntu

Der Fehler `ping: command not found` erscheint in Ubuntu, wenn das Paket iputils-ping nicht auf dem System vorhanden ist. Dies ist häufig bei minimalen Installationen, Cloud-VPS-Images und Docker-Containern der Fall, bei denen nicht wesentliche Dienstprogramme entfernt wurden, um die Image-Größe zu reduzieren. Die Lösung ist ein einziger `apt`-Befehl: `sudo apt install iputils-ping`. Dieser Artikel erklärt, warum das Paket fehlt, wie es in verschiedenen Ubuntu-Umgebungen korrekt installiert wird und wie `ping` effektiv für reale Netzwerkdiagnosen eingesetzt werden kann.

Was der Ping-Befehl tatsächlich tut

`ping` ist ein Netzwerkdiagnoseprogramm, das ICMP Echo Request-Pakete an einen Zielhost sendet und auf ICMP Echo Reply-Antworten wartet. Die Roundtrip-Zeit (RTT) für jedes Paket wird in Millisekunden gemessen und liefert ein präzises Signal über Netzwerklatenz, Erreichbarkeit und Stabilität.

Im Hintergrund stützt sich `ping` auf das Internet Control Message Protocol (ICMP), das in RFC 792 definiert ist. Es arbeitet auf der Netzwerkschicht (Schicht 3 des OSI-Modells), was bedeutet, dass es TCP und UDP vollständig umgeht. Dies macht es nützlich, um festzustellen, ob ein Verbindungsproblem auf der IP-Routing-Ebene oder auf der Anwendungs- oder Transportschicht liegt.

Hauptanwendungsfälle

  • Erreichbarkeitstests — Bestätigt, ob ein Remote-Host aktiv ist und antwortet.
  • Latenzmessung — Gibt die RTT in Millisekunden an; erhöhte RTT deutet auf Netzwerküberlastung oder einen geografisch weit entfernten Server hin.
  • Paketverlusterkennung — Verworfene ICMP-Antworten weisen auf Hardwarefehler, überlastete Router oder instabile Verbindungen hin.
  • Netzwerkpfadvalidierung — Nützlich zur Überprüfung, ob eine neu konfigurierte Route oder Firewall-Regel den Datenverkehr nicht blockiert.
  • Firewall- und ICMP-Filterungserkennung — Wenn `ping` eine Zeitüberschreitung hat, aber TCP-Dienste antworten, blockiert die Firewall wahrscheinlich speziell ICMP-Datenverkehr.
  • DNS-Auflösungsüberprüfung — Das Anpingen eines Hostnamens (anstatt einer IP) bestätigt, dass die DNS-Auflösung korrekt funktioniert.

Warum fehlt Ping in Ubuntu?

Ubuntus vollständige Desktop-Installation enthält `ping` standardmäßig. Jedoch gibt es mehrere häufige Szenarien, die zu einem System führen, bei dem die Binärdatei fehlt:

  • Minimale Server-Installationen — Ubuntus minimale Server-ISO lässt absichtlich viele Dienstprogramme weg, um den Speicherbedarf gering zu halten.
  • Cloud- und VPS-Images — Anbieter verteilen oft abgespeckte Ubuntu-Images für eine schnellere Bereitstellung. Wenn Sie eine VPS Hosting-Instanz betreiben, können Sie dies beim ersten Start erleben.
  • Docker- und LXC-Container — Offizielle Ubuntu-Basis-Images (`ubuntu:22.04`, `ubuntu:24.04`) enthalten standardmäßig kein `iputils-ping`.
  • Automatisierte Deployments und CI/CD-Pipelines — Skriptbasierte Umgebungen, die aus minimalen Basis-Images erstellt wurden, verfügen häufig nicht über Standard-Netzwerktools.
  • Chroot-Umgebungen und WSL — Windows Subsystem for Linux und Chroot-Jails können das Paket ebenfalls weglassen.

Die Binärdatei selbst befindet sich unter `/bin/ping` (oder `/usr/bin/ping` auf neueren Systemen). Wenn dieser Pfad nicht existiert, gibt die Shell `command not found` zurück. Sie können überprüfen, ob die Binärdatei einfach fehlt oder sich in einem nicht standardmäßigen Pfad befindet, mit:

“`bash

which ping

or

type ping

“`

Wenn beide nichts zurückgeben, ist das Paket nicht installiert.

So installieren Sie Ping in Ubuntu (Schritt für Schritt)

Schritt 1: Paketindex aktualisieren

Aktualisieren Sie immer den lokalen Paketindex, bevor Sie etwas installieren. Dies stellt sicher, dass `apt` die neuesten verfügbaren Paketversionen auflöst und veraltete Metadatenfehler vermieden werden:

“`bash

sudo apt update

“`

Auf einem Dedicated Server oder einem neu bereitgestellten VPS ist dieser Schritt besonders wichtig, da der Paket-Cache möglicherweise Tage oder Wochen veraltet ist.

Schritt 2: iputils-ping installieren

Die `ping`-Binärdatei unter Ubuntu wird vom Paket iputils-ping bereitgestellt, das Teil der umfassenderen `iputils`-Suite ist, die von der Linux-Kernel-Community gepflegt wird:

“`bash

sudo apt install iputils-ping

“`

Wenn Sie mit `Do you want to continue? [Y/n]` aufgefordert werden, drücken Sie `Y` und `Enter`. Das Paket ist klein (typischerweise unter 100 KB) und wird in Sekunden installiert.

Schritt 3: Installation überprüfen

Bestätigen Sie, dass die Binärdatei jetzt verfügbar und funktionsfähig ist:

“`bash

ping -c 4 google.com

“`

Das Flag `-c 4` begrenzt die Ausgabe auf 4 Pakete. Eine erfolgreiche Antwort sieht so aus:

“`

PING google.com (142.250.185.46) 56(84) bytes of data.

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=1 ttl=118 time=12.4 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=2 ttl=118 time=11.9 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=3 ttl=118 time=12.1 ms

64 bytes from lga34s32-in-f14.1e100.net (142.250.185.46): icmp_seq=4 ttl=118 time=12.3 ms

— google.com ping statistics —

4 packets transmitted, 4 received, 0% packet loss, time 3004ms

rtt min/avg/max/mdev = 11.9/12.175/12.4/0.185 ms

“`

Sie möchten 0% Paketverlust und konsistente RTT-Werte sehen. Hohe Varianz in der RTT (`mdev`) signalisiert Netzwerk-Jitter, was für latenzsensitive Anwendungen wichtig ist.

Schritt 4: Installierten Binärpfad und Berechtigungen prüfen

“`bash

which ping

ls -la $(which ping)

“`

Auf Ubuntu 20.04 und später benötigt `ping` kein Setuid-Bit mehr. Stattdessen verwendet es Linux-Capabilities (`cap_net_raw`), um rohe ICMP-Pakete ohne Root-Rechte zu senden. Sie können dies überprüfen mit:

“`bash

getcap $(which ping)

Expected output: /usr/bin/ping cap_net_raw=ep

“`

Dies ist eine Sicherheitsverbesserung gegenüber älteren Setuid-basierten Implementierungen.

Ping in einem Docker-Container installieren

Wenn Sie innerhalb eines Ubuntu-basierten Docker-Containers arbeiten, ist der Prozess identisch, aber Sie müssen möglicherweise Befehle als Root ausführen (der Standardbenutzer in den meisten Basis-Images):

“`bash

apt update && apt install -y iputils-ping

“`

Das Flag `-y` bestätigt die Eingabeaufforderung automatisch, was für nicht-interaktive Dockerfile-Builds unerlässlich ist. Um `ping` in ein benutzerdefiniertes Image einzubinden, fügen Sie es zu Ihrer `Dockerfile` hinzu:

“`dockerfile

FROM ubuntu:22.04

RUN apt update && apt install -y iputils-ping && rm -rf /var/lib/apt/lists/*

“`

Die Zeile `rm -rf /var/lib/apt/lists/*` löscht den Paket-Cache, um die Image-Schicht klein zu halten — eine bewährte Methode für Produktions-Container-Images.

Ping auf Ubuntu ohne Internetzugang installieren (Offline-Methode)

Auf air-gapped Servern oder isolierten Netzwerksegmenten kann `apt` keine externen Repositories erreichen. In diesem Fall haben Sie zwei Möglichkeiten:

Option 1: Das .deb-Paket manuell übertragen

Laden Sie auf einem Rechner mit Internetzugang das Paket herunter:

“`bash

apt download iputils-ping

“`

Übertragen Sie die `.deb`-Datei über `scp` oder einen USB-Stick auf den Zielrechner und installieren Sie sie dann:

“`bash

sudo dpkg -i iputils-ping_*.deb

“`

Option 2: Einen lokalen Spiegel oder ein internes APT-Repository verwenden

Konfigurieren Sie `/etc/apt/sources.list` so, dass es auf einen internen Spiegel zeigt, der das Paket gecacht hat. Dies ist der Standardansatz für Unternehmensumgebungen mit strengen Egress-Kontrollen.

Alternative Tools, wenn Ping blockiert oder nicht verfügbar ist

ICMP-Datenverkehr wird häufig von Firewalls, Cloud-Sicherheitsgruppen oder Hosting-Anbietern blockiert. Wenn `ping` trotz erreichbarem Host kontinuierlich eine Zeitüberschreitung hat, ziehen Sie diese Alternativen in Betracht:

ToolProtokollHauptverwendungInstallationsbefehl
`ping`ICMPGrundlegende Erreichbarkeit und Latenz`apt install iputils-ping`
`traceroute`ICMP / UDPHop-für-Hop-Pfadanalyse`apt install traceroute`
`mtr`ICMPKontinuierlicher Pfad + Latenzstatistiken`apt install mtr`
`nmap`TCP/UDP/ICMPPort-Scanning, Host-Erkennung`apt install nmap`
`curl` / `wget`HTTP/HTTPSErreichbarkeit auf Anwendungsebene`apt install curl`
`nc` (netcat)TCP/UDPRohe Socket-Verbindungstests`apt install netcat-openbsd`
`hping3`TCP/UDP/ICMPBenutzerdefiniertes Paket-Crafting`apt install hping3`
`fping`ICMPMassenhafte Host-Erreichbarkeitstests`apt install fping`

Wichtige Erkenntnis: `mtr` (Matt's Traceroute) ist für die Diagnose von intermittierendem Paketverlust wohl nützlicher als `ping`, da es kontinuierlich jeden Hop im Pfad testet und Paketverlustprozentsätze pro Hop in Echtzeit anzeigt. Auf Produktionsservern — einschließlich solcher, die VPS mit cPanel betreiben — sollte `mtr` Ihr erstes Tool sein, wenn ein Kunde sporadische Verbindungsprobleme meldet.

Häufige Fehler und deren Behebung

"permission denied" oder "operation not permitted"

Dies tritt auf, wenn die Capability `cap_net_raw` in der Binärdatei fehlt oder wenn sie innerhalb eines Containers mit eingeschränkten Linux-Capabilities ausgeführt wird:

“`bash

Check capabilities

getcap /usr/bin/ping

Restore if missing

sudo setcap cap_net_raw+ep /usr/bin/ping

“`

Innerhalb von Docker müssen Sie den Container möglicherweise mit `–cap-add NET_RAW` oder `–privileged` ausführen (verwenden Sie `–privileged` nur in vertrauenswürdigen, isolierten Umgebungen):

“`bash

docker run –cap-add NET_RAW ubuntu:22.04 ping -c 2 8.8.8.8

“`

"unable to locate package iputils-ping"

Dies bedeutet, dass `apt` das Paket in seiner aktuellen Repository-Liste nicht finden kann. Ursachen und Lösungen:

  1. Veralteter Paketindex — Führen Sie zuerst `sudo apt update` aus.
  2. Fehlerhafte sources.list — Überprüfen Sie, ob `/etc/apt/sources.list` gültige Ubuntu-Repository-Einträge enthält.
  3. Minimaler Container ohne Universe-Repo — Fügen Sie das Universe-Repository hinzu: `sudo add-apt-repository universe`.
  4. Keine Netzwerkverbindung — Testen Sie mit `curl https://archive.ubuntu.com`, um zu bestätigen, dass der Rechner die Paketserver von Ubuntu erreichen kann.

"ping: connect: Network is unreachable"

Die Binärdatei ist installiert, aber das System hat keine konfigurierte Netzwerkroute. Dies ist ein Netzwerkkonfigurationsproblem, kein `ping`-Problem. Diagnose mit:

“`bash

ip route show

ip addr show

“`

Wenn die Standard-Route fehlt, fügen Sie sie hinzu:

“`bash

sudo ip route add default via <gateway_ip>

“`

"Name or service not known" (DNS-Fehler)

`ping google.com` löst den Hostnamen auf, bevor ICMP-Pakete gesendet werden. Wenn DNS defekt ist, wird dieser Fehler angezeigt. Testen Sie, indem Sie direkt eine IP anpingen:

“`bash

ping -c 2 8.8.8.8

“`

Wenn das erfolgreich ist, ist das Problem DNS-spezifisch. Überprüfen Sie `/etc/resolv.conf` und stellen Sie sicher, dass ein gültiger Nameserver konfiguriert ist.

Wichtige Ping-Flags, die jeder Sysadmin kennen sollte

FlagBeschreibungBeispiel
`-c <n>`Genau n Pakete senden, dann stoppen`ping -c 5 8.8.8.8`
`-i <sec>`Intervall zwischen Paketen (Standard: 1s)`ping -i 0.2 8.8.8.8`
`-s <bytes>`Paket-Payload-Größe festlegen (Standard: 56 Bytes)`ping -s 1400 8.8.8.8`
`-t <ttl>`IP Time-To-Live-Wert festlegen`ping -t 64 8.8.8.8`
`-W <sec>`Timeout beim Warten auf jede Antwort`ping -W 2 8.8.8.8`
`-q`Ruhiger Modus — nur Zusammenfassung anzeigen`ping -q -c 10 8.8.8.8`
`-f`Flood-Ping (erfordert Root)`sudo ping -f 8.8.8.8`
`-4` / `-6`IPv4 oder IPv6 erzwingen`ping -6 ipv6.google.com`
`-D`Zeitstempel vor jeder Zeile ausgeben`ping -D -c 5 8.8.8.8`
`-O`Ausstehende Antworten melden (zeigt Paketverlust inline)`ping -O 8.8.8.8`

Praktischer Tipp: Verwenden Sie `ping -s 1472 -M do <gateway>`, um die MTU-Pfaderkennung zu testen. Das Flag `-M do` setzt das „Don’t Fragment”-Bit; wenn das Paket die Pfad-MTU überschreitet, erhalten Sie eine „Frag needed”-ICMP-Nachricht, was die definitive Methode zur Diagnose von MTU-bedingten TCP-Black-Holes ist — ein häufiges Problem bei VPN-Tunneln und bestimmten Cloud-Netzwerkkonfigurationen.

Sicherheitsüberlegungen: Wann ICMP deaktiviert werden sollte

Obwohl `ping` für Diagnosen unverzichtbar ist, birgt uneingeschränktes ICMP auf öffentlich zugänglichen Servern Risiken:

  • ICMP-Flood-Angriffe (Ping-Flood) — Hochvolumiger ICMP-Datenverkehr kann die Bandbreite oder CPU auf älterer Hardware sättigen.
  • Netzwerk-Aufklärung — Das Antworten auf ICMP verrät, dass ein Host aktiv ist, was Angreifern hilft, Ihre Infrastruktur zu kartieren.
  • Smurf-Angriffe — Verstärkte ICMP-Broadcast-Angriffe (auf modernen Netzwerken weitgehend entschärft, aber auf Legacy-Infrastruktur noch relevant).

Für Produktionsserver — insbesondere solche, die Webanwendungen oder E-Mail-Hosting-Dienste betreiben — ist eine vernünftige Richtlinie, ICMP nur von vertrauenswürdigen Management-IPs zuzulassen und ICMP aus dem öffentlichen Internet mit `iptables` oder `nftables` zu begrenzen oder zu blockieren:

“`bash

Allow ICMP from a trusted management IP

sudo iptables -A INPUT -p icmp –icmp-type echo-request -s 203.0.113.10 -j ACCEPT

Rate-limit ICMP from all other sources (max 10 pings/second)

sudo iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 10/second -j ACCEPT

Drop remaining ICMP echo requests

sudo iptables -A INPUT -p icmp –icmp-type echo-request -j DROP

“`

Dieser Ansatz bewahrt den diagnostischen Nutzen für Ihr Team und reduziert gleichzeitig die Angriffsfläche.

Ping im Kontext von Server- und Hosting-Umgebungen

Das Verständnis des `ping`-Verhaltens variiert je nach Hosting-Umgebung erheblich:

Shared Hosting: Bei Shared Web Hosting-Plänen haben Sie in der Regel keinen Shell-Zugang. Ping-basierte Diagnosen müssen von einem lokalen Rechner oder einem externen Überwachungsdienst durchgeführt werden, der auf die IP Ihres Servers abzielt.

VPS und Dedicated Server: Vollständiger Root-Zugang bedeutet, dass Sie `iputils-ping` installieren und alle Diagnosebefehle frei ausführen können. Hier sind `ping`, `mtr` und `traceroute` am wertvollsten für die Fehlerbehebung bei der Konnektivität zwischen Ihrem Server und vorgelagerten Anbietern.

GPU-Server: Hochleistungs-Rechenumgebungen, wie GPU Hosting-Knoten, betreiben oft minimale OS-Images, um die Ressourcenzuweisung für Rechenworkloads zu maximieren. Ping und andere Diagnosetools fehlen routinemäßig und müssen explizit installiert werden.

Container und Orchestrierung: In Kubernetes-Pods oder Docker-Swarm-Diensten fehlen Netzwerk-Debugging-Tools typischerweise in Produktions-Images. Das empfohlene Muster ist die Verwendung eines dedizierten Debug-Sidecar-Containers oder eines ephemeren Debug-Pods (`kubectl debug`), anstatt Produktions-Images mit Diagnose-Dienstprogrammen aufzublähen.

Schnellreferenz-Entscheidungsmatrix

Verwenden Sie diese Matrix, um die richtige Aktion basierend auf Ihrem spezifischen Szenario zu bestimmen:

SzenarioEmpfohlene Aktion
Neue Ubuntu-Server-Installation, Ping fehlt`sudo apt update && sudo apt install iputils-ping`
Docker-Container, keine Root-Eingabeaufforderung`apt update && apt install -y iputils-ping`
Ping installiert, aber „permission denied”`sudo setcap cap_net_raw+ep /usr/bin/ping`
Ping-Zeitüberschreitung, Host über HTTP erreichbarICMP durch Firewall blockiert — verwenden Sie stattdessen `curl` oder `nc`
DNS-Auflösung schlägt beim Anpingen des Hostnamens fehlÜberprüfen Sie `/etc/resolv.conf`; testen Sie mit `ping 8.8.8.8`
Hop-für-Hop-Pfadanalyse benötigtInstallieren und verwenden Sie `mtr` anstatt `ping`
Offline / air-gapped Server`.deb` auf einem anderen Rechner herunterladen, über `scp` übertragen, mit `dpkg -i` installieren
ICMP beim Cloud-Anbieter blockiertSicherheitsgruppen-/Firewall-Regeln prüfen; ICMP-Typ 8 eingehend erlauben

Technische Checkliste: Ping korrekt zum Laufen bringen

  • [ ] `sudo apt update` vor dem Installationsversuch ausführen
  • [ ] Mit `sudo apt install iputils-ping` installieren
  • [ ] Binärpfad bestätigen: `which ping` sollte `/usr/bin/ping` zurückgeben
  • [ ] Capabilities überprüfen: `getcap /usr/bin/ping` sollte `cap_net_raw=ep` anzeigen
  • [ ] Zuerst mit IP testen (`ping -c 2 8.8.8.8`), bevor mit Hostnamen getestet wird
  • [ ] Wenn Hostname fehlschlägt, aber IP erfolgreich ist, DNS über `/etc/resolv.conf` diagnostizieren
  • [ ] Für Container `–cap-add NET_RAW` hinzufügen, wenn Berechtigungsfehler bestehen bleiben
  • [ ] Auf Produktionsservern `iptables`-Ratenbegrenzung für öffentliches ICMP anwenden
  • [ ] `mtr` für anhaltende oder intermittierende Verbindungsprobleme in Betracht ziehen
  • [ ] Für Offline-Umgebungen `apt download` auf einem verbundenen Rechner verwenden und das `.deb` übertragen

FAQ

F: Warum enthält Ubuntu Ping nicht standardmäßig?

Ubuntus minimale und Server-Images lassen `iputils-ping` weg, um den Installationsbedarf zu reduzieren. Das Paket ist kein Teil der erforderlichen Abhängigkeiten des Basissystems und wird daher ausgeschlossen, sofern es nicht explizit angefordert wird. Installieren Sie es mit `sudo apt install iputils-ping`.

F: Gibt es einen Unterschied zwischen `ping` und `ping6` in Ubuntu?

Auf modernen Ubuntu-Systemen (18.04 und später) verarbeitet die `ping`-Binärdatei sowohl IPv4 als auch IPv6. Verwenden Sie `ping -4`, um IPv4 zu erzwingen, oder `ping -6`, um IPv6 zu erzwingen. Die eigenständige `ping6`-Binärdatei ist veraltet und wird in aktuellen `iputils-ping`-Versionen nicht mehr separat ausgeliefert.

F: Warum funktioniert Ping als Root, schlägt aber für reguläre Benutzer fehl?

Dies zeigt an, dass die Capability `cap_net_raw` in der Binärdatei fehlt. Führen Sie `sudo setcap cap_net_raw+ep /usr/bin/ping` aus, um sie wiederherzustellen. Alternativ setzt die Neuinstallation des Pakets (`sudo apt install –reinstall iputils-ping`) die Capabilities der Binärdatei auf ihre korrekten Standardwerte zurück.

F: Kann ich Ping verwenden, um zu testen, ob ein bestimmter Port offen ist?

Nein. `ping` verwendet ICMP und hat kein Konzept von TCP/UDP-Ports. Um zu testen, ob ein bestimmter Port offen ist, verwenden Sie `nc -zv <host> <port>` (netcat) oder `nmap -p <port> <host>`. Ein Host kann über `ping` erreichbar sein, während ein bestimmter Port blockiert ist, oder umgekehrt.

F: Was bedeutet ein hoher `mdev`-Wert (Standardabweichung) in der Ping-Ausgabe?

`mdev` misst die Varianz der RTT über Pakete hinweg. Ein hoher `mdev`-Wert (z. B. 20–50 ms bei einer Verbindung mit durchschnittlich 30 ms RTT) deutet auf Netzwerk-Jitter hin — inkonsistente Paketlieferzeiten. Dies ist besonders schädlich für Echtzeit-Anwendungen wie VoIP, Videokonferenzen und Online-Gaming. Anhaltender Jitter weist typischerweise auf Überlastung an einem Zwischen-Router, eine fehlerhafte Netzwerkschnittstelle oder eine falsch konfigurierte QoS-Richtlinie hin.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen