Příkaz ss je moderní náhradou klasického netstatu. V systému Linux jej můžete použít k získání statistik o vašich síťových připojeních. Zde je návod, jak s tímto šikovným nástrojem pracovat.
Table of Contents
Příkaz ss versus netstat
Náhrada za zastaralé příkaz netstat, ss vám poskytne podrobné informace o tom, jak váš počítač komunikuje s jinými počítači, sítěmi a službami.
ss zobrazuje statistiky pro protokol kontroly přenosu (TCP), Protokol uživatele Datagram (UDP), Unix (meziprocesový)a nezpracované zásuvky. Surové zásuvky působit na síťová úroveň OSI, což znamená, že hlavičky TCP a UDP musí zpracovávat aplikační software, nikoli transportní vrstva. Internet Control Message Protocol (ICMP) zprávy a ping utility oba používají raw sockety.
Pomocí ss
Ss nemusíte instalovat, protože je již součástí aktuální linuxové distribuce. Jeho výstup však může být velmi dlouhý – máme výsledky obsahující přes 630 řádků. Výsledky jsou také velmi široké.
Z tohoto důvodu jsme zahrnuli textové reprezentace výsledků, které jsme získali, protože by se nevešly na snímek obrazovky. Ořízli jsme je, aby byly lépe ovladatelné.
Výpis síťových připojení
Použití ss bez možností příkazového řádku uvádí sokety, které nenaslouchají. To znamená, že uvádí zásuvky, které nejsou ve stavu naslouchání.
Chcete-li to zobrazit, zadejte následující:
ss
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 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps
Sloupce jsou následující:
Netid: Typ zásuvky. V našem příkladu máme „u_str“, unixový stream, „udp“ a „icmp6“, soket ICMP IP verze 6. Můžete najít další popisy Typy linuxových socketů na manuálových stránkách Linuxu.
Stav: Stav, ve kterém se soket nachází.
Recv-Q: Počet přijatých paketů.
Send-Q: Počet odeslaných paketů.
Local Address:Port: Místní adresa a port (nebo ekvivalentní hodnoty pro Unixové sokety).
Peer Address:Port: Vzdálená adresa a port (nebo ekvivalentní hodnoty pro Unixové sokety).
U UDP socketů je sloupec „State“ obvykle prázdný. Pro TCP sokety to může být jeden z následujících:
LISTEN: Pouze na straně serveru. Soket čeká na žádost o připojení.
SYN-SENT: Pouze na straně klienta. Tento soket zadal požadavek na připojení a čeká, zda bude přijat.
SYN-RECEIVED: Pouze na straně serveru. Tento soket čeká na potvrzení připojení po přijetí požadavku na připojení.
ZALOŽENO: Server a klienti. Mezi serverem a klientem bylo navázáno funkční spojení, které umožňuje přenos dat mezi nimi.
FIN-WAIT-1: Server a klienti. Tento soket čeká na požadavek na ukončení připojení ze vzdáleného soketu nebo na potvrzení požadavku na ukončení připojení, který byl dříve odeslán z tohoto soketu.
FIN-WAIT-2: Server a klienti. Tento soket čeká na požadavek na ukončení připojení ze vzdáleného soketu.
CLOSE-WAIT: Server a klient. Tento soket čeká na požadavek na ukončení připojení od místního uživatele.
UZAVŘENÍ: Server a klienti. Tento soket čeká na potvrzení požadavku na ukončení připojení ze vzdáleného soketu.
LAST-ACK: Server a klient. Tento soket čeká na potvrzení požadavku na ukončení připojení, který odeslal vzdálenému soketu.
TIME-WAIT: Server a klienti. Tento soket odeslal potvrzení vzdálenému soketu, aby mu oznámil, že přijal požadavek na ukončení vzdáleného soketu. Nyní čeká, aby se ujistil, že bylo přijato potvrzení.
ZAVŘENO: Neexistuje žádné spojení, takže zásuvka byla ukončena.
Výpis poslechových zásuvek
Abychom viděli naslouchající sokety, přidáme volbu -l (naslouchání), takto:
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
Všechny tyto zásuvky jsou nezapojené a poslouchají. „rtnl“ znamená směrovací netlink, který se používá k přenosu informací mezi procesy jádra a uživatelského prostoru.
Výpis všech zásuvek
Chcete-li vypsat všechny sokety, můžete použít volbu -a (vše):
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 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:smtp [::]:*
Výstup obsahuje všechny zásuvky bez ohledu na stav.
Výpis TCP Sockets
Můžete také použít filtr, takže se zobrazí pouze odpovídající sokety. Použijeme volbu -t (TCP), takže budou uvedeny pouze sokety TCP:
ss -a -t
Výpis UDP Sockets
Volba -u (UDP) provádí stejný typ akce filtrování. Tentokrát uvidíme pouze zásuvky UDP:
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 [::]:*
Výpis Unixových soketů
Chcete-li zobrazit pouze sokety Unix, můžete zahrnout volbu -x (Unix), jak je znázorněno níže:
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
Výpis Raw Sockets
Filtr pro nezpracované zásuvky je volba -w (raw):
ss -a -w
Výpis soketů IP verze 4
Sokety používající protokol TCP/IP verze 4 lze vypsat pomocí volby -4 (IPV4):
ss -a -4
Výpis soketů IP verze 6
Můžete zapnout odpovídající filtr IP verze 6 s možností -6 (IPV6), takto:
ss -a -6
Výpis zásuvek podle státu
Pomocí možnosti stavu můžete vypsat zásuvky podle stavu, ve kterém se nacházejí. To funguje se zavedenými, naslouchajícími nebo uzavřenými stavy. Použijeme také volbu resolve (-r), která se pokouší přeložit síťové adresy na jména a porty na protokoly.
Následující příkaz vyhledá navázaná připojení TCP a ss se pokusí přeložit názvy:
ss -t -r state established
Jsou uvedena čtyři připojení, která jsou v zavedeném stavu. Název hostitele, ubuntu20-04, byl vyřešen a místo 22 se pro připojení SSH na druhém řádku zobrazuje „ssh“.
Můžeme to zopakovat a hledat zásuvky ve stavu naslouchání:
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 [::]:*
Výpis soketů podle protokolu
Můžete vypsat zásuvky pomocí konkrétního protokolu s možnostmi dport a sport, které představují cílové a zdrojové porty.
Pro výpis soketů pomocí protokolu HTTPS na navázaném připojení zadáme následující (všimněte si mezery za úvodní závorkou a před uzavírací závorkou):
ss -a state established ‘( dport = :https or sport = :https )’
Můžeme použít název protokolu nebo port obvykle spojený s tímto protokolem. Výchozí port pro Secure Shell (SSH) je port 22.
Použijeme název protokolu v jednom příkazu a poté jej zopakujeme s číslem portu:
ss -a ‘( dport = :ssh or sport = :ssh )’
ss -a ‘( dport = :22 or sport = :22 )’
Jak se dalo očekávat, dostaneme stejné výsledky.
Výpis připojení ke konkrétní IP adrese
Pomocí volby dst (destination) můžeme vypsat spojení na konkrétní cílovou IP adresu.
Zadáme následující:
ss -a dst 192.168.4.25
Identifikace procesů
Chcete-li zjistit, které procesy používají sokety, můžete použít volbu procesů (-p), jak je uvedeno níže (pozor, musíte použít 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))
To nám ukazuje, že dvě navázaná připojení na soketech TCP jsou používána démonem SSH a Firefoxem.
Hodný nástupce
Příkaz ss poskytuje stejné informace, které dříve poskytoval netstat, ale jednodušším a přístupnějším způsobem. Můžete se podívat na manuálová stránka pro další možnosti a tipy.