Komento ss
on nykyaikainen korvaaja klassiselle komennolle netstat
. Voit käyttää sitä Linuxissa saadaksesi tilastoja verkkoyhteyksistäsi. Tässä kerrotaan, miten työskentelet tämän kätevän työkalun kanssa.
Ss-komento vs. netstat
Korvaa vanhentuneen netstat
-komennon, ss
antaa sinulle yksityiskohtaisia tietoja siitä, miten tietokoneesi kommunikoi muiden tietokoneiden, verkkojen ja palveluiden kanssa.
ss
näyttää tilastotietoja TCP:stä (Transmission Control Protocol, TCP), UDP:stä (User Datagram Protocol, User Datagram Protocol, UDP), Unixista (prosessien välisestä) ja raa’asta pistorasiasta. Raakapistorasiat toimivat verkon OSI-tasolla, mikä tarkoittaa, että TCP- ja UDP-otsikot on käsiteltävä sovellusohjelmistossa, ei siirtokerroksessa. Internet Control Message Protocol (ICMP) -viestit ja ping-apuohjelma käyttävät molemmat raw socketsia.
Ss:n käyttäminen
Sinun ei tarvitse asentaa ss
, koska se on jo osa ajantasaista Linux-jakelua. Sen tulosteet voivat kuitenkin olla hyvin pitkiä – olemme saaneet yli 630 riviä sisältäviä tuloksia. Tulokset ovat myös hyvin laajoja.
Tästä syystä olemme liittäneet tekstimuotoisia esityksiä saamistamme tuloksista, koska ne eivät mahtuisi kuvakaappaukseen. Olemme karsineet niitä, jotta ne olisivat helpommin hallittavissa.
Verkkoyhteyksien luettelointi
Käyttämällä ss
ilman komentorivioptioita luetteloidaan pistorasiat, jotka eivät kuuntele. Toisin sanoen se listaa ne pistorasiat, jotka eivät ole kuuntelevassa tilassa.
Nähdäksesi tämän, kirjoita seuraava:
ss
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Processu_str ESTAB 0 0 * 41826 * 41827u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688u_str ESTAB 0 0 * 35550 * 35551...u_str ESTAB 0 0 * 38127 * 38128u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242u_str ESTAB 0 0 * 19039 * 19040u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306icmp6 UNCONN 0 0 *:ipv6-icmp *:*udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Sarakkeet ovat seuraavat:
- Netid: Socketin tyyppi. Esimerkissämme on ”u_str”, Unix stream, ”udp” ja ”icmp6”, IP-version 6 ICMP-socket. Löydät lisää kuvauksia Linuxin socket-tyypeistä Linuxin man-sivuilta.
- State: Tila, jossa socket on.
- Recv-Q: Vastaanotettujen pakettien määrä.
- Send-Q: Lähetettyjen pakettien määrä.
- Paikallinen osoite:Portti: Paikallinen osoite ja portti (tai vastaavat arvot Unix-pistorasioille).
- Vertaisosoite:Portti: Etäosoite ja portti (tai vastaavat arvot Unix-pistorasioille).
UDP-pistorasioilla ”Tila”-sarake on yleensä tyhjä. TCP-sokereissa se voi olla jokin seuraavista:
- LISTEN: Vain palvelinpuolella. Socket odottaa yhteyspyyntöä.
- SYN-SENT: Vain asiakaspuolella. Tämä pistorasia on tehnyt yhteyspyynnön ja odottaa, onko se hyväksytty.
- SYN-RECEIVED: Vain palvelinpuolella. Tämä socket odottaa yhteyden kuittausta hyväksyttyään yhteyspyynnön.
- ESTABLISHED: Palvelin ja asiakkaat. Palvelimen ja asiakkaan välille on muodostettu toimiva yhteys, joka mahdollistaa tiedonsiirron näiden kahden välillä.
- FIN-WAIT-1: Palvelin ja asiakkaat. Tämä pistorasia odottaa yhteyden katkaisupyyntöä etäpistorasiasta tai kuittausta yhteyden katkaisupyynnöstä, joka on aiemmin lähetetty tästä pistorasiasta.
- FIN-WAIT-2: Palvelin ja asiakkaat. Tämä pistorasia odottaa yhteyden päättämispyyntöä etäpistorasiasta.
- CLOSE-WAIT: Palvelin ja asiakas. Tämä socket odottaa yhteyden päättämispyyntöä paikalliselta käyttäjältä.
- CLOSING: Palvelin ja asiakkaat. Tämä pistorasia odottaa yhteyden päättämispyynnön kuittausta etäpistokkeelta.
- LAST-ACK: Palvelin ja asiakas. Tämä pistorasia odottaa kuittausta etäpistorasiaan lähettämälleen yhteyden päättämispyynnölle.
- TIME-WAIT: Palvelin ja asiakkaat. Tämä socket lähetti kuittauksen etäyhteyssocketille ilmoittaakseen, että se on vastaanottanut etäyhteysscketin yhteyden päättämispyynnön. Se odottaa nyt varmistaakseen, että kuittaus on vastaanotettu.
- CLOSED: Yhteyttä ei ole, joten socket on lopetettu.
Listaus kuuntelevista pistorasioista
Katsellaksemme kuuntelevia pistorasioita lisäämme -l
(kuuntelu) -vaihtoehdon seuraavasti:
ss -l
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ...u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0
Nämä pistorasioita ei ole yhdistetty ja ne kuuntelevat. ”rtnl” tarkoittaa reititysverkkoyhteyttä (routing netlink), jota käytetään tiedonsiirtoon ytimen ja käyttäjäavaruuden prosessien välillä.
Listaus kaikista pistorasioista
Listaaksesi kaikki pistorasiat voit käyttää -a
(all) -vaihtoehtoa:
ss -a
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ...u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ...udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ...tcp LISTEN 0 128 :ssh :* tcp LISTEN 0 5 :ipp :* tcp LISTEN 0 100 :smtp :*
Tulosteessa ovat mukana kaikki pistorasiat tilasta riippumatta.
Listing TCP Sockets
Voit myös käyttää suodatinta, jolloin vain vastaavat pistorasiat näytetään. Käytämme -t
(TCP) -vaihtoehtoa, joten vain TCP-pistorasiat luetellaan:
ss -a -t
UDP-pistorasioiden luettelointi
Vaihtoehto -u
(UDP) suorittaa samantyyppisen suodatustoiminnon. Tällä kertaa näemme vain UDP-pistorasiat:
ss -a -u
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 :mdns :* UNCONN 0 0 :51193 :*
Listing Unix Sockets
Näyttääksesi vain Unix-pistorasiat voit sisällyttää -x
(Unix) -vaihtoehdon, kuten alla näkyy:
ss -a -x
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ...u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306
Listing Raw Sockets
Raakapistorasioiden suodatin on -w
(raw) -valinta:
ss -a -w
Ip-version 4 pistorasioiden luettelointi
TCP/IP-version 4 -protokollaa käyttävät pistorasiat voidaan luetteloida käyttämällä -4
(IPV4) -valintaa:
ss -a -4
Luettelointi IP Version 6 Sockets
Voit ottaa käyttöön sopivan IP Version 6 -suodattimen -6
(IPV6) -valinnalla seuraavasti:
ss -a -6
Listing Sockets By State
Vaihtoehdolla state
voit luetella pistorasiat sen tilan mukaan, jossa ne ovat. Tämä toimii perustetun, kuuntelevan tai suljetun tilan kanssa. Käytämme myös resolve-vaihtoehtoa (-r
), joka yrittää ratkaista verkko-osoitteet nimiksi ja portit protokolliksi.
Seuraavalla komennolla etsitään vakiintuneita TCP-yhteyksiä, ja ss
yrittää ratkaista nimet:
ss -t -r state established
Luettelossa on neljä yhteyttä, jotka ovat vakiintuneessa tilassa. Isäntänimi ubuntu20-04 on ratkaistu, ja toisella rivillä olevan SSH-yhteyden 22:n sijasta näytetään ”ssh”.
Voidaan toistaa tämä etsiaksemme kuuntelutilassa olevia pistorasioita:
ss -t -r state listening
Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:smtp 0.0.0.0:* 0 128 :ssh :* 0 5 ip6-localhost:ipp :* 0 100 ip6-localhost:smtp :*
Pistorasioiden listaaminen protokollan mukaan
Voidaan listata tiettyä protokollaa käyttävät pistorasiat valinnoilla dport
ja sport
, jotka edustavat kohde- ja lähdeporttia.
Kirjoitamme seuraavalla tavalla listataksemme HTTPS-protokollaa käyttävät socketit established
-yhteydellä (huomaa välilyönti avaavan sulkeuman jälkeen ja ennen sulkeutuvaa sulkeumaa):
ss -a state established '( dport = :https or sport = :https )'
Voidaan käyttää protokollan nimeä tai porttia, joka yleensä liitetään kyseiseen protokollaan. Secure Shellin (SSH) oletusportti on portti 22.
Käytämme protokollan nimeä yhdessä komennossa ja toistamme sen sitten käyttäen portin numeroa:
ss -a '( dport = :ssh or sport = :ssh )'
ss -a '( dport = :22 or sport = :22 )'
Valmiustietojen perusteella saamme odotetusti samat tulokset.
Yhteyksien luetteleminen tiettyyn IP-osoitteeseen
Vaihtoehdon dst
(määränpää)-vaihtoehto avulla voimme luettelemme yhteyksiä tiettyyn määränpäänä olevaan IP-osoitteeseen.
Kirjoitamme seuraavaa:
ss -a dst 192.168.4.25
Prosessien tunnistaminen
Voidaksesi nähdä, mitkä prosessit käyttävät pistorasioita, voit käyttää processes-vaihtoehtoa (-p
) alla esitetyllä tavalla (huomaa, että sinun on käytettävä sudo
):
sudo ss -t -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))
Tämä osoittaa, että SSH-demoni ja Firefox käyttävät kahta perustettua yhteyttä TCP-socketilla.
A Worthy Successor
Komento ss
antaa samat tiedot, jotka aiemmin toimitettiin komennolla netstat
, mutta yksinkertaisemmassa ja helpommin lähestyttävässä muodossa. Voit tutustua man-sivuun saadaksesi lisää vaihtoehtoja ja vinkkejä.