2015年3月2日 星期一

netstat 檢查本機網路連線狀態

路由相關參數
netstat -[rn]
-r:列出路由表,功能如同route指令
-n:不使用主機名稱與服務名稱,使用IP及Port Number,功能如同route -n指令

網路介面相關參數
netstat -[antulpc]
-a:列出所有連線狀態
-t:僅列出TCP封包的連線
-u:僅列出UDP封包的連線
-l:僅列出有在Listen的服務之網路狀態
-p:列出PID與Program的檔名
-c:設定幾秒自動更新一次,例如 -c 5 每五秒更新一次網路狀態的顯示

State連線狀態列主要有:
ESTABLISHED:已建立連線的狀態
SYN_SENT:發出主動連線的連線封包
SYN_RECV:接收到一個要求連線的主動連線封包
FIN_WAIT1:該socket已中斷,該連線正在斷線中
FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包
TIME_WAIT:該連線已掛斷,但socket還在網路上等待結束
LISTEN:正在服務監聽的Port

實用語法
netstat -an
顯示主機上所有已建立的網路連線

netstat -an | grep :80 | sort
顯示主機上所有port 80的連線並將結果排序

netstat -n -p | grep SYN_RECV  | wc -l
顯示主機上SYN_RECV數量

netstat -n -p | grep SYN_RECV  | sort -u
顯示主機上SYN_RECV連線數量並將結果排序

netstat -n -p | grep SYN_RECV  | awk '{print $5}' | awk -F: '{print $1}'
顯示主機上SYN_RECV所有的IP位址

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
統計每一個IP在主機上所建立的連線數量

netstat -anp | grep 'tcp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
顯示從TCP連線到主機的IP數量

netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
顯示每個IP建立的ESTABLISHED連線數量

netstat -plan | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nk 1
顯示每個IP建立的Port 80連線數量