15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
08.10.2024

“ping: command not found” — Comment installer et utiliser Ping dans Ubuntu

L’erreur `ping: command not found` apparaît dans Ubuntu lorsque le package iputils-ping est absent du système. C’est courant sur les installations minimales, les images VPS cloud et les conteneurs Docker où les utilitaires non essentiels sont supprimés pour réduire la taille de l’image. La solution est une seule commande `apt` : `sudo apt install iputils-ping`. Cet article explique pourquoi le package est manquant, comment l’installer correctement dans différents environnements Ubuntu, et comment utiliser `ping` efficacement pour les diagnostics réseau réels.

Ce que fait réellement la commande Ping

`ping` est un utilitaire de diagnostic réseau qui envoie des paquets ICMP Echo Request à un hôte cible et écoute les réponses ICMP Echo Reply. Le temps d’aller-retour (RTT) pour chaque paquet est mesuré en millisecondes, vous donnant un signal précis sur la latence réseau, l’accessibilité et la stabilité.

En coulisses, `ping` repose sur le protocole de contrôle Internet (ICMP), défini dans la RFC 792. Il fonctionne au niveau de la couche réseau (couche 3 du modèle OSI), ce qui signifie qu’il contourne entièrement TCP et UDP. Cela le rend utile pour isoler si un problème de connectivité se situe au niveau du routage IP plutôt qu’au niveau de l’application ou de la couche transport.

Cas d’utilisation principaux

  • Test d’accessibilité — Confirme si un hôte distant est actif et répond.
  • Mesure de latence — Rapporte le RTT en millisecondes ; un RTT élevé indique une congestion réseau ou un serveur géographiquement distant.
  • Détection de perte de paquets — Les réponses ICMP abandonnées indiquent des défauts matériels, des routeurs surchargés ou des liaisons instables.
  • Validation du chemin réseau — Utile pour vérifier qu’une route nouvellement configurée ou une règle de pare-feu ne bloque pas le trafic.
  • Détection de pare-feu et de filtrage ICMP — Si `ping` expire mais que les services TCP répondent, le pare-feu bloque probablement spécifiquement le trafic ICMP.
  • Vérification de la résolution DNS — Pinger un nom d’hôte (plutôt qu’une IP) confirme que la résolution DNS fonctionne correctement.

Pourquoi Ping est-il absent dans Ubuntu ?

L’installation complète du bureau Ubuntu inclut `ping` par défaut. Cependant, plusieurs scénarios courants résultent en un système où le binaire est absent :

  • Installations serveur minimales — L’ISO minimal d’Ubuntu Server omet délibérément de nombreux utilitaires pour réduire l’empreinte.
  • Images cloud et VPS — Les fournisseurs distribuent souvent des images Ubuntu allégées pour un provisionnement plus rapide. Si vous utilisez une instance VPS Hosting, vous pourriez rencontrer cela au premier démarrage.
  • Conteneurs Docker et LXC — Les images de base Ubuntu officielles (`ubuntu:22.04`, `ubuntu:24.04`) n’incluent pas `iputils-ping` par défaut.
  • Déploiements automatisés et pipelines CI/CD — Les environnements scriptés construits à partir d’images de base minimales manquent fréquemment d’outils réseau standard.
  • Environnements chroot et WSL — Windows Subsystem for Linux et les jails chroot peuvent également omettre le package.

Le binaire lui-même se trouve à `/bin/ping` (ou `/usr/bin/ping` sur les systèmes plus récents). Si ce chemin n’existe pas, le shell retourne `command not found`. Vous pouvez confirmer si le binaire est simplement manquant ou s’il se trouve dans un chemin non standard avec :

“`bash

which ping

or

type ping

“`

Si les deux ne retournent rien, le package n’est pas installé.

Comment installer Ping dans Ubuntu (étape par étape)

Étape 1 : Mettre à jour l’index des packages

