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

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

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

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

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

ss -s 是一個很是有用的命令。它能夠按網絡傳輸類型顯示整體統計信息,咱們不妨來測試一下:ssh

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

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

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

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

$ ss -a | wc -l
555

有木有被嚇到?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 鏈接。爲了方便閱讀,這裏只顯示一頁的信息,省略其餘大部分信息:spa

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

要查看剛創建的 TCP 鏈接,使用 ss -t

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

要僅顯示監聽 socket ,嘗試 ss -lt

$ ss -lt
State   Recv-Q   Send-Q      Local Address:Port             Peer Address:Port
LISTEN  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                      [::]:*

若你想要顯示端口號而不是服務名,則 ss -ltn

$ ss -ltn
State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port
LISTEN   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」獲取最新最全的技術資料,回覆「入羣」進入高手如雲技術交流羣。

相關文章
相關標籤/搜索