天天看點

linux系統--ss指令詳解

1、ss指令簡介

ss 是 Socket Statistics 的縮寫。ss 指令可以用來擷取 socket 統計資訊,它顯示的内容和 netstat 類似。但 ss 的優勢在于它能夠顯示更多更詳細的有關 TCP 和連接配接狀态的資訊,而且比 netstat 更快。當伺服器的 socket 連接配接數量變得非常大時,無論是使用 netstat 指令還是直接 cat /proc/net/tcp,執行速度都會很慢。ss 指令利用到了 TCP 協定棧中 tcp_diag。tcp_diag 是一個用于分析統計的子產品,可以獲得 Linux 核心中第一手的資訊,是以 ss 指令的性能會好很多。

2、常用選項

-h, --help 幫助
-V, --version 顯示版本号
-t, --tcp 顯示 TCP 協定的 sockets
-u, --udp 顯示 UDP 協定的 sockets
-x, --unix 顯示 unix domain sockets,與 -f 選項相同
-n, --numeric 不解析服務的名稱,如 "22" 端口不會顯示成 "ssh"
-l, --listening 隻顯示處于監聽狀态的端口
-p, --processes 顯示監聽端口的程序(Ubuntu 上需要 sudo)
-a, --all 對 TCP 協定來說,既包含監聽的端口,也包含建立的連接配接
-r, --resolve 把 IP 解釋為域名,把端口号解釋為協定名稱
           

3、常見用例

(1)如果不添加選項 ss 指令預設輸出所有建立的連接配接(不包含監聽的端口),包括 tcp, udp, and unix socket 三種類型的連接配接:

ss
           
linux系統--ss指令詳解

(2)檢視主機監聽的tcp端口資訊

ss -tnl
           
linux系統--ss指令詳解

(3)使用-r,将ip位址、端口号解析為域名和協定名

ss -tlr
           
linux系統--ss指令詳解

(4)檢視監聽端口的程式程序

ss -tlp
           
linux系統--ss指令詳解

(5)檢視監理的tcp連結

ss  -tna
           
linux系統--ss指令詳解

注:-a --all 對 TCP 協定來說,既包含監聽的端口,也包含建立的連接配接

(6)顯示更詳細的資訊

-o, --options 顯示時間資訊
-m, --memory 顯示 socket 使用的記憶體
-i, --info 顯示更多 TCP 内部的資訊
           
linux系統--ss指令詳解

(7)顯示概要資訊

ss -s
           
linux系統--ss指令詳解

(8)dst/src dport/sport 文法

可以通過 dst/src/dport/sprot 文法來過濾連接配接的來源和目标,來源端口和目标端口。

A、比對遠端位址和端口号

ss dst 192.168.0.100
ss dst 192.168.0.100:ssh
ss dst 192.168.0.100:22
           
linux系統--ss指令詳解

B、比對本地位址和端口号

ss src 192.168.0.240
ss src 192.168.0.240:http
ss src 192.168.0.240:80
           
linux系統--ss指令詳解

C、将本地或者遠端端口和一個數比較

可以使用下面的文法做端口号的過濾:

ss dport OP PORT
ss sport OP PORT
OP 可以代表以下任意一個:
<= :le 	小于或等于某個端口号
= :ge 	大于或等于某個端口号
== :eq 	等于某個端口号
!= :ne 	不等于某個端口号
 :gt 	大于某個端口号
< :lt 	小于某個端口号
注意,需要對尖括号使用轉義符
           
ss -tunl sport gt 30
ss -tunl sport \> 30
           
linux系統--ss指令詳解

(9)通過 TCP 的狀态進行過濾

ss 指令還可以通過 TCP 連接配接的狀态程序過濾,支援的 TCP 協定中的狀态有:

established/syn-sent/syn-recv/fin-wait-1/fin-wait-2/time-wait/closed/close-wait/last-ack/listening/closing

除了上面的 TCP 狀态,還可以使用下面這些狀态:

all:列出所有的 TCP 狀态。

connected:列出除了 listening 和 closing 之外的所有 TCP 狀态。

synchronized:列出除了 syn-sent 之外的所有 TCP 狀态。

bucket:列出 maintained 的狀态,如:time-wait 和 syn-recv。

big:列出和 bucket 相反的狀态。

A、使用 ipv4 時的過濾文法

ss -4 state listening  
           
ss -4n state established
ss -4n state established  '( sport = :22 )'
ss -4n state established  '( sport = :ssh )'
ss -n state established
           

繼續閱讀