Actualisez toujours l’index local des packages avant d’installer quoi que ce soit. Cela garantit que `apt` résout les dernières versions de packages disponibles et évite les erreurs de métadonnées obsolètes :

“`bash

sudo apt update

“`

Sur un Serveur Dédié ou un VPS fraîchement provisionné, cette étape est particulièrement importante car le cache des packages peut être obsolète de plusieurs jours ou semaines.

Étape 2 : Installer iputils-ping

Le binaire `ping` sur Ubuntu est fourni par le package iputils-ping, qui fait partie de la suite `iputils` plus large maintenue par la communauté du noyau Linux :

“`bash

sudo apt install iputils-ping

“`

Lorsque vous êtes invité avec `Do you want to continue? [Y/n]`, appuyez sur `Y` puis `Enter`. Le package est petit (généralement moins de 100 KB) et s’installe en quelques secondes.

Étape 3 : Vérifier l’installation

Confirmez que le binaire est maintenant disponible et fonctionnel :

“`bash

ping -c 4 google.com

“`

Le flag `-c 4` limite la sortie à 4 paquets. Une réponse réussie ressemble à ceci :

“`

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

“`

Vous souhaitez voir 0% de perte de paquets et des valeurs RTT cohérentes. Une forte variance dans le RTT (`mdev`) signale une gigue réseau, ce qui est important pour les applications sensibles à la latence.

Étape 4 : Vérifier le chemin du binaire installé et les permissions

“`bash

which ping

ls -la $(which ping)

“`

Sur Ubuntu 20.04 et versions ultérieures, `ping` ne nécessite plus le bit setuid. À la place, il utilise les capacités Linux (`cap_net_raw`) pour envoyer des paquets ICMP bruts sans privilèges root. Vous pouvez inspecter cela avec :

“`bash

getcap $(which ping)

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

“`

Il s’agit d’une amélioration de sécurité par rapport aux anciennes implémentations basées sur setuid.

Installer Ping dans un conteneur Docker

Si vous travaillez dans un conteneur Docker basé sur Ubuntu, le processus est identique mais vous devrez peut-être exécuter les commandes en tant que root (l’utilisateur par défaut dans la plupart des images de base) :

“`bash

apt update && apt install -y iputils-ping

“`

Le flag `-y` confirme automatiquement l’invite, ce qui est essentiel pour les builds Dockerfile non interactifs. Pour intégrer `ping` dans une image personnalisée, ajoutez-le à votre `Dockerfile` :

“`dockerfile

FROM ubuntu:22.04

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

“`

La ligne `rm -rf /var/lib/apt/lists/*` efface le cache des packages pour garder la couche d’image petite — une bonne pratique pour les images de conteneurs en production.

Installer Ping sur Ubuntu sans accès Internet (méthode hors ligne)

Sur les serveurs isolés ou les segments réseau isolés, `apt` ne peut pas atteindre les dépôts externes. Dans ce cas, vous avez deux options :

Option 1 : Transférer le package .deb manuellement

Sur une machine avec accès à Internet, téléchargez le package :

“`bash

apt download iputils-ping

“`

Transférez le fichier `.deb` vers la machine cible via `scp` ou une clé USB, puis installez-le :

“`bash

sudo dpkg -i iputils-ping_*.deb

“`

Option 2 : Utiliser un miroir local ou un dépôt APT interne

Configurez `/etc/apt/sources.list` pour pointer vers un miroir interne qui a le package en cache. C’est l’approche standard pour les environnements d’entreprise avec des contrôles de sortie stricts.

Outils alternatifs si Ping est bloqué ou indisponible

Le trafic ICMP est fréquemment bloqué par les pare-feux, les groupes de sécurité cloud ou les fournisseurs d’hébergement. Si `ping` expire systématiquement malgré l’accessibilité de l’hôte, envisagez ces alternatives :

