2022-11-18 02:25 Temps de lecture : 10 min

6 Utilitaire Linux pour tester la connectivité réseau

Comment s'assurer de la communication entre deux éléments d'un réseau ?

Pour un administrateur système, vérifier la connectivité est une tâche fréquente, souvent nécessaire pour résoudre des problèmes réseau. Cela peut impliquer de diagnostiquer pourquoi une application ne parvient pas à se connecter à un service back-end, d'investiguer l'incapacité de récupérer des données depuis une URL externe, ou de simplement s'assurer qu'un flux est bien ouvert.

Heureusement, divers outils et commandes sont disponibles pour faciliter ces vérifications. Ces méthodes, testées sous CentOS, devraient également fonctionner sur d'autres distributions Linux.

Découvrons-les ensemble...

Telnet

Telnet reste une commande très utilisée pour tester la connectivité de base entre serveurs, ou d'un serveur vers l'adresse IP d'un autre appareil du réseau. Sa syntaxe est simple.

telnet $adresse_IP_destination $PORT

Par exemple, pour tester la connexion au port 8080 sur l'adresse IP 10.0.0.1, la commande serait :

telnet 10.0.0.1 8080

Si la connexion est établie avec succès, vous devriez voir un message indiquant que la connexion est réussie.

Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.

Important : Si vous rencontrez un message "commande introuvable" lors de l'utilisation de telnet, vous devez d'abord installer cet utilitaire.

Bien que telnet soit utile dans de nombreuses situations, d'autres alternatives existent si vous recherchez une solution différente.

Ncat ou nc

Ncat, aussi connu sous le nom de nc, est un outil réseau très puissant offrant de nombreuses fonctionnalités comme établir et accepter des connexions, exécuter des commandes à distance, lire et écrire des données, et bien plus. Il supporte à la fois IPv4 et IPv6.

Pour réaliser un test simple et vérifier si un port est ouvert, vous pouvez utiliser la commande suivante :

nc -vz $NOM_HOTE $PORT

Prenons l'exemple du port 443 sur le site toptips.fr.com :

[[email protected] ~]# nc -vz toptips.fr.com 443
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 104.25.133.107:443.
Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
[[email protected] ~]#

Comme mentionné, nc peut aussi être utilisé pour créer une connexion et écouter sur un port spécifié. C'est particulièrement utile lorsque aucun service n'est en cours d'exécution, mais que vous souhaitez vous assurer que la connectivité est possible.

Pour démarrer l'écoute sur un port :

nc -l $NUMERO_PORT

Cela mettra en écoute le port spécifié. Si ncat n'est pas déjà installé, utilisez la commande `yum install nc` sur les systèmes CentOS/RHEL.

Wget

Wget est une commande très pratique pour télécharger ou tester les protocoles HTTP, HTTPS et FTP. Il est particulièrement utile pour les ingénieurs web et tous ceux qui travaillent régulièrement avec des problématiques liées au web. Utiliser wget pour tester est simple :

wget $URL

Voici un exemple avec tools.toptips.fr.com :

[[email protected] ~]# wget tools.toptips.fr.com
--2019-05-09 20:40:01--  http://tools.toptips.fr.com/
Resolving tools.toptips.fr.com (tools.toptips.fr.com)... 104.25.134.107, 104.25.133.107, 2606:4700:20::6819:866b, ...
Connecting to tools.toptips.fr.com (tools.toptips.fr.com)|104.25.134.107|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://tools.toptips.fr.com/ [following]
--2019-05-09 20:40:01--  https://tools.toptips.fr.com/
Connecting to tools.toptips.fr.com (tools.toptips.fr.com)|104.25.134.107|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: 'index.html.2'

    [ <=>                                                                                                                                  ] 15,139      --.-K/s   in 0.001s  

2019-05-09 20:40:02 (12.8 MB/s) - 'index.html.2' saved [15139]

[[email protected] ~]#

Si le message "connecté" apparaît, cela signifie qu'il n'y a pas de problème de connectivité.

Consultez des exemples de commandes wget fréquemment utilisées pour en savoir plus.

Curl

Curl est un outil aux multiples usages. Saviez-vous qu'il est possible de faire un telnet en utilisant curl ? C'est désormais chose connue !

curl -v telnet://$IP:$PORT

Voici un exemple concret :

[[email protected] ~]# curl -v telnet://chandan.io:443
* About to connect() to chandan.io port 443 (#0)
*   Trying 104.31.68.106...
* Connected to chandan.io (104.31.68.106) port 443 (#0)

En cas de problème avec le port d'écoute ou le pare-feu, vous verrez le message "trying..."

[[email protected] ~]# curl -v telnet://chandan.io:4434
* About to connect() to chandan.io port 4434 (#0)
*   Trying 104.31.68.106...

Curl permet aussi de télécharger des données et prend en charge de nombreux protocoles comme HTTP, HTTPS, FTP, IMAP, LDAP, POP3, SCP, SFTP, GOPHER et bien d'autres.

Nmap

Nmap est un outil populaire doté de centaines de fonctionnalités, souvent considéré comme un outil de sécurité. nmap permet de tester un seul port ou une plage d'adresses IP.

Pour tester un port spécifique :

nmap -p $PORT $IP

Un exemple de test du port 443 sur siterelic.com :

[[email protected] ~]# nmap -p 443 siterelic.com
Starting Nmap 7.70 ( https://nmap.org ) at 2019-05-10 06:55 UTC
Nmap scan report for siterelic.com (104.27.174.50)
Host is up (0.0079s latency).
Other addresses for siterelic.com (not scanned): 104.27.175.50 2606:4700:30::681b:ae32 2606:4700:30::681b:af32

PORT    STATE SERVICE
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 0.13 seconds
[[email protected] ~]#

Observez la colonne "STATE". Si la valeur est "open", la connexion est établie. Si la valeur est "filtered", la connectivité n'est pas possible.

Ping

L'une des commandes les plus connues est ping. Elle sert à vérifier si un hôte distant répond aux requêtes ICMP ECHO_REQUEST. Attention, cela peut ne pas donner de résultats précis si ICMP est bloqué par le pare-feu du réseau distant. Si ce n'est pas le cas, vous pouvez pinger un point de terminaison réseau IPv4 ou IPv6 de la manière suivante :

ping $adresse_ip
ping $url

Exemple de résultat de ping réussi vers toptips.fr.com :

[email protected] ~ % ping toptips.fr.com
PING toptips.fr.com (104.27.119.115): 56 data bytes
64 bytes from 104.27.119.115: icmp_seq=0 ttl=53 time=7.944 ms
64 bytes from 104.27.119.115: icmp_seq=1 ttl=53 time=8.870 ms

Exemple d'échec avec une IP locale :

[email protected] ~ % ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

Pour les points de terminaison prenant en charge IPv6, utilisez la commande ping6 :

[email protected] ~ % ping6 toptips.fr.com
PING6(56=40+8+8 bytes) 2a01:4b00:88e4:8700:d8ca:bf50:159c:2a1d --> 2606:4700:20::681b:7673
16 bytes from 2606:4700:20::681b:7673, icmp_seq=0 hlim=250 time=8.650 ms
16 bytes from 2606:4700:20::681b:7673, icmp_seq=1 hlim=250 time=8.738 ms

Si vous avez besoin d'effectuer un ping à distance sur internet, vous pouvez utiliser un outil de ping en ligne.

Conclusion

Telnet est progressivement délaissé dans les dernières versions de Linux. Fort heureusement, des alternatives comme celles présentées ici existent.

Si vous débutez sous Linux et que vous cherchez à apprendre, un cours Udemy peut être un bon point de départ.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.