Johdatus ss-komentoon

Opi saamaan verkkotietoja ss-komennon avulla tässä arkistoista löytyvässä opetusohjelmassa.

Linuxissa on melko massiivinen valikoima työkaluja lähes kaikkiin tarpeisiin. Kehittämisestä tietoturvaan, tuottavuuteen ja hallintaan… jos sinun on saatava se tehtyä, Linux palvelee sinua. Yksi monista työkaluista, joihin ylläpitäjät usein turvautuivat, oli netstat. Netstat-komento on kuitenkin poistettu käytöstä nopeamman ja helppolukuisemman ss-komennon hyväksi.

Ss-komento on työkalu, jota käytetään socket-tilastojen dumppaamiseen, ja se näyttää tietoja samalla tavalla (joskin yksinkertaisemmin ja nopeammin) kuin netstat. ss-komento voi myös näyttää jopa enemmän TCP- ja tilatietoja kuin useimmat muut työkalut. Koska ss on uusi netstat, katsomme, miten voit hyödyntää tätä työkalua, jotta saat helpommin tietoa Linux-koneestasi ja siitä, mitä verkkoyhteyksissä tapahtuu.

Ss-komentorivin apuohjelma voi näyttää tilastotietoja esimerkiksi PACKET-, TCP-, UDP-, DCCP-, RAW- ja Unix-domain-soketeista. Netstatin korvaaja on helpompi käyttää (vertaa man-sivuja saadaksesi välittömän käsityksen siitä, kuinka paljon helpompi ss on). ss:n avulla saat hyvin yksityiskohtaista tietoa siitä, miten Linux-koneesi kommunikoi muiden koneiden, verkkojen ja palveluiden kanssa; tietoja verkkoyhteyksistä, verkkoprotokollatilastoja ja Linux-socket-yhteyksiä. Kun sinulla on nämä tiedot käsissäsi, voit paljon helpommin etsiä vikoja erilaisista verkkoyhteyksiin liittyvistä ongelmista.

Huomautetaanpa ss:n käyttöä, jotta voit pitää sitä uutena työkaluna järjestelmänvalvojapakissasi.

Peruskäyttö

Ss-komento toimii kuten mikä tahansa komento Linux-alustalla: Anna komento executable ja seuraa sitä millä tahansa käytettävissä olevien vaihtoehtojen yhdistelmällä. Jos vilkaiset ss:n man-sivua (anna komento man ss), huomaat, että siinä ei ole läheskään niin paljon vaihtoehtoja kuin netstat-komennossa; tämä ei kuitenkaan tarkoita toiminnallisuuden puutetta. Itse asiassa ss on varsin tehokas.

Jos annat komennon ss ilman mitään argumentteja tai vaihtoehtoja, se palauttaa täydellisen luettelon TCP-pistorasioista, joihin on muodostettu yhteyksiä (kuva 1).

Kuva 1: Täydellinen luettelo kaikista muodostetuista TCP-yhteyksistä.

Koska ss-komento (ilman optioita) näyttää huomattavan määrän tietoa (kaikki tcp-, udp- ja unix-socket-yhteyksien tiedot), voit myös lähettää tuon komennon tulosteen tiedostoon myöhempää tarkastelua varten esimerkiksi näin:

ss > ss_output

Kovin perustavanlaatuinen komento ei tietenkään ole kovin käyttökelpoinen kaikissa tilanteissa. Entä jos haluamme tarkastella vain nykyisiä kuuntelevia pistorasioita? Yksinkertaista, lisää -l-optio näin:

ss -l

Ylläoleva komento tulostaa vain luettelon nykyisistä kuuntelevista socketeista.

Hieman tarkentaaksemme asiaa, ajattele sitä näin: ss:llä voidaan tarkastella TCP-yhteyksiä käyttämällä -t-optiota, UDP-yhteyksiä käyttämällä -u-optiota tai UNIX-yhteyksiä käyttämällä -x-optiota; siis ss -t, ss -u tai ss -x. Käyttämällä mitä tahansa näistä komennoista saat listattua runsaasti tietoa, jota voit kammeta läpi (kuva 2).

Kuva 2: Käyttämällä ss -u Elementary OS:ssä saat nopeasti näkyviin UDP-yhteydet.

