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).
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).
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).
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.
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.
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.