如何通过Linux Sniffer进行故障排查
导读:Linux Sniffer 故障排查实战指南 一 核心思路与准备 明确目标:先界定问题边界(如连通性、时延抖动、丢包、端口不通、异常流量),再决定抓包位置与过滤表达式。 选择位置:在问题路径的关键节点部署抓包,例如靠近客户端的源主机、中间...
Linux Sniffer 故障排查实战指南
一 核心思路与准备
- 明确目标:先界定问题边界(如连通性、时延抖动、丢包、端口不通、异常流量),再决定抓包位置与过滤表达式。
- 选择位置:在问题路径的关键节点部署抓包,例如靠近客户端的源主机、中间的网关/防火墙、或服务端;必要时两端同时抓包便于对照。
- 合法合规:抓包涉及通信内容,务必取得明确授权,避免侵犯隐私或违反政策。
- 工具准备:常用嗅探器包括tcpdump(命令行、轻量、适合服务器)、Wireshark(图形化、解析强)、Etherape(可视化拓扑与流量统计)。在需要观察全网交互时,将网卡置于混杂模式以接收非本机帧。
二 快速上手 tcpdump 的常用操作
- 查看网卡与选择接口:
- 列出接口:sudo tcpdump -D
- 抓取指定接口:sudo tcpdump -i eth0;抓取所有接口:sudo tcpdump -i any
- 基本过滤与显示:
- 只看某主机:sudo tcpdump -i eth0 host 192.0.2.10
- 只看某端口:sudo tcpdump -i eth0 port 80 or port 443
- 组合条件:sudo tcpdump -i eth0 ‘host 192.0.2.10 and (tcp port 80 or 443)’
- 方向限定:src(源)、dst(目的);协议限定:tcp/udp/icmp/arp
- 输出与保存:
- 保存为文件:sudo tcpdump -i eth0 -w capture.pcap
- 读取文件:tcpdump -r capture.pcap -nn
- 显示内容:
- 文本可读:-A(ASCII)
- 十六进制/ASCII:-X;完整载荷:-s 0(或足够大的 snaplen)
- 控制抓取量:-c 100(抓满100个包后停止)
- 典型场景示例:
- 排查某主机的 HTTP 访问:sudo tcpdump -i eth0 -A -nn -w web.cap host 192.0.2.10 and port 80
- 观察 ICMP(如 ping)是否到达:sudo tcpdump -i eth0 icmp -n
- 只关注某主机且排除干扰:sudo tcpdump ip host 192.0.2.10 and ! 192.0.2.20
以上命令覆盖了接口选择、过滤表达式、方向/协议限定、文件 I/O 与内容查看等常用操作,适合作为现场排障的“最小可用集”。
三 典型故障的抓包排查路径
- 连通性故障(ping 不通/高丢包)
- 两端同时抓包:sudo tcpdump -i any icmp -n
- 判读要点:
- 本端发出请求但无回包:可能是对端丢弃/过滤、回程路由问题或ACL拦截。
- 对端回 ICMP 但本端未收:本端路由/NIC/安全组问题。
- 请求/应答TTL 异常:中间设备限速/策略导致。
- 端口不通/服务不可达
- 服务端抓 SYN:sudo tcpdump -i eth0 ‘tcp[tcpflags] & tcp-syn != 0’ and port 443
- 客户端抓 SYN/ACK:若见 SYN 无 SYN-ACK,常见为服务未监听、防火墙/安全组拦截或端口错误。
- 三次握手完成后立即 RST:应用层主动拒绝或协议不匹配。
- 应用层异常(HTTP 5xx/超时)
- 抓取 HTTP:sudo tcpdump -i eth0 -A -nn -w http.cap host 192.0.2.10 and port 80
- 判读要点:
- 请求已发但无响应:后端崩溃/超时、反向代理/负载均衡异常。
- 多次重传:网络抖动/丢包或服务器处理慢。
- 异常流量与 DoS 迹象
- 全量或分接口观察突发:sudo tcpdump -i any -n
- 大量 ICMP/特定端口/畸形包:可能为探测/攻击;结合统计与告警阈值进一步确认。
四 进阶分析与可视化
- 用 Wireshark 做深度解析:将 .pcap 文件导入,利用显示过滤器(如 ip.addr==x.x.x.x & & tcp.port==443)定位重传、零窗口、乱序、TLS 握手失败等。
- 用 Etherape 做拓扑与热点主机识别:直观查看主机/协议流量占比,快速锁定异常来源或占用带宽的会话。
- 建立“基线”与统计:记录带宽、会话数、协议占比、响应时延等常态指标,出现显著偏差时优先排查。
五 实践建议与注意事项
- 资源与性能:抓包可能产生高 CPU/磁盘 I/O,限制抓包时长与文件大小,必要时在镜像口/测试环境进行。
- 过滤精准:优先用BPF 过滤表达式减少无关流量,避免“大海捞针”。
- 两端对照:跨网段/跨域问题,建议在源/目的同时抓包,缩短定位路径。
- 合法合规与安全:抓包涉及通信内容,务必取得授权;抓包文件妥善保护,避免泄露敏感信息。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何通过Linux Sniffer进行故障排查
本文地址: https://pptw.com/jishu/751853.html
