用Ubuntu Dumpcap进行网络故障排查的步骤与技巧
首先确保系统已安装dumpcap(通常随wireshark包安装)。若未安装,可通过以下命令安装:
sudo apt update && sudo apt install wireshark
安装后需配置权限:
wireshark组,无需每次用sudo:sudo usermod -aG wireshark $USER && newgrp wireshark
dumpcap捕获权限(无需修改用户组):sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
验证权限:运行dumpcap -i any,若无权限错误则表示配置成功。
使用以下命令列出所有可用网络接口(如以太网eth0、无线wlan0):
dumpcap -D
选择需捕获的接口(如eth0),后续命令中通过-i参数指定。
捕获指定接口的所有流量并保存到capture.pcap(.pcap为Wireshark通用格式):
sudo dumpcap -i eth0 -w capture.pcap
按Ctrl+C停止捕获。
通过BPF(Berkeley Packet Filter)语法缩小捕获范围,减少无关数据:
sudo dumpcap -i eth0 -w http_traffic.pcap 'tcp port 80'
192.168.1.100)的流量:sudo dumpcap -i eth0 -w ip_traffic.pcap 'ip.addr == 192.168.1.100'
sudo dumpcap -i eth0 -w icmp_traffic.pcap 'icmp'
更多过滤语法可参考Wireshark官方文档。
sudo dumpcap -i eth0 -c 100 -w limited.pcap
sudo dumpcap -i eth0 -w output.pcap -C 10m -W 5 # 每个文件最大10MB,保留5个文件
避免因文件过大导致磁盘空间耗尽或捕获性能下降。
若需实时查看流量并同时保存到文件,可使用以下命令:
sudo dumpcap -i any -w - 'tcp' | wireshark -k -i -
-w -:将捕获的流量输出到标准输出(stdout);wireshark -k -i -:启动Wireshark并从标准输入(stdin)读取流量,-k表示立即开始捕获。使用Wireshark打开.pcap文件(File -> Open),通过以下功能定位故障:
tcp.analysis.retransmission)、延迟包(tcp.analysis.delay);Statistics -> Conversations查看会话统计,Statistics -> IO Graphs查看流量趋势;Follow -> TCP Stream,查看完整的TCP会话内容(如HTTP请求/响应)。dumpcap缓冲区大小(如10MB):sudo dumpcap -i eth0 -B 10m -w capture.pcap
journalctl -xe)是否有防火墙拦截记录;ping或traceroute测试网络连通性。IO Graphs查看流量峰值,判断是否拥塞;tcp.analysis.delay),分析延迟发生的时间段;traceroute检查路由路径是否有异常节点。ip addr show eth0),确保接口处于UP状态;sudo apt install --reinstall linux-firmware)。.pcap文件(如使用cron定时任务),避免磁盘空间耗尽。