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.
Indholdsfortegnelse
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:
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.
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.
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.