Een Introductie tot het ss commando

Leer hoe je netwerk informatie ophaalt met het ss commando in deze tutorial uit de archieven.

Linux bevat een vrij groot scala aan tools om aan bijna elke behoefte te voldoen. Van ontwikkeling tot beveiliging tot productiviteit tot beheer… als je het gedaan moet krijgen, is Linux er om te dienen. Een van de vele gereedschappen die admins vaak gebruikten was netstat. Echter, het netstat commando is afgeschreven ten gunste van het snellere, meer menselijk leesbare ss commando.

Het ss commando wordt gebruikt om socket-statistieken te dumpen en geeft informatie weer op vergelijkbare wijze (hoewel eenvoudiger en sneller) als netstat. Het ss commando kan ook nog meer TCP en statusinformatie weergeven dan de meeste andere gereedschappen. Omdat ss de nieuwe netstat is, gaan we bekijken hoe je deze tool kunt gebruiken, zodat je gemakkelijker informatie kunt krijgen over je Linux machine en wat er aan de hand is met netwerkverbindingen.

Het ss command-line hulpprogramma kan statistieken weergeven voor PACKET, TCP, UDP, DCCP, RAW, en Unix domein sockets. De vervanger van netstat is eenvoudiger in gebruik (vergelijk de man pagina’s om direct een idee te krijgen van hoeveel eenvoudiger ss is). Met ss krijg je zeer gedetailleerde informatie over hoe je Linux machine communiceert met andere machines, netwerken en diensten; details over netwerkverbindingen, netwerkprotocolstatistieken, en Linux socket-verbindingen. Met deze informatie in de hand, kunt u veel gemakkelijker verschillende netwerkproblemen oplossen.

Laten we eens op snelheid komen met ss, zodat u het kunt beschouwen als een nieuw gereedschap in uw beheerderskit.

Basisgebruik

Het ss commando werkt zoals elk commando op het Linux platform: Geef het commando executable en volg het met een willekeurige combinatie van de beschikbare opties. Als u de ss man pagina bekijkt (gebruik het commando man ss), zult u merken dat er lang niet zoveel opties zijn als voor het netstat commando; maar dat is niet hetzelfde als een gebrek aan functionaliteit. In feite is ss behoorlijk krachtig.

Als u het commando ss uitvoert zonder argumenten of opties, krijgt u een complete lijst van TCP sockets met opgezette verbindingen (Figuur 1).

Figuur 1: Een complete lijst van alle opgezette TCP verbindingen.

Omdat het ss commando (zonder opties) een aanzienlijke hoeveelheid informatie zal weergeven (alle tcp, udp, en unix socket verbindingsdetails), zou u de uitvoer van dat commando ook naar een bestand kunnen sturen om het later te bekijken, zoals dit:

ss > ss_output

Natuurlijk is een zeer eenvoudig commando niet zo bruikbaar voor iedere situatie. Wat als we alleen de huidige luisterende sockets willen zien? Simpel, voeg de -l optie toe zoals dit:

ss -l

Het bovenstaande commando zal alleen een lijst weergeven van de huidige luisterende sockets.

Om het wat specifieker te maken, zie het als volgt: ss kan gebruikt worden om TCP verbindingen te bekijken met de -t optie, UDP verbindingen met de -u optie, of UNIX verbindingen met de -x optie; dus ss -t, ss -u, of ss -x. Door een van deze commando’s uit te voeren, krijgt u een uitgebreide lijst met informatie die u kunt doornemen (Figuur 2).

Figuur 2: Door ss -u uit te voeren op Elementary OS krijgt u een snel overzicht van UDP verbindingen.

Standaard geeft het gebruik van de -t, de -u, of de -x opties alleen de verbindingen weer die tot stand zijn gebracht (of verbonden). Als we verbindingen willen ophalen die aan het luisteren zijn, moeten we de -a optie toevoegen zoals:

ss -t -a 

De uitvoer van het bovenstaande commando zal alle TCP sockets bevatten (Figuur 3).

Figuur 3: Merk op dat de laatste socket ssh is die luistert op het apparaat.

In het bovenstaande voorbeeld kunt u zien dat er UDP-verbindingen (in verschillende toestanden) worden gemaakt vanaf het IP-adres van mijn machine, vanaf verschillende poorten, naar verschillende IP-adressen, via verschillende poorten. In tegenstelling tot de netstat versie van dit commando, toont ss niet de PID en commandonaam die verantwoordelijk zijn voor deze verbindingen. Zelfs dan heb je nog genoeg informatie om te beginnen met troubleshooten. Mocht een van deze poorten of URL’s verdacht zijn, dan weet je nu welk IP adres/Poort de verbinding maakt. Hiermee hebt u nu de informatie die u kan helpen in de vroege stadia van het oplossen van een probleem.

Filtering ss met TCP States

Een erg handige optie die beschikbaar is voor het ss commando is de mogelijkheid om te filteren met TCP states (de “levensfasen” van een verbinding). Met toestanden kunt u de resultaten van uw ss commando gemakkelijker filteren. Het ss commando kan gebruikt worden in combinatie met alle standaard TCP toestanden:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • time-wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Andere beschikbare toestandsidentifiers die ss herkent zijn:

  • all (alle bovenstaande toestanden)

  • connected (alle toestanden met uitzondering van listen en closed)

  • synchronized (alle verbonden toestanden met uitzondering van syn-sent)

  • bucket (toestanden die worden onderhouden als minisockets, bijvoorbeeld time-wait en

  • syn-recv)

  • big (Tegenovergestelde van bucket state)

De syntaxis voor het werken met states is eenvoudig.

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

Waarbij FILTER de naam is van de toestand die u wilt gebruiken.

Stel dat u alle luisterende IPv4 sockets op uw machine wilt bekijken. Hiervoor zou het commando zijn:

ss -4 state listening

De resultaten van dat commando zouden er ongeveer zo uitzien als in Figuur 4.

Figuur 4: Gebruik van ss met een luisterstatusfilter.

Toon verbonden sockets van een specifiek adres

Een handige taak die u aan ss kunt toewijzen, is om het verbindingen te laten rapporteren die door een ander IP-adres zijn gemaakt. Stel dat u wilt weten of/hoe een machine op IP adres 192.168.1.139 verbinding heeft gemaakt met uw server. Hiervoor zou u het volgende commando kunnen geven:

ss dst 192.168.1.139

De resulterende informatie (Figuur 5) zal u het Netid, de status, het lokale IP:poort, en het externe IP:poort van de socket geven.

Figuur 5: Een machine op afstand heeft een ssh-verbinding tot stand gebracht met onze lokale machine.

Maak het werkend voor u

Het ss commando kan heel wat doen om u te helpen problemen met uw Linux server of uw netwerk op te lossen. Het zou je goed doen om de tijd te nemen om de ss man page door te lezen (gebruik het commando man ss). Maar op dit punt zou je tenminste een fundamenteel begrip moeten hebben van hoe je dit onmisbare commando moet gebruiken.

Leer meer over Linux via de gratis cursus “Inleiding tot Linux” van The Linux Foundation en edX.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.