网络诊断中常用的Sniffer工具分为两类:命令行工具(如tcpdump,轻量、无需图形界面,适合服务器环境)和图形化工具(如Wireshark,功能全面、可视化强,适合详细分析)。需根据场景选择——若需快速捕获或服务器无图形界面,用tcpdump;若需深入分析协议细节,用Wireshark。
tcpdump:sudo apt-get update && sudo apt-get install tcpdump;Wireshark:sudo apt-get update && sudo apt-get install wireshark(需确认是否安装libpcap-dev依赖)。启动Sniffer前,需指定监听的网络接口(如以太网eth0、Wi-Fiwlan0)。可通过以下命令查看系统可用接口:
ip addr(Linux)或ipconfig(Windows)。
启动时用-i参数指定接口,例如监听eth0:
sudo tcpdump -i eth0(Linux);Wireshark启动后会自动列出接口,选择后即可开始捕获。
sudo tcpdump -i eth0:捕获eth0接口的所有流量(默认显示简要信息,如源/目标IP、端口、协议)。sudo tcpdump -i any:捕获所有网络接口的流量(适合多网卡环境)。为避免捕获过多无关流量(如广播包、无关协议的包),需使用过滤表达式缩小范围。常见过滤场景:
port 80(HTTP流量)、udp port 53(DNS流量)、icmp(Ping请求/响应)。eth0接口的HTTP流量:sudo tcpdump -i eth0 port 80。src 192.168.1.100(源IP为192.168.1.100的流量)、dst 192.168.1.1(目标IP为网关的流量)。192.168.1.1的通信:sudo tcpdump -i eth0 host 192.168.1.1。tcp and port 443 and src 192.168.1.100(源IP为192.168.1.100的HTTPS流量)。192.168.1.100到192.168.1.1的HTTPS请求:sudo tcpdump -i eth0 'tcp and port 443 and src 192.168.1.100 and dst 192.168.1.1'。若需长时间捕获或后续详细分析,可将数据包保存到文件(格式为.pcap,兼容Wireshark等工具):
sudo tcpdump -i eth0 -w capture.pcap(-w表示写入文件)。
捕获完成后,可通过Ctrl+C停止。若需读取已保存的文件:
sudo tcpdump -r capture.pcap(-r表示读取文件)。
tcpdump提供基本的包信息查看功能,常用选项:
-nn:禁用IP/端口解析(显示数字格式,加快显示速度);-vvv:显示详细信息(如TTL、窗口大小等);-c 10:捕获10个包后停止(适合快速检查)。eth0接口的10个HTTP包并显示详细信息:sudo tcpdump -i eth0 -nn -vvv port 80 -c 10。Wireshark提供可视化界面,可深入查看包的各层结构(以太网帧、IP头、TCP/UDP头、应用层数据),并通过过滤、统计、专家系统定位问题:
http.request只看HTTP请求包,tcp.analysis.retransmission看TCP重传包),快速定位目标流量。www.example.com)。sudo tcpdump -i eth0 host www.example.com);udp port 53),查看域名解析是否正常(是否有A记录响应)。sudo tcpdump -i eth0 -w traffic.pcap);port 80,SMTP用port 25);GET /,服务器是否有200 OK响应;SMTP是否有HELO、MAIL FROM等命令);