Sådan bruger du ss-kommandoen på Linux

ss-kommandoen er en moderne erstatning for den klassiske netstat. Du kan bruge det på Linux til at få statistik om dine netværksforbindelser. Sådan arbejder du med dette praktiske værktøj.

ss-kommandoen versus netstat

En erstatning for det forældede netstat kommandoss giver dig detaljerede oplysninger om, hvordan din computer kommunikerer med andre computere, netværk og tjenester.

ss viser statistik for Transmissionskontrolprotokol (TCP), Brugerdatagramprotokol (UDP), Unix (interproces)og rå fatninger. Rå fatninger operere ved netværk OSI niveauhvilket betyder, at TCP- og UDP-headere skal håndteres af applikationssoftwaren, ikke af transportlaget. Internet Control Message Protocol (ICMP) meddelelser og ping værktøj både bruger rå stikkontakter.

Ved hjælp af ss

Du behøver ikke at installere ss, da det allerede er en del af en opdateret Linux-distribution. Dens output kan dog være meget lang – vi har haft resultater, der indeholder over 630 linjer. Resultaterne er også meget brede.

På grund af dette har vi inkluderet tekstrepræsentationer af de resultater, vi opnåede, da de ikke ville passe ind i et skærmbillede. Vi har trimmet dem for at gøre dem mere overskuelige.

Liste over netværksforbindelser

Brug af ss uden kommandolinjeindstillinger viser sockets, der ikke lytter. Det vil sige, at den viser de stik, der ikke er i lyttetilstand.

For at se dette skal du skrive følgende:

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

Kolonnerne er som følger:

  Sådan spiller du Valheim på Linux

Netid: Typen af ​​fatning. I vores eksempel har vi “u_str,” en Unix-stream, en “udp” og “icmp6”, en IP version 6 ICMP-socket. Du kan finde flere beskrivelser af Linux socket typer på Linux-man-siderne.
Tilstand: Den tilstand, som stikkontakten er i.
Recv-Q: Antallet af modtagne pakker.
Send-Q: Antallet af sendte pakker.
Lokal adresse:Port: Den lokale adresse og port (eller tilsvarende værdier for Unix-stik).
Peer-adresse:Port: Fjernadressen og porten (eller tilsvarende værdier for Unix-stik).

For UDP-stik er “State”-kolonnen normalt tom. For TCP-stik kan det være en af ​​følgende:

LYT: Kun på serversiden. Stikkontakten venter på en forbindelsesanmodning.
SYN-SENT: Kun på klientsiden. Denne socket har lavet en forbindelsesanmodning og venter på at se, om den bliver accepteret.
SYN-MODTAGET: Kun på serversiden. Dette stik venter på en forbindelsesbekræftelse efter at have accepteret en forbindelsesanmodning.
ETABLERET: Server og klienter. Der er etableret en fungerende forbindelse mellem serveren og klienten, hvilket gør det muligt at overføre data mellem de to.
FIN-WAIT-1: Server og klienter. Denne socket afventer en anmodning om forbindelsesafbrydelse fra fjernstikket, eller en bekræftelse af en anmodning om forbindelsesafbrydelse, som tidligere er sendt fra denne socket.
FIN-WAIT-2: Server og klienter. Dette stik afventer en anmodning om afbrydelse af forbindelse fra fjernstikket.
CLOSE-WAIT: Server og klient. Denne socket afventer en anmodning om afbrydelse af forbindelse fra den lokale bruger.
LUKKER: Server og klienter. Dette stik afventer en bekræftelse af anmodning om afslutning af forbindelse fra fjernstikket.
LAST-ACK: Server og klient. Denne socket afventer en bekræftelse af anmodningen om forbindelsesafbrydelse, den sendte til fjernstikket.
TIME-WAIT: Server og klienter. Denne socket sendte en bekræftelse til fjernsocket for at fortælle den, at den modtog fjernsockets anmodning om afslutning. Det venter nu på at sikre, at bekræftelsen er modtaget.
LUKKET: Der er ingen forbindelse, så stikkontakten er afsluttet.

