Comment utiliser la commande ss sous Linux
Publié: 2022-01-29 La commande ss
est un remplacement moderne du classique netstat
. Vous pouvez l'utiliser sous Linux pour obtenir des statistiques sur vos connexions réseau. Voici comment travailler avec cet outil pratique.
La commande ss contre netstat
En remplacement de la commande obsolète netstat
, ss
vous donne des informations détaillées sur la façon dont votre ordinateur communique avec d'autres ordinateurs, réseaux et services.
ss
affiche des statistiques pour le protocole de contrôle de transmission (TCP), le protocole de datagramme utilisateur (UDP), Unix (interprocessus) et les sockets bruts. Les sockets bruts fonctionnent au niveau OSI du réseau, ce qui signifie que les en-têtes TCP et UDP doivent être gérés par le logiciel d'application, et non par la couche de transport. Les messages ICMP (Internet Control Message Protocol) et l'utilitaire ping utilisent tous deux des sockets bruts.
Utiliser SS
Vous n'avez pas besoin d'installer ss
, car il fait déjà partie d'une distribution Linux à jour. Sa sortie, cependant, peut être très longue - nous avons eu des résultats contenant plus de 630 lignes. Les résultats sont également très larges.
Pour cette raison, nous avons inclus des représentations textuelles des résultats que nous avons obtenus, car ils ne tiendraient pas dans une capture d'écran. Nous les avons coupés pour les rendre plus faciles à gérer.
Liste des connexions réseau
L'utilisation de ss
sans options de ligne de commande répertorie les sockets qui ne sont pas à l'écoute. C'est-à-dire qu'il répertorie les sockets qui ne sont pas à l'état d'écoute.
Pour voir cela, tapez ce qui suit :
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTA 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTA 0 0 * 35550 * 35551 ... u_str ESTA 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTA 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Les colonnes sont les suivantes :
- Netid : Le type de socket. Dans notre exemple, nous avons « u_str », un flux Unix, un « udp » et « icmp6 », un socket ICMP IP version 6. Vous pouvez trouver plus de descriptions des types de sockets Linux dans les pages de manuel Linux.
- État : L'état dans lequel se trouve le socket.
- Recv-Q : Le nombre de paquets reçus.
- Send-Q : Le nombre de paquets envoyés.
- Local Address:Port : L'adresse locale et le port (ou des valeurs équivalentes pour les sockets Unix).
- Peer Address:Port : L'adresse et le port distants (ou des valeurs équivalentes pour les sockets Unix).
Pour les sockets UDP, la colonne "State" est généralement vide. Pour les sockets TCP, il peut s'agir de l'un des éléments suivants :
- ÉCOUTEZ : côté serveur uniquement. Le socket attend une demande de connexion.
- SYN-SENT : côté client uniquement. Cette socket a fait une demande de connexion et attend de voir si elle est acceptée.
- SYN-RECEIVED : côté serveur uniquement. Cette socket attend un acquittement de connexion après avoir accepté une demande de connexion.
- ÉTABLI : Serveur et clients. Une connexion fonctionnelle a été établie entre le serveur et le client, permettant le transfert de données entre les deux.
- FIN-WAIT-1 : serveur et clients. Cette socket attend une demande de terminaison de connexion de la part de la socket distante, ou un accusé de réception d'une demande de terminaison de connexion précédemment envoyée depuis cette socket.
- FIN-WAIT-2 : Serveur et clients. Cette socket attend une demande de terminaison de connexion de la part de la socket distante.
- CLOSE-WAIT : serveur et client. Cette socket attend une demande de terminaison de connexion de la part de l'utilisateur local.
- CLÔTURE : Serveur et clients. Cette socket attend un accusé de réception de demande de terminaison de connexion de la part de la socket distante.
- LAST-ACK : serveur et client. Cette socket attend un accusé de réception de la demande de terminaison de connexion qu'elle a envoyée à la socket distante.
- TIME-WAIT : Serveur et clients. Ce socket a envoyé un accusé de réception au socket distant pour lui faire savoir qu'il a reçu la demande de terminaison du socket distant. Il attend maintenant pour s'assurer que l'accusé de réception a été reçu.
- FERME : Il n'y a pas de connexion, donc la socket a été fermée.
Liste des sockets d'écoute
Pour voir les sockets d'écoute, nous ajouterons l'option -l
(écoute), comme ceci :
ss-l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str ÉCOUTER 0 4096 /run/systemd/private 13349 * 0 u_seq ÉCOUTER 0 4096 /run/udev/control 13376 * 0 u_str ÉCOUTER 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str ÉCOUTER 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Ces prises sont toutes non connectées et à l'écoute. Le "rtnl" signifie routage netlink, qui est utilisé pour transférer des informations entre les processus du noyau et de l'espace utilisateur.
Liste de tous les sockets
Pour lister tous les sockets, vous pouvez utiliser l'option -a
(all) :
ss-a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str ÉCOUTER 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 privé/erreur 23225 * 0 u_str LISTEN 0 100 privé/réessayer 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp ÉCOUTER 0 128 [::]:ssh [::]:* tcp ÉCOUTER 0 5 [::1]:ipp [::]:* tcp ÉCOUTER 0 100 [::1]:smtp [::]:*
La sortie contient toutes les prises, quel que soit leur état.
Liste des sockets TCP
Vous pouvez également appliquer un filtre afin que seuls les sockets correspondants soient affichés. Nous utiliserons l'option -t
(TCP), donc seules les sockets TCP seront listées :
ss -a -t
Liste des sockets UDP
L'option -u
(UDP) effectue le même type d'action de filtrage. Cette fois, nous ne verrons que les sockets UDP :
ss -a -u
État Recv-Q Envoi-Q Adresse locale : adresse d'homologue de port : processus de port UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domaine 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*
Liste des sockets Unix
Pour voir uniquement les sockets Unix, vous pouvez inclure l'option -x
(Unix), comme indiqué ci-dessous :
ss-a-x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTA 0 0 * 41826 * 41827 u_str ESTA 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Liste des sockets bruts
Le filtre pour les sockets raw est l'option -w
(raw) :
ss -a -w
Liste des sockets IP version 4
Les sockets utilisant le protocole TCP/IP version 4 peuvent être listés à l'aide de l'option -4
(IPV4) :
ss-a-4
Liste des sockets IP version 6
Vous pouvez activer le filtre IP version 6 correspondant avec l'option -6
(IPV6), comme ceci :
ss-a-6
Liste des sockets par état
Vous pouvez répertorier les sockets selon l'état dans lequel ils se trouvent avec l'option d' state
. Cela fonctionne avec les états établis, à l'écoute ou fermés. Nous utiliserons également l'option de résolution ( -r
), qui tente de résoudre les adresses réseau en noms et les ports en protocoles.
La commande suivante recherchera les connexions TCP établies et ss
tentera de résoudre les noms :
ss -t -r état établi
Quatre connexions sont répertoriées qui sont dans l'état établi. Le nom d'hôte, ubuntu20-04, a été résolu et "ssh" est affiché au lieu de 22 pour la connexion SSH sur la deuxième ligne.
Nous pouvons répéter ceci pour rechercher des sockets dans l'état d'écoute :
ss -t -r état d'écoute
Recv-Q Envoi-Q Adresse locale : adresse d'homologue de port : processus de port 0 128 hôtelocal:5939 0.0.0.0:* 0 4096 localhost%lo:domaine 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 hôte local :smtp 0.0.0.0 :* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:smtp [::]:*
Liste des sockets par protocole
Vous pouvez répertorier les sockets utilisant un protocole particulier avec les options dport
et sport
, qui représentent respectivement les ports de destination et source.
Nous tapons ce qui suit pour lister les sockets utilisant le protocole HTTPS sur une connexion established
(notez l'espace après la parenthèse ouvrante et avant celle fermante) :
ss -a état établi '( dport = :https ou sport = :https )'
Nous pouvons utiliser le nom du protocole ou le port généralement associé à ce protocole. Le port par défaut pour Secure Shell (SSH) est le port 22.
Nous allons utiliser le nom du protocole dans une commande, puis le répéter en utilisant le numéro de port :
ss -a '( dport = :ssh ou sport = :ssh )'
ss -a '( dport = :22 ou sport = :22 )'
Comme prévu, nous obtenons les mêmes résultats.
Liste des connexions à une adresse IP spécifique
Avec l'option dst
(destination), nous pouvons répertorier les connexions à une adresse IP de destination particulière.
Nous tapons ce qui suit :
ss-a dst 192.168.4.25
Identification des processus
Pour voir quels processus utilisent les sockets, vous pouvez utiliser l'option process ( -p
), comme indiqué ci-dessous (notez que vous devez utiliser sudo
):
sudo ss -t -p
État Recv-Q Envoi-Q Adresse locale : adresse d'homologue de port : processus de port ESTAB 0 0 192.168.4.28:57650 54.218.19.119:utilisateurs https :(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 utilisateurs :(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Cela nous montre que les deux connexions établies sur les sockets TCP sont utilisées par le démon SSH et Firefox.
Un digne successeur
La commande ss
fournit les mêmes informations précédemment fournies par netstat
, mais d'une manière plus simple et plus accessible. Vous pouvez consulter la page de manuel pour plus d'options et de conseils.
Commandes Linux | ||
Des dossiers | tar · pv · chat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · plier · uniq · journalctl · queue · stat · ls · fstab · echo · moins · chgrp · chown · rev · regarder · chaînes · type · renommer · zip · décompresser · monter · umount · installer · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convertir · rclone · déchiqueter · srm | |
Processus | alias · écran · top · sympa · renice · progrès · strace · systemd · tmux · chsh · historique · at · batch · gratuit · lequel · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · mur · oui · kill · sleep · sudo · su · time · groupadd · usermod · groupes · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
La mise en réseau | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · creuser · doigt · nmap · ftp · curl · wget · qui · whoami · w · iptables · ssh-keygen · ufw |
CONNEXION: Meilleurs ordinateurs portables Linux pour les développeurs et les passionnés