En introduktion till ss-kommandot

Lär dig att hämta nätverksinformation med hjälp av ss-kommandot i denna handledning från arkiven.

Linux innehåller ett ganska stort antal verktyg för att tillgodose nästan alla behov. Från utveckling till säkerhet till produktivitet till administration… om du måste få det gjort finns Linux där för att hjälpa dig. Ett av de många verktyg som administratörer ofta vände sig till var netstat. Netstat-kommandot har dock övergivits till förmån för det snabbare och mer lättlästa ss-kommandot.

Sss-kommandot är ett verktyg som används för att dumpa socketstatistik och visar information på liknande sätt (fast enklare och snabbare) som netstat. Kommandot ss kan också visa ännu mer TCP- och statusinformation än de flesta andra verktyg. Eftersom ss är det nya netstat ska vi ta en titt på hur du kan använda det här verktyget så att du lättare kan få information om din Linux-maskin och vad som händer med nätverksanslutningar.

Sss-kommandoradsverktyget kan visa statistik för exempelvis PACKET-, TCP-, UDP-, DCCP-, RAW- och Unix-domänsockor. Ersättaren till netstat är enklare att använda (jämför man-sidorna för att få en omedelbar uppfattning om hur mycket enklare ss är). Med ss får du mycket detaljerad information om hur din Linux-maskin kommunicerar med andra maskiner, nätverk och tjänster; detaljer om nätverksanslutningar, statistik över nätverksprotokoll och Linux socket-anslutningar. Med den här informationen i handen kan du mycket lättare felsöka olika nätverksproblem.

Låt oss komma igång med ss, så att du kan betrakta det som ett nytt verktyg i din administratörskit.

Grundläggande användning

Sss-kommandot fungerar som vilket kommando som helst på Linuxplattformen: Utfärda kommandot executable och följ det med valfri kombination av de tillgängliga alternativen. Om du kastar en blick på ss man-sidan (utfärda kommandot man ss) kommer du att märka att det inte finns nästan alla de alternativ som finns för netstat-kommandot; det är dock inte liktydigt med en brist på funktionalitet. Faktum är att ss är ganska kraftfullt.

Om du utfärdar kommandot ss utan några argument eller alternativ kommer det att returnera en komplett lista över TCP-uttag med etablerade anslutningar (Figur 1).

Figur 1: En komplett lista över alla etablerade TCP-anslutningar.

Eftersom ss-kommandot (utan alternativ) kommer att visa en betydande mängd information (alla tcp-, udp- och unix socket-anslutningsdetaljer), kan du också skicka kommandots utdata till en fil för senare visning på följande sätt:

ss > ss_output

Självklart är ett mycket grundläggande kommando inte så användbart för alla situationer. Vad händer om vi bara vill visa aktuella lyssnande sockets? Enkelt, lägg till alternativet -l så här:

ss -l

Ovanstående kommando ger bara ut en lista över aktuella lyssnande sockets.

För att göra det lite mer specifikt, tänk på det så här: ss kan användas för att visa TCP-anslutningar med hjälp av -t-alternativet, UDP-anslutningar med hjälp av -u-alternativet, eller UNIX-anslutningar med hjälp av -x-alternativet; alltså ss -t, ss -u, eller ss -x. Om du kör något av dessa kommandon visas en mängd information som du kan kamma igenom (Figur 2).

Figur 2: Om du kör ss -u på Elementary OS får du en snabb visning av UDP-anslutningar.

Som standard visas endast de anslutningar som är upprättade (eller anslutna) om du använder antingen alternativen -t, -u eller -x. Om vi vill plocka upp anslutningar som lyssnar måste vi lägga till alternativet -a på följande sätt:

ss -t -a 

Utmatningen av ovanstående kommando kommer att inkludera alla TCP-uttag (Figur 3).

Figur 3: Lägg märke till att det sista uttaget är ssh som lyssnar på enheten.

I exemplet ovan kan du se att UDP-anslutningar (i olika tillstånd) görs från min maskins IP-adress, från olika portar, till olika IP-adresser, via olika portar. Till skillnad från netstat-versionen av det här kommandot visar ss inte PID och kommandonamn som är ansvariga för dessa anslutningar. Trots detta har du fortfarande gott om information för att börja felsöka. Om någon av dessa portar eller URL:er skulle vara misstänkt vet du nu vilken IP-adress/port som gör anslutningen. Därmed har du nu information som kan hjälpa dig i ett tidigt skede av felsökningen av ett problem.

Filtrering av ss med TCP-status

Ett mycket praktiskt alternativ för ss-kommandot är möjligheten att filtrera med hjälp av TCP-status (en anslutnings ”livsstadier”). Med states kan du lättare filtrera dina ss-kommandoresultat. Verktyget ss kan användas tillsammans med alla vanliga TCP-status:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Annan tillgängliga tillståndsidentifierare ss känner igen är:

  • all (alla ovanstående tillstånd)

  • connected (alla tillstånd med undantag av listen och closed)

  • synchronized (alla anslutna tillstånd med undantag av syn-sent)

  • bucket (tillstånd som upprätthålls som minisockets, till exempel time-wait och

  • syn-recv)

  • big (motsatsen till bucket state)

Syntaxen för att arbeta med states är enkel.

For tcp ipv4:ss -4 state FILTERFor tcp ipv6:ss -6 state FILTER

Där FILTER är namnet på det tillstånd du vill använda.

Säg att du vill visa alla lyssnande IPv4-uttag på din maskin. För detta skulle kommandot vara:

ss -4 state listening

Resultaten av det kommandot skulle se ut ungefär som i Figur 4.

Figur 4: Användning av ss med ett filter för lyssnande tillstånd.

Visa anslutna sockets från specifik adress

En praktisk uppgift som du kan tilldela ss är att låta den rapportera anslutningar som gjorts av en annan IP-adress. Säg att du vill ta reda på om/hur en maskin med IP-adressen 192.168.1.139 har anslutit till din server. För detta kan du skicka kommandot:

ss dst 192.168.1.139

Den resulterande informationen (Figur 5) kommer att informera dig om Netid, status, lokal IP:port och fjärr-IP:port för sockeln.

Figur 5: En fjärrmaskin har upprättat en ssh-anslutning till vår lokala maskin.

Få det att fungera för dig

Kommandot ss kan göra en hel del för att hjälpa dig att felsöka problem med din Linuxserver eller ditt nätverk. Det vore bra om du tog dig tid att läsa igenom ss man-sidan (ge kommandot man ss). Men vid det här laget bör du åtminstone ha en grundläggande förståelse för hur du använder det här kommandot.

Lär dig mer om Linux genom den kostnadsfria kursen ”Introduction to Linux” från The Linux Foundation och edX.

Lämna ett svar

Din e-postadress kommer inte publiceras.