Liste Listening Sockets

For at se lyttestikkene tilføjer vi muligheden -l (lytte), som sådan:

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/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

Disse stik er alle uforbundne og lytter. “rtnl” betyder routing af netlink, som bruges til at overføre information mellem kerne- og brugerrumsprocesser.

  Sådan konverteres PNG til JPG på Linux

Liste over alle stikkontakter

For at liste alle stikkontakter kan du bruge -a (alle) muligheden:

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 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                           [::]:*

Udgangen indeholder alle stik, uanset tilstand.

Liste over TCP Sockets

Du kan også anvende et filter, så kun matchende stikkontakter vises. Vi bruger muligheden -t (TCP), så kun TCP-stik vil blive vist:

ss -a -t

Liste over UDP Sockets

Indstillingen -u (UDP) udfører den samme type filtreringshandling. Denne gang ser vi kun UDP-stik:

ss -a -u

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         [::]:*

Liste over Unix Sockets

For kun at se Unix-sokler kan du inkludere -x (Unix)-indstillingen, som vist nedenfor:

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

Liste over Raw Sockets

Filteret til rå fatninger er -w (rå) mulighed:

ss -a -w

Liste over IP Version 4 Sockets

Sockets, der bruger TCP/IP version 4-protokollen, kan listes ved hjælp af -4 (IPV4) muligheden:

ss -a -4

Liste over IP Version 6 Sockets

Du kan slå det matchende IP version 6-filter til med -6 (IPV6)-indstillingen, som sådan:

ss -a -6

Liste Sockets efter stat

Du kan angive stikkontakter efter den tilstand, hvor de er i med tilstandsindstillingen. Dette fungerer med etablerede, lyttende eller lukkede tilstande. Vi vil også bruge løsningsmuligheden (-r), som forsøger at løse netværksadresser til navne og porte til protokoller.

  Sådan opretter du applikationsmenugenveje på Linux

Følgende kommando vil lede efter etablerede TCP-forbindelser, og ss vil forsøge at løse navnene:

ss -t -r state established

Der er angivet fire forbindelser, der er i den etablerede tilstand. Værtsnavnet, ubuntu20-04, er blevet løst, og “ssh” vises i stedet for 22 for SSH-forbindelsen på den anden linje.

Vi kan gentage dette for at se efter stik i lyttetilstanden:

ss -t -r state listening

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        [::]:*

Listestik efter protokol

Du kan angive stikkontakterne ved hjælp af en bestemt protokol med dport- og sportsmulighederne, som repræsenterer henholdsvis destinations- og kildeportene.

Vi skriver følgende for at vise sockets ved hjælp af HTTPS-protokollen på en etableret forbindelse (bemærk mellemrummet efter åbningsparentesen og før den afsluttende):

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

Vi kan bruge protokolnavnet eller den port, der normalt er forbundet med denne protokol. Standardporten til Sikker Shell (SSH) er port 22.

Vi bruger protokolnavnet i én kommando og gentager det derefter med portnummeret:

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

Som forventet får vi de samme resultater.

Liste over forbindelser til en specifik IP-adresse

Med indstillingen dst (destination) kan vi liste forbindelser til en bestemt destinations-IP-adresse.

Vi skriver følgende:

ss -a dst 192.168.4.25

Identifikation af processer

For at se hvilke processer der bruger sockets, kan du bruge processer muligheden (-p), som vist nedenfor (bemærk at du skal bruge sudo):

sudo ss -t -p

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))

Dette viser os, at de to etablerede forbindelser på TCP-sockets bliver brugt af SSH-dæmonen og Firefox.

En værdig efterfølger

ss-kommandoen giver den samme information, som tidligere blev leveret af netstat, men på en enklere og mere tilgængelig måde. Du kan tjekke ud man-side for flere muligheder og tips.