OutilProtocoleUtilisation principaleCommande d’installation
`ping`ICMPAccessibilité de base et latence`apt install iputils-ping`
`traceroute`ICMP / UDPAnalyse du chemin saut par saut`apt install traceroute`
`mtr`ICMPChemin continu + statistiques de latence`apt install mtr`
`nmap`TCP/UDP/ICMPScan de ports, découverte d’hôtes`apt install nmap`
`curl` / `wget`HTTP/HTTPSAccessibilité au niveau de la couche application`apt install curl`
`nc` (netcat)TCP/UDPTest de connectivité par socket brut`apt install netcat-openbsd`
`hping3`TCP/UDP/ICMPCréation de paquets personnalisés`apt install hping3`
`fping`ICMPTest d’accessibilité d’hôtes en masse`apt install fping`

Point clé : `mtr` (Matt’s Traceroute) est sans doute plus utile que `ping` pour diagnostiquer les pertes de paquets intermittentes car il sonde en continu chaque saut dans le chemin et affiche les pourcentages de perte par saut en temps réel. Sur les serveurs en production — y compris ceux exécutant VPS avec cPanel — `mtr` devrait être votre premier outil lorsqu’un client signale des problèmes de connectivité sporadiques.

Erreurs courantes et comment les corriger

« permission denied » ou « operation not permitted »

Cela se produit lorsque la capacité `cap_net_raw` est manquante dans le binaire, ou lors de l’exécution dans un conteneur avec des capacités Linux restreintes :

“`bash

Check capabilities

getcap /usr/bin/ping

Restore if missing

sudo setcap cap_net_raw+ep /usr/bin/ping

“`

Dans Docker, vous devrez peut-être exécuter le conteneur avec `–cap-add NET_RAW` ou `–privileged` (utilisez `–privileged` uniquement dans des environnements de confiance et isolés) :

“`bash

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

“`

« unable to locate package iputils-ping »

Cela signifie que `apt` ne peut pas trouver le package dans sa liste de dépôts actuelle. Causes et solutions :

  1. Index de packages obsolète — Exécutez d’abord `sudo apt update`.
  2. sources.list corrompu — Vérifiez que `/etc/apt/sources.list` contient des entrées de dépôt Ubuntu valides.
  3. Conteneur minimal sans dépôt universe — Ajoutez le dépôt universe : `sudo add-apt-repository universe`.
  4. Pas de connectivité réseau — Testez avec `curl https://archive.ubuntu.com` pour confirmer que la machine peut atteindre les serveurs de packages d’Ubuntu.

« ping: connect: Network is unreachable »

Le binaire est installé, mais le système n’a pas de route réseau configurée. Il s’agit d’un problème de configuration réseau, pas d’un problème `ping`. Diagnostiquez avec :

“`bash

ip route show

ip addr show

“`

Si la route par défaut est manquante, ajoutez-la :

“`bash

sudo ip route add default via <gateway_ip>

“`

« Name or service not known » (échec DNS)

`ping google.com` résout le nom d’hôte avant d’envoyer des paquets ICMP. Si DNS est défaillant, vous verrez cette erreur. Testez en pingant directement une IP :

“`bash

ping -c 2 8.8.8.8

“`

Si cela réussit, le problème est spécifique au DNS. Vérifiez `/etc/resolv.conf` et assurez-vous qu’un serveur de noms valide est configuré.

Flags Ping essentiels que tout administrateur système devrait connaître

FlagDescriptionExemple
`-c <n>`Envoyer exactement n paquets puis s’arrêter`ping -c 5 8.8.8.8`
`-i <sec>`Intervalle entre les paquets (par défaut : 1s)`ping -i 0.2 8.8.8.8`
`-s <bytes>`Définir la taille de la charge utile du paquet (par défaut : 56 octets)`ping -s 1400 8.8.8.8`
`-t <ttl>`Définir la valeur IP Time-To-Live`ping -t 64 8.8.8.8`
`-W <sec>`Délai d’attente pour chaque réponse`ping -W 2 8.8.8.8`
`-q`Mode silencieux — afficher uniquement le résumé`ping -q -c 10 8.8.8.8`
`-f`Ping en rafale (nécessite root)`sudo ping -f 8.8.8.8`
`-4` / `-6`Forcer IPv4 ou IPv6`ping -6 ipv6.google.com`
`-D`Afficher l’horodatage avant chaque ligne`ping -D -c 5 8.8.8.8`
`-O`Signaler les réponses en attente (affiche la perte de paquets en ligne)`ping -O 8.8.8.8`

