良許 | 網絡檢測神器 ss 命令,你可能根本就不會用!

今天咱們來介紹一下 Linux ss 命令。安全

ss 是 Socket Statistics 的縮寫,用來統計 socket 鏈接的相關信息,它跟 netstat 差很少,但有着比 netstat 更強大的統計功能,可以顯示更多更詳細的鏈接信息。網絡

剛開始接觸 ss 命令可能會比較困難,咱們可經過 ss -h 或者 ss -help 來詳細學習 ss 的選項功能。固然,最好的辦法是直接嘗試一些經常使用的命令來學習 ss 。dom

下面咱們來了解一下 ss 的一些實用用法。ssh

複製代碼

$ ss -sTotal: 524TCP: 8 (estab 1, closed 0, orphaned 0, timewait 0)socket

Transport Total IP IPv6RAW 2 1 1UDP 7 5 2TCP 8 6 2INET 17 12 5FRAG 0 0 0tcp

- **RAW** Socket 原始套接字。容許直接發送和接收 IP 數據包,無需知足特定的傳輸協議,用於 namp 等安全應用。
- **TCP** 傳輸控制協議。是咱們網絡鏈接當中的主要鏈接協議。
- **UDP** 用戶數據報協議。相似於 TCP 但沒有錯誤檢查。 
- **INET** 包含上述項。( INET4 和 INET6 能夠經過一些 ss 命令單獨查看)。
- **FRAG** 能夠理解爲碎片的意思。

顯然,上面的輸出結果並無直接顯示詳細的 socket 鏈接狀況,咱們能夠看到最上面的 ```Total``` 行顯示的 socket 總數是很是多的,不過,這種分類統計的方式在某些狀況下頗有用。

若是想要查看具體的 socket 活動信息,咱們可使用 ```ss -a``` 命令,可是咱們要作好心理準備查看一大堆的信息,咱們能夠先用 ```wc -l``` 來統計一下行數試探一波:複製代碼

$ ss -a | wc -l555學習

有木有被嚇到?555 行數據!

不過沒必要驚慌,咱們能夠查看指定類別的 socket 活動。
- ```ss -ta``` 轉儲全部 TCP socket
- ```ss -ua``` 轉儲全部 UDP socket
- ```ss -wa``` 轉儲全部 RAW socket
- ```ss -xa``` 轉儲全部 UNIX socket
- ```ss -4a``` 轉儲全部 IPV4 socket
- ```ss -6a``` 轉儲全部 IPV6 socket

不帶參數的 ss 命令會顯示全部已經創建的 socket 鏈接。爲了方便閱讀,這裏只顯示一頁的信息,省略其餘大部分信息:複製代碼

$ ss | moreNetid State Recv-Q Send-Q Local Address:Port Peer Address:Portu_str ESTAB 0 0 * 20863 * 20864u_str ESTAB 0 0 * 32232 * 33018u_str ESTAB 0 0 * 33147 * 3257544ddddyu_str ESTAB 0 0 /run/user/121/bus 32796 * 32795u_str ESTAB 0 0 /run/user/121/bus 32574 * 32573u_str ESTAB 0 0 * 32782 * 32783u_str ESTAB 0 0 /run/systemd/journal/stdout 19091 * 18113u_str ESTAB 0 0 * 769568 * 768429u_str ESTAB 0 0 * 32560 * 32561u_str ESTAB 0 0 @/tmp/dbus-8xbBdjNe 33155 * 33154u_str ESTAB 0 0 /run/systemd/journal/stdout 32783 * 32782…tcp ESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944tcp ESTAB 0 0 192.168.0.16:ssh 192.168.0.6:5385spa

要查看剛創建的 TCP 鏈接,使用 ```ss -t``` :複製代碼

$ ss -tState Recv-Q Send-Q Local Address:Port Peer Address:PortESTAB 0 64 192.168.0.16:ssh 192.168.0.6:25944ESTAB 0 0 192.168.0.16:ssh 192.168.0.9:5385code

要僅顯示監聽 socket ,嘗試 ```ss -lt``` :複製代碼

$ ss -ltState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 10 127.0.0.1:submission 0.0.0.0:*LISTEN 0 128 127.0.0.53%lo:domain 0.0.0.0:*LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*LISTEN 0 5 127.0.0.1:ipp 0.0.0.0:*LISTEN 0 10 127.0.0.1:smtp 0.0.0.0:*LISTEN 0 128 [::]:ssh [::]:*LISTEN 0 5 [::1]:ipp [::]:*cdn

若你想要顯示端口號而不是服務名,則 ```ss -ltn``` :複製代碼

$ ss -ltnState Recv-Q Send-Q Local Address:Port Peer Address:PortLISTEN 0 10 127.0.0.1:587 0.0.0.0:*LISTEN 0 128 127.0.0.53%lo:53 0.0.0.0:*LISTEN 0 128 0.0.0.0:22 0.0.0.0:*LISTEN 0 5 127.0.0.1:631 0.0.0.0:*LISTEN 0 10 127.0.0.1:25 0.0.0.0:*LISTEN 0 128 [::]:22 [::]:*LISTEN 0 5 [::1]:631 [::]:*

這裏就先介紹這麼多,其餘的詳細內容請參考幫助手冊( ```ss -h```)。

另外,這裏提供一些小技巧,你能夠將那些最有用的選項轉換爲別名,能讓你更容易使用。例如:複製代碼

$ alias listen="ss -lt"$ alias socksum="ss -s"`

-----------------

我是良許,世界500強外企 Linux 開發工程師,專業生產 Linux 乾貨。歡迎關注個人公衆號「良許Linux」,回覆「1024」獲取最新最全的技術資料,回覆「入羣」進入高手如雲技術交流羣。

img

相關文章
相關標籤/搜索