2,734 瀏覽數

Linux command – netstat

在 Linux 下可以透過 netstat 是顯示目前網路連線狀態.

測試環境為 Ubuntu

直接使用 netstat (不加參數),所有的連線都顯示出來,可以使用下面幾個參數.

  • -t 只顯示與 TCP 相關的
  • -l 只顯示正在 listening sockets.
  • -n 用數字來顯示(hostname->IP,daemon name->port number)
  • -p 顯示 PID (process ID)
  • -u 只顯示與 UDP 相關的

-tnpu
檢視目前連線到這一台系統的狀態 (Client -> Server).

root@ubuntu:~# netstat -tnpu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 172.16.15.129:22        172.16.15.1:49503       ESTABLISHED 2033/sshd: ben [pri

顯示結為目前網路的連線狀態,分別的意思為

  • Proto:協議,使用 TCP 或是 UDP
  • Recv-Q:???
  • Send-Q:???
  • Local Address:本地地址+網路埠
  • Foreign Address:遠端連線地址+網路埠
  • State:該服務的狀態, Listen 表示該服務正在監聽該網路埠.
  • PID/Program name:該服務名稱以及 Process ID

-tlnpu
如果要知道目前這一台系統提供了哪一些 service 服務,可以使用參數 l.

root@ubuntu:~# netstat -tlnpu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1629/mysqld     
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1098/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      979/sshd        
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      5614/cupsd      
tcp6       0      0 :::80                   :::*                    LISTEN      1567/apache2    
tcp6       0      0 :::22                   :::*                    LISTEN      979/sshd        
tcp6       0      0 ::1:631                 :::*                    LISTEN      5614/cupsd      
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           897/avahi-daemon: r
udp        0      0 0.0.0.0:38637           0.0.0.0:*                           1098/dnsmasq    
udp        0      0 0.0.0.0:42420           0.0.0.0:*                           897/avahi-daemon: r
udp        0      0 127.0.1.1:53            0.0.0.0:*                           1098/dnsmasq    
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1052/dhclient   
udp        0      0 0.0.0.0:631             0.0.0.0:*                           5615/cups-browsed
udp6       0      0 :::5353                 :::*                                897/avahi-daemon: r
udp6       0      0 :::48228                :::*                                897/avahi-daemon: r

上面的服務連線 mysql 有提供 127.0.0.1 (只允許本地端的連線,不能遠端), 使用了 port 3306 , 但是沒有限制遠端連線的 IP 與 port .

tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1629/mysqld     

上面的服務連線 sshd 有提供遠端的連線, 使用了 port 22 , 也沒有限制遠端連線的 IP 與 port .

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      979/sshd       

如果要長時間做監控可以使用 watch 設定每隔#秒,重新整理網路狀態.關於 watch 使用請參考 http://benjr.tw/23577

root@ubuntu:~# watch -n 2 netstat -tlnpu

要中斷可以按 Ctrl + C

2 Replies to “Linux command – netstat”

  1. 自動參照通知: 網路連線的錯誤排除(二) | Benjr.tw

  2. 自動參照通知: Networking | Benjr.tw

發表迴響