Conseil pratique : Utilisez `ping -s 1472 -M do <gateway>` pour tester la découverte du MTU de chemin. Le flag `-M do` définit le bit « Don’t Fragment » ; si le paquet dépasse le MTU du chemin, vous recevrez un message ICMP « Frag needed », ce qui est la méthode définitive pour diagnostiquer les trous noirs TCP liés au MTU — un problème courant sur les tunnels VPN et certaines configurations réseau cloud.

Considérations de sécurité : quand désactiver ICMP

Bien que `ping` soit indispensable pour les diagnostics, un ICMP non restreint sur les serveurs exposés au public présente des risques :

  • Attaques par inondation ICMP (ping flood) — Un trafic ICMP à volume élevé peut saturer la bande passante ou le CPU sur du matériel plus ancien.
  • Reconnaissance réseau — Répondre à ICMP révèle qu’un hôte est actif, ce qui aide les attaquants à cartographier votre infrastructure.
  • Attaques Smurf — Attaques ICMP broadcast amplifiées (largement atténuées sur les réseaux modernes mais toujours pertinentes sur les infrastructures héritées).

Pour les serveurs en production — en particulier ceux hébergeant des applications web ou des services Email Hosting — une politique raisonnable est d’autoriser ICMP uniquement depuis des IP de gestion de confiance, et de limiter le débit ou bloquer ICMP depuis l’internet public en utilisant `iptables` ou `nftables` :

“`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

“`

Cette approche préserve l’utilité diagnostique pour votre équipe tout en réduisant la surface d’attaque.

Ping dans le contexte des environnements serveur et d’hébergement

Le comportement de `ping` varie considérablement selon votre environnement d’hébergement :

Hébergement mutualisé : Sur les plans Hébergement Web Mutualisé, vous n’avez généralement pas accès au shell. Les diagnostics basés sur Ping doivent être effectués depuis une machine locale ou un service de surveillance externe ciblant l’IP de votre serveur.

VPS et serveurs dédiés : L’accès root complet signifie que vous pouvez installer `iputils-ping` et exécuter toutes les commandes de diagnostic librement. C’est là que `ping`, `mtr` et `traceroute` sont les plus précieux pour résoudre les problèmes de connectivité entre votre serveur et les fournisseurs en amont.

Serveurs GPU : Les environnements de calcul haute performance, tels que les nœuds GPU Hosting, exécutent souvent des images OS minimales pour maximiser l’allocation des ressources aux charges de travail de calcul. Ping et autres outils de diagnostic sont généralement absents et doivent être installés explicitement.

Conteneurs et orchestration : Dans les pods Kubernetes ou les services Docker Swarm, les outils de débogage réseau sont généralement absents des images de production. Le modèle recommandé est d’utiliser un conteneur sidecar de débogage dédié ou un pod de débogage éphémère (`kubectl debug`) plutôt que d’alourdir les images de production avec des utilitaires de diagnostic.

Matrice de décision de référence rapide

Utilisez cette matrice pour déterminer la bonne action en fonction de votre scénario spécifique :

