Linux netstat & ss 檢查網路連線與 Port
當你的網站連不上,或者想確認 Nginx 到底有沒有跑起來,你需要檢查 Listening Port (監聽埠)。
早期我們習慣用 netstat,但現在 Linux 發行版更推薦用效能更好的 ss (Socket Statistics)。
不過兩者的參數幾乎可以通用。
最強參數組合 (-tulpn)
兩個指令的參數幾乎一樣,背起來這串咒語就對了:tulpn。
- t: TCP 連線
- u: UDP 連線
- l: Listening (只顯示監聽中的,沒設的話會顯示所有連線狀態)
- p: Program (顯示是哪個 PID/程式在佔用,需要 sudo)
- n: Numeric (直接顯示 IP 和 Port 數字,不要反查 Hostname/Service Name,速度快很多)
範例:檢查誰在佔用 Port
sudo ss -tulpn
# 或
sudo netstat -tulpn
輸出範例:
Netid State Local Address:Port Peer Address:Port Process
tcp LISTEN 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
tcp LISTEN 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=888,fd=3))
只要看到 LISTEN 和 Local Address 是你要的 Port,就代表服務有正常啟動。
範例:搜尋特定 Port (搭配 grep)
sudo ss -tulpn | grep :80
統計連線狀態
當你的伺服器連線數暴增,想看看是不是被 DDoS,可以統計目前的連線狀態:
# 統計各種 TCP 狀態的數量 (ESTABLISHED, TIME_WAIT...)
ss -s
關於 netstat 未安裝
很多新版 Linux (如 Ubuntu 20.04+) 預設沒有 netstat。
雖然推薦用 ss,但如果你堅持要用,請安裝 net-tools:
sudo apt install net-tools