le ss
la commande 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.
Un remplacement pour les obsolètes netstat
commander, 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 les statistiques pour Protocole de contrôle de transmission (TCP), Protocole de datagramme utilisateur (UDP), Unix (interprocessus), et les prises brutes. Douilles brutes opérer 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. Protocole de message de contrôle Internet (ICMP) et les ping L'utilitaire utilise tous deux des sockets bruts.
Vous n'êtes pas obligé 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 elles ne rentrent pas dans une capture d'écran. Nous les avons ajustés pour les rendre plus faciles à gérer.
En utilisant ss
sans options de ligne de commande répertorie les sockets qui ne sont pas à l'écoute. Autrement dit, 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 ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 / run / systemd / journal / stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 / run / dbus / system_bus_socket 21243 * 21242 u_str ESTAB 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:
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:
Pour voir les prises d'écoute, nous allons ajouter le -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 LISTEN 0 4096 / run / systemd / privé 13349 * 0 u_seq LISTEN 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 le routage netlink, qui est utilisé pour transférer des informations entre les processus du noyau et de l'espace utilisateur.
Pour lister toutes les sockets, vous pouvez utiliser le -une
(tout) option:
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 ECOUTER 0100 public / showq 23222 * 0 u_str LISTEN 0100 privé / erreur 23225 * 0 u_str LISTEN 0100 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 LISTEN 0128 (: :): ssh (::): * tcp LISTEN 0 5 (:: 1): ipp (::): * tcp LISTEN 0100 (:: 1): smtp (::): *
La sortie contient toutes les sockets, quel que soit leur état.
Vous pouvez également appliquer un filtre afin que seules les sockets correspondantes soient affichées. Nous utiliserons le -t
(TCP), donc seules les sockets TCP seront listées:
ss -a -t
le -u
(UDP) exécute le même type d'action de filtrage. Cette fois, nous ne verrons que les sockets UDP:
ss -a -u
State Recv-Q Send-Q Local Address: 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 (::): *
Pour voir uniquement les sockets Unix, vous pouvez inclure le -X
(Unix), comme illustré ci-dessous:
ss -a -x
Netid State Recv-Q Send-Q Local Address: Port Peer Address: Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 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
Le filtre pour les prises brutes est le -w
option (brute):
ss -a -w
Les sockets utilisant le protocole TCP / IP version 4 peuvent être répertoriés à l'aide du -4
Option (IPV4):
ss -a -4
Vous pouvez activer le filtre IP version 6 correspondant avec le -6
(IPV6), comme ceci:
ss -a -6
Vous pouvez répertorier les sockets par état dans lequel elles se trouvent avec le Etat
option. Cela fonctionne avec des é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
essaiera de résoudre les noms:
état ss -t -r établi
Quatre connexions sont répertoriées 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 les sockets en état d'écoute:
ss -t -r état écoute
Recv-Q Adresse locale Send-Q: Adresse d'homologue de port: Processus de port 0 128 localhost: 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:* 0100 localhost: smtp 0.0.0.0:* 0 128 (: :): ssh (::): * 0 5 ip6-localhost: ipp (::): * 0100 ip6-localhost: smtp (::): *
Vous pouvez lister les sockets en utilisant un protocole particulier avec le dport
et sport
options, qui représentent respectivement les ports de destination et source.
Nous tapons ce qui suit pour lister les sockets utilisant le protocole HTTPS sur un établi
connexion (notez l'espace après la parenthèse ouvrante et avant la parenthèse fermante):
ss -a état établi «(dport =: https or sport =: https)»
Nous pouvons utiliser le nom du protocole ou le port généralement associé à ce protocole. Le port par défaut pour Enveloppe de protection (SSH) est le port 22.
Nous utiliserons le nom du protocole dans une seule commande, puis le répéterons 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.
Avec le dst
(destination), nous pouvons lister les connexions à une adresse IP de destination particulière.
Nous tapons ce qui suit:
ss -a dst 192.168.4.25
Pour voir quels processus utilisent les sockets, vous pouvez utiliser l'option processus (-p
), comme indiqué ci-dessous (notez que vous devez utiliser sudo
):
sudo ss -t -p
State Recv-Q Send-Q Local Address: Adresse d'homologue de port: Processus de port ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https utilisateurs: (("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.
le ss
commande fournit les mêmes informations précédemment fournies par netstat
, mais d'une manière plus simple et plus accessible. Vous pouvez consulter le page de manuel pour plus d'options et de conseils.