Android

Comment vérifier les ports d'écoute sous Linux (ports utilisés)

L'audio de votre PC vers votre chaine Hifi ou ampli home cinéma

L'audio de votre PC vers votre chaine Hifi ou ampli home cinéma

Table des matières:

Anonim

Lors du dépannage de la connectivité réseau ou de problèmes spécifiques à une application, l'une des premières choses à vérifier doit être quels ports sont réellement utilisés sur votre système et quelle application écoute sur un port spécifique.

Cet article explique comment savoir quels services écoutent sur quels ports à l'aide des commandes netstat , ss et lsof . Les instructions s'appliquent à tous les systèmes d'exploitation Linux et Unix comme macOS.

Qu'est-ce que le port d'écoute

Le port réseau est identifié par son numéro, l'adresse IP associée et le type de protocole de communication tel que TCP ou UDP.

Le port d'écoute est un port réseau sur lequel une application ou un processus écoute, agissant comme un point de terminaison de communication.

Chaque port d'écoute peut être ouvert ou fermé (filtré) à l'aide d'un pare-feu. De manière générale, un port ouvert est un port réseau qui accepte les paquets entrants provenant d'emplacements distants.

Vous ne pouvez pas avoir deux services écoutant le même port sur la même adresse IP.

Par exemple, si vous exécutez un serveur Web Apache qui écoute sur les ports 80 et 443 et que vous essayez d'installer Nginx, la version ultérieure ne démarrera pas car les ports HTTP et HTTPS sont déjà utilisés.

Vérifiez les ports d'écoute avec netstat

netstat est un outil en ligne de commande qui peut fournir des informations sur les connexions réseau.

Pour répertorier tous les ports TCP ou UDP écoutés, y compris les services utilisant les ports et l'état du socket, utilisez la commande suivante:

sudo netstat -tunlp

Les options utilisées dans cette commande ont la signification suivante:

  • -t - Affiche les ports TCP. -u - Affiche les ports UDP. -n - Affiche les adresses numériques au lieu de résoudre les hôtes. -l - Affiche uniquement les ports d'écoute. -p - Affiche le PID et le nom du processus de l'auditeur. Ces informations ne s'affichent que si vous exécutez la commande en tant qu'utilisateur root ou sudo.

La sortie ressemblera à ceci:

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 929/master tcp6 0 0:::3306:::* LISTEN 534/mysqld tcp6 0 0:::80:::* LISTEN 515/apache2 tcp6 0 0:::22:::* LISTEN 445/sshd tcp6 0 0:::25:::* LISTEN 929/master tcp6 0 0:::33060:::* LISTEN 534/mysqld udp 0 0 0.0.0.0:68 0.0.0.0:* 966/dhclient

Les colonnes importantes de notre cas sont:

  • Proto - Le protocole utilisé par le socket. Local Address - L'adresse IP et le numéro de port sur lesquels le processus écoute. PID/Program name - Le PID et le nom du processus.

sudo netstat -tnlp | grep:22

La sortie montre que sur cette machine le port 22 est utilisé par le serveur SSH:

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 445/sshd tcp6 0 0:::22:::* LISTEN 445/sshd

Si la sortie est vide, cela signifie que rien n'écoute sur le port.

Vous pouvez également filtrer la liste en fonction de critères, par exemple, PID, protocole, état, etc.

netstat est obsolète et remplacé par ss et ip , mais il s'agit toujours des commandes les plus utilisées pour vérifier les connexions réseau.

Vérifiez les ports d'écoute avec ss

ss est le nouveau netstat . Il manque certaines des fonctionnalités de netstat mais expose plus d'états TCP et il est légèrement plus rapide. Les options de commande sont généralement les mêmes, donc la transition de netstat à ss n'est pas difficile.

Pour obtenir une liste de tous les ports d'écoute avec ss vous devez taper:

sudo ss -tunlp

La sortie est presque la même que celle rapportée par netstat :

State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd", pid=445, fd=3)) LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master", pid=929, fd=13)) LISTEN 0 128 *:3306 *:* users:(("mysqld", pid=534, fd=30)) LISTEN 0 128 *:80 *:* users:(("apache2", pid=765, fd=4), ("apache2", pid=764, fd=4), ("apache2", pid=515, fd=4)) LISTEN 0 128:22:* users:(("sshd", pid=445, fd=4)) LISTEN 0 100:25:* users:(("master", pid=929, fd=14)) LISTEN 0 70 *:33060 *:* users:(("mysqld", pid=534, fd=33))

Vérifiez les ports d'écoute avec lsof

lsof est un puissant utilitaire de ligne de commande qui fournit des informations sur les fichiers ouverts par les processus.

Sous Linux, tout est un fichier. Vous pouvez considérer un socket comme un fichier qui écrit sur le réseau.

Pour obtenir une liste de tous les ports TCP en écoute avec le type lsof :

sudo lsof -nP -iTCP -sTCP:LISTEN

Les options utilisées sont les suivantes:

  • -n - Ne convertit pas les numéros de port en noms de port. -p - Ne résout pas les noms d'hôte, affiche les adresses numériques. -iTCP -sTCP:LISTEN - Affiche uniquement les fichiers réseau avec l'état TCP LISTEN.

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 445 root 3u IPv4 16434 0t0 TCP *:22 (LISTEN) sshd 445 root 4u IPv6 16445 0t0 TCP *:22 (LISTEN) apache2 515 root 4u IPv6 16590 0t0 TCP *:80 (LISTEN) mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN) mysqld 534 mysql 33u IPv6 19973 0t0 TCP *:33060 (LISTEN) apache2 764 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) apache2 765 www-data 4u IPv6 16590 0t0 TCP *:80 (LISTEN) master 929 root 13u IPv4 19637 0t0 TCP *:25 (LISTEN) master 929 root 14u IPv6 19638 0t0 TCP *:25 (LISTEN)

La plupart des noms de colonnes de sortie sont explicites:

  • COMMAND , PID , USER - Le nom, le pid et l'utilisateur exécutant le programme associé au port. NAME - Le numéro de port.

Pour trouver quel processus écoute sur un port particulier, par exemple, le port 3306 vous devez utiliser:

sudo lsof -nP -iTCP:3306 -sTCP:LISTEN

La sortie montre que le port 3306 est utilisé par le serveur MySQL:

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 534 mysql 30u IPv6 17636 0t0 TCP *:3306 (LISTEN)

Pour plus d'informations, visitez la page de manuel lsof et lisez toutes les autres options puissantes de cet outil.

Conclusion

Nous vous avons montré plusieurs commandes que vous pouvez utiliser pour vérifier quels ports sont utilisés sur votre système et comment trouver quel processus écoute sur un port spécifique.

Terminal