ScénarioAction recommandée
Nouvelle installation de serveur Ubuntu, ping manquant`sudo apt update && sudo apt install iputils-ping`
Conteneur Docker, pas d’invite root`apt update && apt install -y iputils-ping`
Ping installé mais « permission denied »`sudo setcap cap_net_raw+ep /usr/bin/ping`
Ping expire, l’hôte est accessible via HTTPICMP bloqué par le pare-feu — utilisez `curl` ou `nc` à la place
La résolution DNS échoue lors du ping d’un nom d’hôteVérifiez `/etc/resolv.conf` ; testez avec `ping 8.8.8.8`
Besoin d’une analyse de chemin saut par sautInstallez et utilisez `mtr` plutôt que `ping`
Serveur hors ligne / isoléTéléchargez `.deb` sur une autre machine, transférez via `scp`, installez avec `dpkg -i`
ICMP bloqué chez le fournisseur cloudVérifiez les règles du groupe de sécurité / pare-feu ; autorisez ICMP type 8 entrant

Liste de contrôle technique : faire fonctionner Ping correctement

  • [ ] Exécutez `sudo apt update` avant de tenter l’installation
  • [ ] Installez avec `sudo apt install iputils-ping`
  • [ ] Confirmez le chemin du binaire : `which ping` devrait retourner `/usr/bin/ping`
  • [ ] Vérifiez les capacités : `getcap /usr/bin/ping` devrait afficher `cap_net_raw=ep`
  • [ ] Testez d’abord avec une IP (`ping -c 2 8.8.8.8`) avant de tester avec un nom d’hôte
  • [ ] Si le nom d’hôte échoue mais que l’IP réussit, diagnostiquez DNS via `/etc/resolv.conf`
  • [ ] Pour les conteneurs, ajoutez `–cap-add NET_RAW` si des erreurs de permission persistent
  • [ ] Sur les serveurs en production, appliquez la limitation de débit `iptables` pour ICMP public
  • [ ] Envisagez `mtr` pour les problèmes de connectivité persistants ou intermittents
  • [ ] Pour les environnements hors ligne, utilisez `apt download` sur une machine connectée et transférez le `.deb`

FAQ

Q : Pourquoi Ubuntu n’inclut-il pas ping par défaut ?

Les images minimales et serveur d’Ubuntu omettent `iputils-ping` pour réduire l’empreinte d’installation. Le package ne fait pas partie des dépendances requises du système de base, il est donc exclu sauf si explicitement demandé. Installez-le avec `sudo apt install iputils-ping`.

Q : Y a-t-il une différence entre `ping` et `ping6` dans Ubuntu ?

Sur les systèmes Ubuntu modernes (18.04 et ultérieurs), le binaire `ping` gère à la fois IPv4 et IPv6. Utilisez `ping -4` pour forcer IPv4 ou `ping -6` pour forcer IPv6. Le binaire autonome `ping6` est déprécié et n’est plus livré séparément dans les versions actuelles de `iputils-ping`.

Q : Pourquoi ping fonctionne-t-il en tant que root mais échoue pour les utilisateurs normaux ?

Cela indique que la capacité `cap_net_raw` est manquante dans le binaire. Exécutez `sudo setcap cap_net_raw+ep /usr/bin/ping` pour la restaurer. Alternativement, réinstaller le package (`sudo apt install –reinstall iputils-ping`) réinitialisera les capacités du binaire à leurs valeurs par défaut correctes.

Q : Puis-je utiliser ping pour tester si un port spécifique est ouvert ?

Non. `ping` utilise ICMP et n’a aucune notion de ports TCP/UDP. Pour tester si un port spécifique est ouvert, utilisez `nc -zv <host> <port>` (netcat) ou `nmap -p <port> <host>`. Un hôte peut être accessible via `ping` tout en ayant un port spécifique bloqué, ou vice versa.

Q : Que signifie un `mdev` (écart type) élevé dans la sortie de ping ?

`mdev` mesure la variance du RTT entre les paquets. Une valeur `mdev` élevée (par exemple, 20–50 ms sur une connexion avec un RTT moyen de 30 ms) indique une gigue réseau — des temps de livraison de paquets incohérents. Cela est particulièrement préjudiciable pour les applications en temps réel telles que la VoIP, la vidéoconférence et les jeux en ligne. Une gigue persistante pointe généralement vers une congestion sur un routeur intermédiaire, une interface réseau défaillante ou une politique QoS mal configurée.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer