Hoe de ss-opdracht op Linux te gebruiken

Een terminalvenster op een Linux-laptopsysteem.
Fatmawati Achmad Zaenuri / Shutterstock

De ss commando is een moderne vervanging voor de klassieker netstat. U kunt het op Linux gebruiken om statistieken over uw netwerkverbindingen te krijgen. Hier leest u hoe u met deze handige tool kunt werken.

Het ss-commando versus netstat

Een vervanging voor het verouderde netstat opdracht, ss geeft u gedetailleerde informatie over hoe uw computer communiceert met andere computers, netwerken en services.

ss geeft statistieken weer voor Transmission Control Protocol (TCP), User Datagram Protocol (UDP), Unix (interprocess) en onbewerkte sockets. Raw sockets werken op het OSI-niveau van het netwerk, wat betekent dat TCP- en UDP-headers moeten worden afgehandeld door de applicatiesoftware, niet door de transportlaag. ICMP-berichten (Internet Control Message Protocol) en het ping-hulpprogramma gebruiken beide onbewerkte sockets.

Met behulp van ss

U hoeft niet te installeren ss, aangezien het al deel uitmaakt van een up-to-date Linux-distributie. De uitvoer kan echter erg lang zijn – we hebben resultaten met meer dan 630 regels. De resultaten zijn ook erg breed.

Daarom hebben we tekstweergaven toegevoegd van de resultaten die we hebben verkregen, omdat deze niet in een screenshot passen. We hebben ze bijgesneden om ze beter beheersbaar te maken.

Lijst met netwerkverbindingen

Gebruik makend van ss zonder opdrachtregelopties geeft sockets weer die niet luisteren. Dat wil zeggen, het geeft een overzicht van de sockets die niet in de luisterstand staan.

Typ het volgende om dit te zien:

ss

ss in een terminalvenster

Uitvoer van ss in een terminalvenster.

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

De kolommen zijn als volgt:

  • Netid: Het type stopcontact. In ons voorbeeld hebben we “u_str”, een Unix-stream, een “udp” en “icmp6”, een IP-versie 6 ICMP-socket. Je kunt meer beschrijvingen van Linux-socketsoorten vinden in de Linux man-pagina’s.
  • Staat: De staat waarin het stopcontact zich bevindt.
  • Recv-Q: Het aantal ontvangen pakketten.
  • Verzenden-Q: Het aantal verzonden pakketten.
  • Lokaal adres: poort: Het lokale adres en de poort (of equivalente waarden voor Unix-sockets).
  • Peer-adres: poort: Het externe adres en de poort (of equivalente waarden voor Unix-sockets).

Voor UDP-sockets is de kolom “State” meestal leeg. Voor TCP-sockets kan dit een van de volgende zijn:

  • LUISTER: Alleen serverzijde. Het stopcontact wacht op een verbindingsverzoek.
  • SYN-VERZONDEN: Alleen client-side. Deze socket heeft een verbindingsverzoek gedaan en wacht om te zien of het wordt geaccepteerd.
  • SYN-ONTVANGEN: Alleen serverzijde. Deze socket wacht op een verbindingsbevestiging na het accepteren van een verbindingsverzoek.
  • GEVESTIGD: Server en klanten. Er is een werkende verbinding tot stand gebracht tussen de server en de client, waardoor gegevens tussen de twee kunnen worden uitgewisseld.
  • FIN-WAIT-1: Server en klanten. Deze socket wacht op een verzoek tot beëindiging van de verbinding van de socket op afstand, of een bevestiging van een verzoek om de verbinding te beëindigen dat eerder vanuit deze socket is verzonden.
  • FIN-WAIT-2: Server en klanten. Deze socket wacht op een verzoek om de verbinding te beëindigen van de externe socket.
  • SLUITEN-WACHTEN: Server en klant. Deze socket wacht op een verzoek tot beëindiging van de verbinding van de lokale gebruiker.
  • SLUITEND: Server en klanten. Deze socket wacht op een bevestiging van een verzoek om de verbinding te beëindigen door de externe socket.
  • LAATSTE ACK: Server en klant. Deze socket wacht op een bevestiging van het verzoek om de verbinding te beëindigen dat naar de externe socket is verzonden.
  • TIJD WACHT: Server en klanten. Deze socket heeft een bevestiging naar de externe socket gestuurd om te laten weten dat deze het beëindigingsverzoek van de externe socket heeft ontvangen. Het wacht nu om er zeker van te zijn dat de bevestiging is ontvangen.
  • GESLOTEN: Er is geen verbinding, dus het stopcontact is beëindigd.

Listing luistersockets

Om de luistersockets te zien, voegen we de -l (luister) optie, zoals zo:

ss -l

ss -l in een terminalvenster.

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/private 13349                            * 0 
u_seq LISTEN 0      4096             /run/udev/control 13376                            * 0 
u_str LISTEN 0      4096             /tmp/.X11-unix/X0 33071                            * 0 
u_dgr UNCONN 0      0      /run/systemd/journal/syslog 13360                            * 0 
u_str LISTEN 0      4096    /run/systemd/fsck.progress 13362                            * 0 
u_dgr UNCONN 0      0    /run/user/1000/systemd/notify 32303                            * 0

Deze stopcontacten zijn allemaal niet aangesloten en luisteren. De “rtnl” betekent routing netlink, die wordt gebruikt om informatie tussen kernel- en gebruikersruimteprocessen uit te wisselen.

Alle stopcontacten weergeven

Om alle stopcontacten weer te geven, kunt u de -a (alle) optie:

ss -a

ss -a in een terminalvenster.

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      100       public/showq 23222                            * 0 
u_str LISTEN 0      100      private/error 23225                            * 0 
u_str LISTEN 0      100      private/retry 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 0      128              [::]:ssh                            [::]:* 
tcp   LISTEN 0      5               [::1]:ipp                            [::]:* 
tcp   LISTEN 0      100             [::1]:smtp                           [::]:*

De output bevat alle sockets, ongeacht de staat.

Lijst met TCP-sockets

U kunt ook een filter toepassen zodat alleen bijpassende stopcontacten worden weergegeven. We gebruiken de -t (TCP) optie, dus alleen TCP-sockets worden weergegeven:

ss -a -t

 ss -a -t in een terminalvenster.

Lijst met UDP-sockets

De -u (UDP) -optie voert hetzelfde type filteractie uit. Deze keer zien we alleen UDP-sockets:

ss -a -u

ss -a -u in een terminalvenster.

State  Recv-Q Send-Q    Local Address:Port Peer   Address:Port Process 
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:domain      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         [::]:*

Unix-sockets weergeven

Om alleen Unix-sockets te zien, kunt u de -x (Unix) optie, zoals hieronder getoond:

ss -a -x

ss -a -x in een terminalvenster.

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

Aanbieding Raw Sockets

Het filter voor ruwe sockets is de -w (raw) optie:

ss -a -w

ss -a -w in een terminalvenster.

Lijst met IP-versie 4-aansluitingen

Sockets die het protocol TCP / IP versie 4 gebruiken, kunnen worden weergegeven met de -4 (IPV4) optie:

ss -a -4

ss -a -4 in een terminalvenster.

Lijst met IP-versie 6-aansluitingen

U kunt het overeenkomende IP-versie 6-filter inschakelen met de -6 (IPV6) optie, zoals zo:

ss -a -6

ss -a -6 in een terminalvenster.

Lijst met stopcontacten op staat

U kunt sockets weergeven op basis van de staat waarin ze zich bevinden met de state optie. Dit werkt met gevestigde, luisterende of gesloten toestanden. We gebruiken ook de oplossingsoptie (-r), die probeert netwerkadressen om te zetten in namen en poorten in protocollen.

De volgende opdracht zoekt naar gevestigde TCP-verbindingen, en ss zal proberen de namen op te lossen:

ss -t -r state established

ss -t -r toestand vastgesteld in een terminalvenster.

Er worden vier verbindingen weergegeven die zich in de gevestigde staat bevinden. De hostnaam, ubuntu20-04, is opgelost en “ssh” wordt weergegeven in plaats van 22 voor de SSH-verbinding op de tweede regel.

We kunnen dit herhalen om te zoeken naar stopcontacten in de luisterstand:

ss -t -r state listening

ss -t -r staat luisteren in een terminalvenster.

Recv-Q Send-Q Local Address:Port   Peer Address:Port Process 
0      128        localhost:5939        0.0.0.0:* 
0      4096    localhost%lo:domain      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        localhost:smtp        0.0.0.0:* 
0      128             [::]:ssh         [::]:* 
0      5      ip6-localhost:ipp         [::]:* 
0      100    ip6-localhost:smtp        [::]:*

Sockets op protocol weergeven

U kunt de sockets weergeven die een bepaald protocol gebruiken met de dport en sport opties, die respectievelijk de doel- en bronpoorten vertegenwoordigen.

We typen het volgende om sockets weer te geven die het HTTPS-protocol gebruiken op een established verbinding (let op de spatie na het haakje openen en voor het sluitende haakje):

ss -a state established ‘( dport = :https or sport = :https )’

ss -a state opgericht '(dport =: https or sport =: https)' in een terminalvenster.

We kunnen de protocolnaam of de poort gebruiken die gewoonlijk bij dat protocol hoort. De standaardpoort voor Secure Shell (SSH) is poort 22.

We gebruiken de protocolnaam in één opdracht en herhalen deze met het poortnummer:

ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’

ss -a '(dport =: ssh of sport =: ssh)' in een terminalvenster.

Zoals verwacht krijgen we dezelfde resultaten.

Lijst met verbindingen met een specifiek IP-adres

Met de dst (bestemming) optie, kunnen we verbindingen naar een bepaald bestemmings-IP-adres weergeven.

We typen het volgende:

ss -a dst 192.168.4.25

ss -a dst 192.168.4.25 in een terminalvenster.

Processen identificeren

Om te zien welke processen de sockets gebruiken, kunt u de optie processen (-p), zoals hieronder weergegeven (merk op dat u sudo):

sudo ss -t -p

sudo ss -t -p in een terminalvenster.

State Recv-Q Send-Q  Local Address:Port   Peer Address:Port  Process 
ESTAB 0      0       192.168.4.28:57650  54.218.19.119:https users:(("firefox",pid=3378,fd=151)) 
ESTAB 0      0       192.168.4.28:ssh     192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

Dit toont ons dat de twee tot stand gebrachte verbindingen op TCP-sockets worden gebruikt door de SSH-daemon en Firefox.

Een waardige opvolger

De ss commando biedt dezelfde informatie die eerder is verstrekt door netstat, maar op een eenvoudigere, meer toegankelijke manier. Je kunt de man-pagina bekijken voor meer opties en tips.

Nieuwste artikelen

Gerelateerde artikelen