温馨提示×

Linux Sniffer如何调试网络问题

小樊
36
2025-12-25 03:20:21
栏目: 智能运维

Linux Sniffer调试网络问题的实用流程

一、工具选型与定位

  • 常用工具与适用场景
    • tcpdump:命令行抓包,适合服务器、SSH 场景与快速过滤,支持将流量保存为 pcap 供后续分析。
    • Wireshark:图形化深度解析,适合交互式排查协议细节、重放与统计。
    • tshark:Wireshark 的命令行版,便于脚本化和自动化分析。
  • 基本能力
    • 捕获网卡流量(必要时启用混杂模式)、按协议/端口/主机过滤、显示或导出包内容、统计与诊断网络事件。

二、标准排查流程

  • 步骤1 明确现象与范围
    • 复现步骤、涉及的源/目的 IP 与端口、发生时间段、是否仅此主机/此网段。
  • 步骤2 最小化快速抓包
    • 在问题主机或网关上抓包,先用最简过滤缩小范围,再逐步放宽。
  • 步骤3 定位故障层面
    • 链路层/ARP:看是否能解析对端 MAC、是否存在 ARP 异常。
    • 网络层/IP:看是否可达、是否有 ICMP 超时/目的不可达、是否有异常分片。
    • 传输层/TCP:看 SYN/SYN-ACK/ACK 三次握手是否完成、是否存在重传/零窗口/半开连接。
    • 应用层:看 HTTP/DNS/TLS 等请求是否发出、是否得到响应、错误码与时延。
  • 步骤4 交叉验证
    • 客户端、服务端、中间设备(如负载均衡/代理/NAT)多点在同时抓包,对比收发差异。
  • 步骤5 固化证据与复盘
    • 保存 pcap 文件,记录关键时间线、过滤表达式与现象截图,便于复盘与移交。

三、高频场景与命令模板

  • 连通性/丢包
    • 两端同时抓包,过滤对端 IP:
      • tcpdump -i any -nn host 192.0.2.10 and icmp
    • 关注是否有 ICMP Destination Unreachable/Time Exceeded、TCP 重传与重复 ACK。
  • TCP 建连失败
    • 过滤端口与握手标志:
      • tcpdump -i any -nn ‘tcp port 443 and (tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn)’
    • 若只见到 SYN 而无 SYN-ACK,排查对端服务/安全组/防火墙/端口监听。
  • 端口与服务可用性
    • 仅看某端口:
      • tcpdump -i any -nn port 3306
    • 若服务在容器/虚拟机内,确保抓包点能看到容器网桥或宿主机对应接口。
  • HTTP 访问异常
    • 抓取请求行与头部:
      • tcpdump -i any -nn -A -s 0 ‘tcp port 80 and (tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420)’
    • 或用 Wireshark/tshark 直接过滤 http 协议。
  • DNS 解析慢/失败
    • 过滤 DNS 查询与响应:
      • tcpdump -i any -nn udp port 53 or tcp port 53
    • 观察查询是否发出、是否超时、响应是否被截断或篡改。
  • 长链路时延/抖动
    • 关注 TCP 往返时间(RTT)、重传率、窗口大小变化与 P95/P99 时延分布(Wireshark 统计/IO Graph)。

四、结果判读要点

  • TCP 三次握手与重传
    • 正常:SYN → SYN-ACK → ACK;异常:仅见 SYN、多次重传、无响应。
  • 连接中断与复位
    • RST 可能意味着对端进程崩溃、端口未监听、策略拒绝或超时关闭。
  • 零窗口与拥塞
    • ZeroWindow 提示对端接收缓冲满;持续重传与 SACK/Fast Retransmit 常见于拥塞或链路抖动。
  • 分片与 MTU
    • 大量 Fragmented IPICMP Fragmentation Needed 提示路径 MTU 不匹配(常见于隧道/PPPoE)。
  • 应用层错误码
    • HTTP 4xx/5xx、TLS handshake failure、MySQL error code 等可直接指向业务或配置问题。

五、性能与合规建议

  • 权限与安全
    • 抓包需要原始套接字权限:使用 sudo 或将用户加入 wireshark 组;仅在授权范围内抓包,避免泄露敏感数据。
  • 过滤与采样
    • 抓包前先写BPF 过滤表达式,只保留相关主机/端口/协议,避免磁盘打满与性能抖动。
  • 文件与缓冲
    • 使用 -w file.pcap 保存原始包,后续用 Wireshark/tshark 分析;必要时增大抓包缓冲区与环形文件,减少丢包。
  • 多点与镜像
    • 在关键路径做端口镜像/跨主机抓包,客户端/服务端/中间设备同时取证,更易还原故障链路。
  • 合法合规
    • 明确告知并获取授权,对抓包文件设置访问权限与保留期限,避免侵犯隐私与合规风险。

0