GNU/Linux >> Znalost Linux >  >> Linux

10 příkladů příkazu Linux ss pro monitorování síťových připojení

ss - statistika socketů

V předchozím tutoriálu jsme viděli, jak použít příkaz netstat k získání podrobností o síťových/soketových připojeních. Příkaz netstat je však již dlouho zastaralý a nahrazen příkazem ss ze sady nástrojů iproute.

Příkaz ss je schopen zobrazit podrobnosti o síťových připojeních s více informacemi než příkaz netstat a je rychlejší. Příkaz netstat čte různé soubory /proc, aby shromáždil informace. Tento přístup je však pomalejší, pokud existuje mnoho připojení k zobrazení.

Příkaz ss získává informace přímo z prostoru jádra. Možnosti používané s příkazy ss jsou velmi podobné příkazu netstat, což umožňuje snadnou náhradu.

V tomto tutoriálu se tedy podíváme na několik příkladů, jak používat příkaz ss ke kontrole síťových připojení a statistik soketů.

1. Vypsat všechna připojení

Nejjednodušší příkaz je vypsat všechna připojení.

$ ss | méněNetid State Recv-Q Send-Q Local Address:Port Peer Address:Portu_str ESTAB 0 0 * 15545 * 15544u_str ESTAB 0 0 * 12240 * 12241u_str ESTAB 0 0 @/tmp/dbus-2hQdRv1712AB99592 1252 EST 0str. ESTAB 0 0 * 15204 * 15205.....

Výstup nasměrujeme na méně, aby byl výstup rolovatelný. Výstup bude obsahovat všechny podrobnosti o připojení tcp, udp a unix socket.

2. Odfiltrujte připojení tcp, udp nebo unix

Chcete-li zobrazit pouze připojení tcp nebo udp nebo unix, použijte volbu t, u nebo x.

$ ss -tState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.1.2:43839 108.160.162.37:httpESTAB 0 0 192.168.1.2:43622 190.15 ESTAB92.01908.1 :33141 83.170.73.249:ircdESTAB 0 0 192.168.1.2:54028 74.125.135.125:xmpp-client
$ ss -tOR$ ss -A tcp

Ve výchozím nastavení bude samotná volba „t“ hlásit pouze ta připojení, která jsou „navázaná“ nebo PŘIPOJENÁ. Nehlásí tcp sokety, které „NASLOUCHAJÍ“. K nahlášení použijte volbu „-a“ spolu s t všechny najednou.

Vypsat všechna připojení udp

$ ss -uaState Recv-Q Send-Q Local Address:Port Peer Address:PortUNCONN 0 0 192.168.1.2:48268 *:*UNCONN 0 0 192.168.1.2:56575 *:*UNCONN 0 0 *:40309 *UNCONN 0 0 192.168.1.2:56879 *:*UNCONN 0 0 *:49014 *:*UNCONN 0 0 192.168.1.2:53124 *:*UNCONN 0 0 127.0.1.1:pre>doména *:*
$ ss -a -A udp
Volba a říká ss, aby hlásil jak "CONNECTED" tak "LISTENING" sockety. Protože UDP je protokol bez připojení, pouhé "ss -u" ve většině případů nic nehlásí. Proto používáme možnost "a" hlásit všechna připojení UDP (připojená a naslouchající).

Podobně použijte volbu x k vypsání všech unixových soketových připojení.

3. Nepřekládat název hostitele

Chcete-li získat výstup rychleji, použijte volbu "n", abyste zabránili ss v překladu IP adres na názvy hostitelů. To však také zabrání rozlišení čísel portů.

$ ss -ntState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.1.2:43839 108.160.162.37:80ESTAB 0 0 192.168.1.2:514250 74.0.0.8 :33141 83.170.73.249:6667ESTAB 0 0 192.168.1.2:54028 74.125.135.125:5222ESTAB 0 0 192.168.1.2:48156 66.021.0.0. 

4. Zobrazit pouze naslouchající zásuvky

Tím se zobrazí seznam všech naslouchacích zásuvek. Například webový server apache otevře soketové připojení na portu 80, aby naslouchal příchozím připojením.

$ ss -ltnState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 5 127.0.1.1:53 *:*LISTEN 0 128 127.0.0.1:631 *:*LISTEN 0 128 ::1:631 :::*

Výše uvedený příkaz vypíše všechna připojení "naslouchání" "tcp". Volba n deaktivuje rozlišení názvů hostitelů IP adres, takže výstup je rychlejší.

Chcete-li vypsat všechna naslouchající připojení udp, nahraďte t za u

$ ss -lunState Recv-Q Send-Q Local Address:Port Peer Address:PortUNCONN 0 0 127.0.1.1:53 *:*UNCONN 0 0 *:68 *:*UNCONN 0 0 192.168.1.2:123 *:*UNCONN 0 0 127.0.0.1:123 *:*UNCONN 0 0 *:123 *:*UNCONN 0 0 *:5353 *:*UNCONN 0 0 *:47799 *:*UNCONN 0 0 *:25322 *:*UNCONN 0 0 :::54310 :::*.....

