En introduktion til ss-kommandoen

Lær hvordan du får netværksoplysninger ved hjælp af ss-kommandoen i denne vejledning fra arkiverne.

Linux indeholder et ret massivt udvalg af værktøjer, der kan opfylde næsten alle behov. Fra udvikling til sikkerhed til produktivitet til administration … hvis du skal have det gjort, er Linux der til at hjælpe dig. Et af de mange værktøjer, som administratorer ofte henvendte sig til, var netstat. Netstat-kommandoen er imidlertid blevet forældet til fordel for den hurtigere og mere menneskeligt læsbare ss-kommando.

Sss-kommandoen er et værktøj, der bruges til at dumpe socketstatistik og viser oplysninger på samme måde (om end enklere og hurtigere) som netstat. ss-kommandoen kan også vise endnu flere TCP- og tilstandsoplysninger end de fleste andre værktøjer. Da ss er det nye netstat, vil vi se på, hvordan du kan gøre brug af dette værktøj, så du lettere kan få oplysninger om din Linux-maskine, og hvad der sker med netværksforbindelserne.

Sss-kommandolinjeværktøjet kan vise statistik for f.eks. PACKET-, TCP-, UDP-, DCCP-, RAW- og Unix-domæne-socket’er. Afløseren for netstat er lettere at bruge (sammenlign man-siderne for at få en umiddelbar idé om, hvor meget lettere ss er). Med ss får du meget detaljerede oplysninger om, hvordan din Linux-maskine kommunikerer med andre maskiner, netværk og tjenester; detaljer om netværksforbindelser, netværksprotokolstatistik og Linux-socketforbindelser. Med disse oplysninger i hånden kan du meget lettere fejlfinde forskellige netværksproblemer.

Lad os komme i gang med ss, så du kan betragte det som et nyt værktøj i dit administratorkit.

Grundlæggende brug

Sss-kommandoen fungerer som enhver anden kommando på Linux-platformen: Udsted den eksekverbare kommando, og følg den med en hvilken som helst kombination af de tilgængelige muligheder. Hvis du kaster et blik på ss man-siden (udfør kommandoen man ss), vil du bemærke, at der ikke er nær så mange muligheder som dem, der findes for netstat-kommandoen; det er dog ikke ensbetydende med manglende funktionalitet. Faktisk er ss ret kraftfuld.

Hvis du udsender kommandoen ss uden argumenter eller indstillinger, vil den returnere en komplet liste over TCP-soketter med etablerede forbindelser (Figur 1).

Figur 1: En komplet liste over alle etablerede TCP-forbindelser.

Da ss-kommandoen (uden indstillinger) viser en betydelig mængde oplysninger (alle detaljer om tcp-, udp- og unix-socketforbindelser), kan du også sende kommandoens output til en fil til senere visning på denne måde:

ss > ss_output

Naturligvis er en meget grundlæggende kommando ikke så nyttig i alle situationer. Hvad hvis vi kun ønsker at se aktuelle lyttende sockets? Det er enkelt, ved at tilføje indstillingen -l på denne måde:

ss -l

Overstående kommando vil kun udsende en liste over aktuelle lyttende sockets.

For at gøre det lidt mere specifikt, så tænk på det på denne måde: ss kan bruges til at se TCP-forbindelser ved at bruge indstillingen -t, UDP-forbindelser ved at bruge indstillingen -u eller UNIX-forbindelser ved at bruge indstillingen -x; altså ss -t, ss -u eller ss -x. Hvis du kører en af disse kommandoer, får du en liste med masser af oplysninger, som du kan finkæmme (Figur 2).

Figur 2: Kørsel af ss -u på Elementary OS giver en hurtig visning af UDP-forbindelser.

Hvis du bruger enten -t-, -u- eller -x-indstillingerne alene, får du som standard kun en liste med de forbindelser, der er oprettet (eller forbundet). Hvis vi vil hente forbindelser, der lytter, skal vi tilføje indstillingen -a som:

ss -t -a 

Opdatet af ovenstående kommando vil omfatte alle TCP-soketter (Figur 3).

Figur 3: Bemærk, at den sidste socket er ssh, der lytter på enheden.

I ovenstående eksempel kan du se, at der oprettes UDP-forbindelser (i varierende tilstande) fra IP-adressen på min maskine, fra forskellige porte, til forskellige IP-adresser, gennem forskellige porte. I modsætning til netstat-versionen af denne kommando viser ss ikke PID og kommandonavn, der er ansvarlig for disse forbindelser. Alligevel har du stadig masser af oplysninger til at begynde fejlfinding. Hvis en af disse porte eller URL’er skulle være mistænkelige, ved du nu, hvilken IP-adresse/port der opretter forbindelsen. Dermed har du nu de oplysninger, der kan hjælpe dig i de tidlige faser af fejlfinding af et problem.

Filtrering af ss med TCP-stater

En meget praktisk mulighed, der er tilgængelig for ss-kommandoen, er muligheden for at filtrere ved hjælp af TCP-stater (en forbindelses “livsstadier”). Med states kan du nemmere filtrere dine ss-kommandoresultater. ss-værktøjet kan bruges sammen med alle standard TCP-states:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Andre tilgængelige tilstands-id’er, som ss genkender, er:

  • all (alle ovenstående tilstande)

  • connected (alle tilstande med undtagelse af listen og closed)

  • synkroniseret (alle de tilsluttede tilstande med undtagelse af syn-sent)

  • bucket (tilstande, der vedligeholdes som minisockets, for eksempel time-wait og

  • syn-recv)

  • big (Modsat bucket-tilstand)

Syntaksen til at arbejde med tilstande er enkel.

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

Hvor FILTER er navnet på den tilstand, du vil bruge.

Sig, at du vil se alle lyttende IPv4-soketter på din maskine. Til dette ville kommandoen være:

ss -4 state listening

Resultatet af denne kommando ville se ud som i Figur 4.

Figur 4: Brug af ss med et filter for lyttende tilstand.

Vis tilsluttede sockets fra specifik adresse

En praktisk opgave, som du kan tildele ss, er at få den til at rapportere forbindelser, der er oprettet af en anden IP-adresse. Lad os sige, at du ønsker at finde ud af, om/hvordan en maskine på IP-adressen 192.168.1.139 har oprettet forbindelse til din server. Til dette formål kan du sende kommandoen:

ss dst 192.168.1.139

Den resulterende information (Figur 5) vil informere dig om Netid, status, den lokale IP:port og den eksterne IP:port for socket’en.

Figur 5: En fjernmaskine har etableret en ssh-forbindelse til vores lokale maskine.

Få den til at fungere for dig

Ss Kommandoen ss kan gøre en hel del for at hjælpe dig med at fejlfinde problemer med din Linux-server eller dit netværk. Det vil klæde dig at tage dig tid til at læse ss man-siden igennem (udfør kommandoen man ss). Men på dette tidspunkt bør du i det mindste have en grundlæggende forståelse af, hvordan du kan bruge denne kommando, som du skal kende.

Lær mere om Linux gennem det gratis kursus “Introduction to Linux” fra The Linux Foundation og edX.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.