Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 網路效能分析三大神器:route、netstat、tcpdump 實戰手冊

編輯:Linux 教學

網路故障排查與效能分析核心工具鏈:route 靜態路由管理、netstat 連線/監聽/介面統計、tcpdump 封包級深度抓包。本文提供實戰指令庫與輸出解讀。

1. route:路由表管理與診斷

查看路由表

route -n
# 或現代指令
ip route show
# 輸出欄位
Destination  Gateway  Genmask  Flags  Metric  Ref  Use  Iface
192.168.1.0  0.0.0.0  255.255.255.0  U  0  0  0  eth0
0.0.0.0      192.168.1.1  0.0.0.0  UG  0  0  0  eth0
  • Flags:U Up、G Gateway、H Host、D Dynamic、M Modified
  • Genmask:網路遮罩,核心用 目標 IP & Genmask 比對路由

常用操作

# 新增靜態路由
route add -net 10.10.20.0 netmask 255.255.255.0 gw 192.168.1.254 dev eth0
ip route add 10.10.20.0/24 via 192.168.1.254 dev eth0

# 新增預設閘道
route add default gw 192.168.1.1
ip route add default via 192.168.1.1

# 刪除路由
route del -net 10.10.20.0 netmask 255.255.255.0
ip route del 10.10.20.0/24

# 永久生效 (RHEL/CentOS)
# /etc/sysconfig/network-scripts/route-eth0
10.10.20.0/24 via 192.168.1.254 dev eth0

# 永久生效 (Debian/Ubuntu)
# /etc/network/interfaces
up ip route add 10.10.20.0/24 via 192.168.1.254 dev eth0

2. netstat / ss:連線狀態與監聽埠檢視

ss (socket statistics) 為現代替代品,速度更快、輸出更豐富,語法高度相容。

核心查詢指令

需求netstatss (推薦)
所有監聽埠netstat -tulnss -tuln
所有 TCP 連線netstat -tnss -tn
所有 UDP 連線netstat -unss -un
含進程資訊 (需 root)netstat -tulpnss -tulpn
連線狀態統計netstat -sss -s
路由表netstat -rnip route
介面統計netstat -iip -s link

輸出欄位解讀 (ss -tulpn)

Netid  State   Recv-Q Send-Q  Local Address:Port  Peer Address:Port  Process
tcp    LISTEN  0      128     0.0.0.0:22          0.0.0.0:*          users:(("sshd",pid=1234,fd=3))
tcp    ESTAB   0      0       192.168.1.10:22     192.168.1.100:54321 users:(("sshd",pid=5678,fd=4))
  • State:LISTEN 監聽、ESTAB 已建立、SYN-SENT/RECV 握手中、FIN-WAIT 關閉中、TIME-WAIT 等待超時
  • Recv-Q/Send-Q:接收/發送緩衝區堆積量 (非 0 可能擁塞)

進階過濾

# 只看特定埠口
ss -tn sport = :22
ss -tn dport = :80

# 只看特定狀態
ss -tn state established
ss -tn state time-wait

# 統計各狀態連線數
ss -tn state connected | awk '{print $1}' | sort | uniq -c

3. tcpdump:封包級抓包分析

核心語法

tcpdump -i 介面 -n -s0 -w 檔案.pcap 過濾表達式
  • -i eth0:指定介面 (any 所有)
  • -n:不解析主機名 (快)
  • -s0:抓完整封包 (預設 262144 Bytes)
  • -w file.pcap:寫入檔案供 Wireshark 分析
  • -X:十六進制 + ASCII 輸出
  • -v/-vv/-vvv:詳細度

經典過濾表達式 (BPF 語法)

需求表達式
主機 192.168.1.10 所有流量host 192.168.1.10
來源主機src host 192.168.1.10
目的主機dst host 192.168.1.10
埠口 80port 80
來源埠 80src port 80
目的埠 443dst port 443
TCP 協議tcp
HTTP 請求 (埠 80 + SYN/PSH)tcp port 80 and (tcp[13] & 2 != 0 or tcp[13] & 8 != 0)
ICMP (ping)icmp
特定網段net 192.168.1.0/24
排除 SSH 雜訊not port 22
組合:主機 1.2.3.4 的 HTTP 流量host 1.2.3.4 and port 80

實戰範例

# 1. 抓取 HTTP 請求頭 (分析 API 呼叫)
tcpdump -i eth0 -n -s0 -A 'tcp port 80 and (tcp[13] & 8 != 0)'

# 2. 疑似 DNS 劫持/解析異常
tcpdump -i eth0 -n -s0 'port 53' -w dns.pcap

# 3. 分析 TCP 重傳/擁塞
tcpdump -i eth0 -n 'tcp[13] & 4 != 0'  # RST
tcpdump -i eth0 -n 'tcp[13] & 16 != 0' # ACK 重傳特徵

# 4. 限制抓包數量/大小
tcpdump -i eth0 -c 1000 -w capture.pcap

# 5. 即時顯示封包大小分布
tcpdump -i eth0 -n -c 1000 -tttt | awk '{print $NF}' | sort -n | uniq -c

4. 綜合排查流程範例

  1. ss -tulpn 確認服務監聽埠口與進程
  2. ip route 確認路由可達
  3. ping/traceroute 基礎連通性
  4. tcpdump -i eth0 host 目標 IP 抓取雙向封包
  5. Wireshark 開啟 .pcap 分析:三次握手、重傳、零窗口、應用層協議錯誤

結語

掌握 ip route/ss/tcpdump 現代三劍客,配合 BPF 過濾表達式與 Wireshark 深度分析,可解決 95% 網路故障與效能瓶頸。棄用 netstat/route/ifconfig 舊工具組,擁抱 ip/ss 原生支援命名空間、JSON 輸出、高效能核心介面。

Copyright © Windows教程網 All Rights Reserved