天天看點

centos8平台用ss監控網絡

一,ss所屬的包:

[root@blog ~]# whereis ss
ss: /usr/sbin/ss /usr/share/man/man8/ss.8.gz

[root@blog ~]# rpm -qf /usr/sbin/ss
iproute-4.18.0-15.el8.x86_64      

通常預設已安裝到系統,如果找不到ss指令時,可以用yum來安裝

[root@blog ~]# yum install iproute      

說明:劉宏締的架構森林是一個專注架構的部落格,位址:https://www.cnblogs.com/architectforest

         對應的源碼可以通路這裡擷取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: [email protected]

二,檢視ss的版本和幫助:

1,檢視版本

[root@centos8 liuhongdi]# ss --version
ss utility, iproute2-ss180813      

2,檢視幫助

[root@centos8 liuhongdi]# ss --help      

三,ss的用途:

ss是Socket Statistics的縮寫。

ss指令作用:可以用來擷取socket統計資訊,它可以顯示和netstat類似的内容。

ss的優勢:能夠顯示更多更詳細的有關TCP和連接配接狀态的資訊,

        而且比netstat更快速更高效

四,ss常用參數的含義:

# -l 表示隻顯示監聽套接字

# -t 表示隻顯示 TCP 套接字

# -u display only UDP sockets,隻顯示udp套接字

# -n 表示顯示數字位址和端口(而不是名字)

# -p 表示顯示程序資訊

# -s  summary,用來顯示 Sockets 摘要

-o, --options : 指定過濾用的選項:通常是與網絡計時器相關的資訊:狀态等

五,例子一:檢視處于監聽狀态的端口

# -l 表示隻顯示監聽套接字

# -t 表示隻顯示 TCP 套接字

# -n 表示顯示數字位址和端口(而不是名字)

# -p 表示顯示程序資訊

[root@centos8 liuhongdi]# ss -ltnp
State      Recv-Q      Send-Q            Local Address:Port            Peer Address:Port                                                                      
LISTEN     0           128                     0.0.0.0:5355                 0.0.0.0:*          users:(("systemd-resolve",pid=1960,fd=13))                     
LISTEN     0           128                     0.0.0.0:111                  0.0.0.0:*          users:(("rpcbind",pid=1003,fd=4),("systemd",pid=1,fd=39))      
LISTEN     0           32                192.168.122.1:53                   0.0.0.0:*          users:(("dnsmasq",pid=2548,fd=6))                              
LISTEN     0           128                     0.0.0.0:22                   0.0.0.0:*          users:(("sshd",pid=1241,fd=5))                                 
LISTEN     0           5                     127.0.0.1:631                  0.0.0.0:*          users:(("cupsd",pid=1253,fd=10))                               
LISTEN     0           128                        [::]:5355                    [::]:*          users:(("systemd-resolve",pid=1960,fd=15))                     
LISTEN     0           128                        [::]:111                     [::]:*          users:(("rpcbind",pid=1003,fd=6),("systemd",pid=1,fd=41))      
LISTEN     0           128                        [::]:22                      [::]:*          users:(("sshd",pid=1241,fd=7))                                 
LISTEN     0           5                         [::1]:631                     [::]:*          users:(("cupsd",pid=1253,fd=9))        

說明:

netstat 和 ss 的輸出也是類似的,都展示了

輸出字段的說明:

State:套接字的狀态

Recv-Q:接收隊列

Send-Q: 發送隊列

Local Address:Port 本地位址/端口

Peer Address:Port:遠端位址

程序 PID/程序名稱

資料的說明:

1,接收隊列(Recv-Q)和發送隊列(Send-Q)通常應該是 0。

  如果值不是 0 時,說明有網絡包的堆積發生。

2, 在不同套接字狀态下,它們的含義不同。

套接字處于連接配接狀态(Established):

     Recv-Q 表示套接字緩沖還沒有被應用程式取走的位元組數(即接收隊列長度)。

     Send-Q 表示還沒有被遠端主機确認的位元組數(即發送隊列長度)。

套接字處于監聽狀态(Listening):

      Recv-Q 表示全連接配接隊列的長度。

      Send-Q 表示全連接配接隊列的最大長度

3,什麼是全連接配接?

    伺服器收到了用戶端的 ACK,完成了 TCP 三次握手,

      然後就會把這個連接配接挪到全連接配接隊列中

   這些全連接配接中的套接字,還需要被 accept() 系統調用取走,伺服器才可以開始真正處理用戶端的請求。

  什麼是半連接配接隊列?

半連接配接是指還沒有完成 TCP 三次握手的連接配接,連接配接隻進行了一半。

伺服器收到了用戶端的 SYN 包後,就會把這個連接配接放到半連接配接隊列中,

然後再向用戶端發送 SYN+ACK 包

六,例子二:用ss觀察 TCP 連接配接數

[root@centos8 liuhongdi]# ss -s
Total: 1153
TCP:   10 (estab 0, closed 1, orphaned 0, timewait 0)

Transport Total     IP        IPv6
RAW   1         0         1        
UDP   14        9         5        
TCP   9         5         4        
INET   24        14        10       
FRAG   0         0         0       

說明:

estab:#已連接配接

closed:#已關閉

orphaned: #孤兒套接字

timewait: #處于關閉連接配接時等待狀态

備注:什麼是TIME_WAIT狀态?

主動關閉方在發送四次揮手的最後一個ACK後會變為TIME_WAIT狀态,持續時間為2MSL(Linux中一個MSL是30秒,是不可配置的)

七,例子三:ss使用選項:

1,顯示所有狀态是established(連接配接已建立)的套接字

[root@centos8 liuhongdi]# ss -o state \'established\'      

說明:狀态的取值:

established
syn-sent
syn-recv
fin-wait-1
fin-wait-2
time-wait
closed
close-wait
last-ack
listen
closing
all : 所有以上狀态
connected : 除了listen and closed的所有狀态
synchronized :所有已連接配接的狀态除了syn-sent
bucket : 顯示狀态為maintained as minisockets,如:time-wait和syn-recv.
big : 和bucket相反.      

2,  使用src和dst過濾ip

說明:

src  源位址

[root@centos8 liuhongdi]# ss src 192.168.3.14
Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53412            
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53413                  

dst   目标位址

[root@centos8 liuhongdi]# ss dst 192.168.3.9
Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53412            
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53413      

還可以指定端口号:

[root@centos8 liuhongdi]# ss src 192.168.3.14:http
Netid           State                 Recv-Q            Send-Q                        Local Address:Port                        Peer Address:Port             
tcp             FIN-WAIT-2            0                 0                              192.168.3.14:http                         192.168.3.9:53412         
[root@centos8 liuhongdi]# ss dst 192.168.3.9:53412
Netid           State                 Recv-Q            Send-Q                        Local Address:Port                        Peer Address:Port             
tcp             FIN-WAIT-2            0                 0                              192.168.3.14:http                         192.168.3.9:53412       

3,隻指定端口号:

  sport   源端口号

[root@centos8 liuhongdi]# ss sport 80
Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53482            
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53483             

 dport           目标端口号

[root@centos8 liuhongdi]# ss dport 53482
Netid           State             Recv-Q             Send-Q                          Local Address:Port                         Peer Address:Port             
tcp             ESTAB             0                  0                                192.168.3.14:http                          192.168.3.9:53482                  

八,本地centos的版本:

[root@centos8 conf]# cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core)