5. Vytisknout název procesu a pid

Chcete-li vytisknout název procesu/pid, který vlastní připojení, použijte volbu p

$ ss -ltpState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 100 127.0.0.1:smtp *:*LISTEN 0 128 127.0.0.1:9050 *:*LISTEN 0 128 *:90 *:*POSLECH 0 128 *:db-lsp *:* users:(("dropbox",3566,32))POSLECH 0 5 127.0.0.1:6600 *:*POSLECH 0 128 127.0.0.1:9000 *:* uživatelé:( ("php5-fpm",1620,0),("php5-fpm",1619,0))

Ve výše uvedeném výstupu obsahuje poslední sloupec název procesu a pid. V tomto příkladu je dnsmasq název procesu a 1299 je pid.

$ sudo ss -ltp[sudo] heslo pro osvícené:State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 100 127.0.0.1:smtp *:* users:(("master",2051, 12))LISTEN 0 128 *:90 *:* users:(("nginx",1701,6),("nginx",1700,6),("nginx",1699,6),("nginx", 1697,6),("nginx",1696,6))POSLECH 0 5 127.0.0.1:6600 *:* uživatelé:(("mpd",2392,5))POSLECH 0 128 127.0.0.1:9000 *:* users:(("php5-fpm",1620,0),("php5-fpm",1619,0),("php5-fpm",1616,7))POSLECHNOUT 0 16 *:2633 *:* uživatelé:(("oned",1853,16))LISTEN 0 50 127.0.0.1:mysql *:* users:(("mysqld",1095,10))POSLECHNOUT 0 5 127.0.1.1:domain *:* users:(( "dnsmasq",1347,5))POSLECHNOUT 0 32 *:ftp *:* users:(("vsftpd",1051,3))POSLECHNOUT 0 128 *:ssh *:* users:(("sshd",1015,3))POSLECHNOUT 0 128 127.0.0.1:ipp *:* uživatelé :(("cupsd",688,11))POSLECHNOUT 0 128 :::http :::* users:(("apache2",5322,4),("apache2",5321,4),("apache2" ,5317,4),("apache2",5316,4),("apache2",5313,4),("apache2",2505,4))POSLECHNOUT 0 128 :::ssh :::* uživatelé:( ("sshd",1015,4))POSLECHNOUT 0 128 ::1:ipp :::* users:(("cupsd",688,10))

6. Tisk souhrnných statistik

Volba s vytiskne statistiku.

$ ss -sTotal:526 (kernel 0)TCP:10 (estab 7, uzavřeno 0, osiřelé 0, synrecv 0, timewait 0/0), porty 0Transport Total IPv6* 0 - -RAW 0 0 0UDP 15 9 6TCP 10 9 1INET 25 18 7FRAG 0 0 0

7. Zobrazit informace o časovači

S volbou '-o' by se zobrazila časová informace každého připojení. Informace časovače říká, jak dlouho pomocí

$ ss -tn -oState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.1.2:43839 108.160.162.37:80ESTAB 0 0 192.168.1.2:326140. keepalive,26sec,0)ESTAB 0 0 192.168.1.2:33141 83.170.73.249:6667ESTAB 0 0 192.168.1.2:58857 74.121.141.84:80 čas. Časovač 40,239:80:(keepalive,32s,0)

8. Zobrazit pouze připojení soketu IPv4 nebo IPv6

Chcete-li zobrazit pouze připojení soketu IPv4, použijte volbu „-f inet“ nebo „-4“.

$ ss -tl -f inetState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 100 127.0.0.1:smtp *:*LISTEN 0 128 127.0.0.1:9050 *:*LISTEN 0 128 *:90 *:*POSLECH 0 128 *:db-lsp *:*POSLECH 0 5 127.0.0.1:6600 *:*

Chcete-li zobrazit pouze připojení IPv6, použijte volbu „-f inet6“ nebo „-6“.

$ ss -tl6State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 100 ::1:smtp :::*LISTEN 0 128 :::12865 :::*LISTEN 0 128 :::http :::*POSLECH 0 128 :::ssh :::*POSLECH 0 128 ::1:ipp :::*

9. Filtrování připojení podle stavu tcp

Příkaz ss podporuje filtry, které lze použít k zobrazení pouze určitých připojení. Výraz filtru by měl mít příponu za všemi možnostmi. Příkaz ss přijímá filtr v následujícím formátu.

$ ss [ MOŽNOSTI ] [ STAV-FILTR ] [ FILTR ADRESY ]

Zde je několik příkladů, jak filtrovat připojení soketů podle stavů soketů.
Pro zobrazení všech tcp soketů Ipv4, které jsou ve stavu "připojeno".

$ ss -t4 stav zřízenRecv-Q Odeslat-Q Místní adresa:Port Peer Adresa:Port0 0 192.168.1.2:54436 165.193.246.23:https0 0 192.168.1.2:43386 173.16252. :38355 199.59.150.46:https0 0 192.168.1.2:56198 108.160.162.37:http

