如何通过Ubuntu Sniffer定位网络故障
导读:Ubuntu 下使用抓包工具定位网络故障的实用流程 一、准备与工具选择 常用工具 tcpdump:命令行抓包与快速过滤,适合服务器与终端环境。 Wireshark:图形化深度解析,适合交互式分析。 安装 在 Ubuntu/Debi...
Ubuntu 下使用抓包工具定位网络故障的实用流程
一、准备与工具选择
- 常用工具
- tcpdump:命令行抓包与快速过滤,适合服务器与终端环境。
- Wireshark:图形化深度解析,适合交互式分析。
- 安装
- 在 Ubuntu/Debian 上安装:
sudo apt-get update & & sudo apt-get install -y tcpdump wireshark - 为安全与便利,建议将当前用户加入 wireshark 组:
sudo usermod -aG wireshark $USER,然后重新登录以生效(Wireshark 将使用 dumpcap 以最小权限抓包)。
- 在 Ubuntu/Debian 上安装:
二、快速定位流程
- 步骤1 明确症状与范围
- 复现问题,记录关键信息:源/目的 IP 与端口、协议(TCP/UDP/ICMP/DNS/HTTP/HTTPS)、时间点、是否仅某台主机/某个网段。
- 步骤2 选择正确的抓包点
- 单机/服务器问题:在问题主机本机抓包(如
eth0、ens*、wlan0)。 - 跨主机/网关问题:在链路中间抓包(如镜像端口、路由/防火墙旁路),更接近故障源。
- 单机/服务器问题:在问题主机本机抓包(如
- 步骤3 抓包与过滤
- 实时观察少量包:
sudo tcpdump -i eth0 -nn -c 50 'tcp or udp or icmp' - 只关注目标主机/端口:
sudo tcpdump -i eth0 -nn host 10.0.0.10 and port 443 - 保存到文件以便深入分析:
sudo tcpdump -i eth0 -w issue.pcap 'tcp port 443'
- 实时观察少量包:
- 步骤4 关键故障模式速查
- 连接超时/建链失败:过滤 TCP SYN,观察是否收到 SYN-ACK 或是否有 RST。
- 示例:
sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'
- 示例:
- DNS 解析慢或失败:过滤 UDP/TCP 53,查看请求是否发出、是否得到响应。
- 示例:
sudo tcpdump -i eth0 -nn udp or tcp port 53
- 示例:
- HTTP/HTTPS 访问异常:过滤 80/443,关注 HTTP 状态码、TLS 握手(ClientHello/ServerHello)。
- 示例:
sudo tcpdump -i eth0 -nn 'tcp port 80 or 443'
- 示例:
- ICMP 可达性:过滤 ICMP,确认 ping 是否通、是否有异常类型。
- 示例:
sudo tcpdump -i eth0 -nn icmp
- 示例:
- 连接超时/建链失败:过滤 TCP SYN,观察是否收到 SYN-ACK 或是否有 RST。
- 步骤5 读取与分析
- 读文件:
tcpdump -r issue.pcap -nn -vv - 在 Wireshark 中按协议分层查看、使用显示过滤器(如
tcp.port == 443、dns)定位异常点。
- 读文件:
三、无线与加密流量的定位要点
- 802.11 无线抓包需要网卡支持监听模式,并尽量固定到问题 AP 的信道再抓,否则难以还原认证与关联细节。
- Ubuntu 设置监听模式示例(请先确认网卡支持):
- 关闭干扰服务:
sudo systemctl stop NetworkManager & & sudo systemctl stop wpa_supplicant - 查看接口:
iw dev - 切换模式:
sudo ip link set < iface> down & & sudo iw dev < iface> set type monitor & & sudo ip link set < iface> up - 固定信道:
sudo iw dev < iface> set channel < 信道号> - 抓包:用 Wireshark 选择该接口,添加显示过滤器如
wlan.fc.type_subtype == 0x08(Beacon)、eapol(握手)。 - 恢复:
sudo ip link set < iface> down & & sudo iw dev < iface> set type managed & & sudo ip link set < iface> up & & sudo systemctl start NetworkManager & & sudo systemctl start wpa_supplicant
- 关闭干扰服务:
- 远程抓包:也可在服务器上仅配置监听模式,使用 Wireshark 的 SSH Remote Capture(sshdump) 从本机直接抓取远程接口数据,便于集中分析。
四、高效过滤表达式速查
- 仅看某主机:
host 192.168.1.10 - 仅看某端口:
port 443 - 仅看某主机+端口:
host 10.0.0.5 and port 22 - 只看 TCP SYN 包:
'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0' - 只看 DNS:
udp or tcp port 53 - 只看 ICMP:
icmp - 组合条件:
'tcp port 80 or 443' and host 203.0.113.10 - 读/写文件:
-w file.pcap/-r file.pcap - 显示数字地址端口:
-n;更详细输出:-v/-vv/-vvv。
五、排错与合规建议
- 权限与接口
- 抓包通常需要 root 或 CAP_NET_RAW 能力;若提示无可用设备,确认接口名是否正确并以 sudo 运行。
- 性能与存储
- 长时间抓包会产生大文件,建议用 -C/-G/-W 切分文件,或先用短时点抓包定位,再扩大时间窗口。
- 无线抓包要点
- 监听模式与固定信道是关键;若抓不到管理/控制帧,优先检查网卡兼容性与信道是否一致。
- 合法合规
- 抓包可能触及隐私与合规要求,务必在授权范围内进行,避免在生产环境无限制捕获敏感流量。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Ubuntu Sniffer定位网络故障
本文地址: https://pptw.com/jishu/749799.html