Vakiintuneesti pelkällä -t-, -u- tai -x-optioiden käyttämisellä saat listattua näkyviin vain yhteydet, jotka on muodostettu (tai yhdistetty). Jos haluamme poimia yhteydet, jotka kuuntelevat, meidän on lisättävä -a-vaihtoehto esimerkiksi näin:

ss -t -a 

Yllä olevan komennon tuloste sisältää kaikki TCP-pistorasiat (kuva 3).

Kuva 3: Huomaa, että viimeinen socket on ssh, joka kuuntelee laitteessa.

Yllä olevassa esimerkissä näkyy, että UDP-yhteyksiä (vaihtelevissa tiloissa) muodostetaan koneeni IP-osoitteesta, eri porteista, eri IP-osoitteisiin, eri porttien kautta. Toisin kuin tämän komennon netstat-versio, ss ei näytä PID:tä ja komennon nimeä, jotka ovat vastuussa näistä yhteyksistä. Siitä huolimatta sinulla on runsaasti tietoa vianmäärityksen aloittamiseksi. Jos jokin näistä porteista tai URL-osoitteista on epäilyttävä, tiedät nyt, mikä IP-osoite/portti muodostaa yhteyden. Näin sinulla on nyt tietoja, jotka voivat auttaa sinua ongelman vianmäärityksen alkuvaiheessa.

Ss:n suodattaminen TCP-tilojen avulla

Eräs erittäin kätevä ss-komennon käytettävissä oleva vaihtoehto on mahdollisuus suodattaa TCP-tilojen avulla (yhteyden ”elämänvaiheet”). Tilojen avulla voit suodattaa ss-komennon tuloksia helpommin. ss-työkalua voidaan käyttää yhdessä kaikkien tavallisten TCP-tilojen kanssa:

  • established

  • syn-sent

  • syn-recv

  • fin-wait-1

  • fin-wait-2

  • toiminta-aika…wait

  • closed

  • close-wait

  • last-ack

  • listening

  • closing

Muita käytettävissä olevia tilatunnisteita, jotka ss tunnistaa ovat:

  • all (kaikki edellä mainitut tilat)

  • connected (kaikki tilat kuuntelua ja sulkeutumista lukuun ottamatta)

  • synchronized (kaikki kytketyt tilat syn-sent:iä lukuun ottamatta)

  • bucket (tilat, joita ylläpidetään minisocketeina, esimerkiksi time-wait ja

  • syn-recv)

  • big (vastakohta bucket-tilalle)

Tilojen kanssa työskentelyn syntaksi on yksinkertainen.

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

Jossa FILTER on sen tilan nimi, jota haluat käyttää.

Tapauksessa haluat tarkastella kaikkia koneesi kuuntelevia IPv4-socketeita. Tätä varten komento olisi:

ss -4 state listening

Komennon tulokset näyttäisivät samankaltaisilta kuin kuvassa 4.

Kuva 4: ss:n käyttäminen kuuntelutilasuodattimen kanssa.

Näytä kytketyt pistorasiat tietystä osoitteesta

Yksi käteväksi tehtäväksi voit antaa ss:n tehtäväksi saada se ilmoittamaan toisesta IP-osoitteesta tulleista yhteyksistä. Sanotaan, että haluat selvittää, onko IP-osoitteessa 192.168.1.139 oleva kone muodostanut yhteyden palvelimeesi. Tätä varten voit antaa komennon:

ss dst 192.168.1.139

Tuloksena saadut tiedot (kuva 5) ilmoittavat sinulle socketin Netid:n, tilan, paikallisen IP:portin ja etä-IP:portin.

Kuva 5: Etäkone on muodostanut ssh-yhteyden paikalliseen koneeseemme.

Make it work for you

Ss-komennolla voi tehdä melko paljon, jotta voit auttaa sinua Linux-palvelimesi tai verkkojesi ongelmien selvittämisessä. Sinun kannattaisi käyttää aikaa ss:n man-sivun lukemiseen (anna komento man ss). Mutta tässä vaiheessa sinulla pitäisi olla ainakin perusymmärrys siitä, miten käyttää tätä pakollista komentoa.

Opi lisää Linuxista The Linux Foundationin ja edX:n ilmaisella ”Introduction to Linux” -kurssilla.

Vastaa

Sähköpostiosoitettasi ei julkaista.