Zobrazovací zásuvky se stavovým time-wait

$ ss -t4 state time-waitRecv-Q Send-Q Local Address:Port Peer Address:Port0 0 192.168.1.2:42261 199.59.150.39:https0 0 127.0.0.1:43541 127:2633.1>pre 

Stav může být jeden z následujících

1. založeno2. syn-sent3. syn-recv4. fin-čekej-15. fin-čekej-26. čas čekání 7. zavřeno8. zavřít-čekat9. poslední akce 10. uzavření 11. vše - Všechny výše uvedené stavy12. připojeno - Všechny stavy kromě naslouchání a zavřeno13. synchronized - Všechny připojené stavy kromě syn-sent14. bucket - Zobrazit stavy, které jsou udržovány jako minizásuvky, tj. time-wait a syn-recv.15. velký – Opačný stav kbelíku.

Všimněte si, že mnoho stavů jako syn-sent, syn-recv by většinu času nezobrazovalo žádné sokety, protože sokety zůstávají v takových stavech velmi krátkou dobu. Ideální by bylo použít k detekci takových stavů soketu v reálném čase příkaz watch.

Zde je příklad

$ watch -n 1 "ss -t4 state syn-sent"

Po spuštění výše uvedeného příkazu zkuste otevřít nějaký web v prohlížeči nebo si něco stáhnout z nějaké adresy URL. Okamžitě byste měli vidět připojení zásuvek na výstupu, ale na velmi krátkou chvíli.

Každou 1.0s:ss -t4 state syn-sent Út 1. dubna 10:07:33 2014Recv-Q Send-Q Local Address:Port Peer Address:Port0 1 192.168.1.2:55089 202.79.210.121:861.0 1.2:33733 203.84.220.80:https0 1 192.168.1.2:36240 106.10.198.33:https

10. Filtrujte připojení podle adresy a čísla portu

Kromě stavů soketu tcp podporuje příkaz ss také filtrování na základě adresy a čísla portu soketu. Následující příklady to ukazují.

Zobrazit všechna připojení soketu se zdrojovým nebo cílovým portem ssh.

$ ss -at '( dport =:ssh nebo sport =:ssh )'State Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 128 *:ssh *:*LISTEN 0 128 :::ssh :::*

Sokety s cílovým portem 443 nebo 80

$ ss -nt '( dst :443 nebo dst :80 )'State Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.1.2:58844 199.59.148.82:443ESTAB 981.0 0.0 :55320 165.193.246.23:443estab 0 0 192.168.1.2:56198 108.160.162.37:80estab 0 0 192.168.1.2:54889 02043030.15.1303030.15.13030. 38.127.167.38:443

Následující syntaxe by také fungovala

$ ss -nt dst :443 nebo dst :80

Další příklady

# Filtrovat podle adresy$ ss -nt dst 74.125.236.178# Podporován je také zápis CIDR$ ss -nt dst 74.125.236.178/16# Kombinace adresy a portu$ ss -nt dst 74.125.236.178:80

Porty lze také filtrovat pomocí možností dport/sport. Čísla portů musí mít předponu „:“.

$ ss -nt dport =:80State Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 0 192.168.1.2:56198 108.160.162.37:80ESTAB 0 0 192.168.233.55.0958 0 192.168.1.2:55043 74.125.236.178:80

Výše uvedené je stejné jako> ss -nt dst :80

Několik dalších příkladů filtrování

# zdrojová adresa je 127.0.0.1 a zdrojový port je větší než 5000$ ss -nt src 127.0.0.1 sport gt :5000# místní smtp (port 25) zásuvky$ sudo ss -ntlp sport eq :smtp# čísla portů větší než 25 $ sudo ss -nt sport gt :1024# zásuvky se vzdálenými porty méně než 100 $ sudo ss -nt dport \<:100# připojení ke vzdálenému portu 80$ sudo ss -nt stav připojený dport =:80

Při porovnávání čísel portů jsou podporováni následující operátoři

<=or le :Menší nebo rovno portu>=nebo ge :Větší nebo rovno portu==nebo eq :Rovná se portu!=or ne :Nerovná se portu nebo lt :Větší než na port

Shrnutí

Výše uvedené příklady pokrývají většinu toho, co příkaz ss podporuje. Pro více informací navštivte manuálové stránky.

Dokumentaci syntaxe filtru lze nalézt v balíčku iproute2-doc, který lze nainstalovat na systémy debian/ubuntu

$ sudo apt-get install iproute2-doc

Soubor /usr/share/doc/iproute2-doc/ss.html obsahuje podrobnosti o syntaxi filtru příkazu ss.


Linux
  1. 7 Příklady příkazů Linux df

  2. Příklady příkazů rm v Linuxu

  3. Příklady příkazů ps v Linuxu

  1. sa Příklady příkazů v Linuxu

  2. w Příklady příkazů v Linuxu

  3. Příklady příkazů dsniff v Linuxu

  1. Příklady příkazů ac v Linuxu

  2. Příklady příkazů df v Linuxu

  3. du příklady příkazů v Linuxu