- 首页 >
- 问答 >
-
智能运维 >
- 如何使用CentOS sniffer进行故障排查
如何使用CentOS sniffer进行故障排查
小樊
42
2025-12-31 07:47:28
在 CentOS 上使用抓包工具进行故障排查
一 工具选择与准备
- 在 CentOS 上常用的嗅探器是 tcpdump(命令行)与 Wireshark(GUI,远程可用),两者配合能高效定位网络问题。安装命令示例:sudo yum install -y tcpdump wireshark;远程图形分析可用 X11 转发或部署 tshark。抓包通常需要 root 或具备 CAP_NET_RAW 能力的账户。为减少丢包,优先在问题发生的近端主机或网关上抓包,并选择合适的网卡与过滤表达式。
二 标准排查流程
- 连通性基线:先测本机到网关与外部地址的 ping,再用 curl -I 检查应用层可达性,确认是否为网络层或应用层问题。
- 接口与地址:用 ip link/addr 检查网卡是否 UP、是否有 IP;必要时查看 /etc/resolv.conf 的 DNS 配置是否正确。
- 路由与网关:用 ip route 检查默认路由是否存在且正确,必要时添加/修正静态路由以复现或绕过问题路径。
- 服务与端口:用 ss -lntp 或 netstat -tulpn 确认目标服务是否在期望端口监听,进程与用户是否正确。
- 防火墙与安全组:用 firewalld/iptables 检查是否放行相关端口/协议;云环境同步核查安全组策略。
- 抓包定位:在“客户端/服务端/中间设备”三处按需抓包,结合过滤表达式聚焦可疑流量,观察握手、重传、RST、超时等关键现象。
三 常用抓包命令与过滤表达式
- 基础抓包与保存:抓取指定接口到文件,便于后续分析或共享。示例:sudo tcpdump -i eth0 -w capture.pcap
- 读取与分析:读取文件并尽量显示详细信息。示例:tcpdump -r capture.pcap -nn -vv
- 按主机与端口过滤:聚焦单主机或单端口,减少噪声。示例:sudo tcpdump -i eth0 -nn ‘host 10.0.0.10 and port 80’
- 仅看 TCP 三次握手与重传:定位连接建立失败或性能问题。示例:sudo tcpdump -i eth0 -nn ‘tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn or (tcp[tcpflags] & tcp-ack) == 0’ -c 20
- 按协议细化:抓取 HTTP 流量并输出关键字段,便于快速筛查异常 URI/返回码。示例:sudo tcpdump -i eth0 -A -s 0 ‘tcp port 80’ | egrep -i “HTTP/1.[01] [2-5][0-9][0-9]”
- DNS 查询问题:确认域名解析是否成功与延迟。示例:sudo tcpdump -i eth0 -nn -vv ‘udp port 53 or tcp port 53’
- 远程图形分析:在服务器抓包,在本地用 Wireshark 打开 pcap 文件进行深入协议解析。
四 典型场景与抓包要点
- 场景一 无法访问某主机/端口:在服务端抓包,过滤目标端口,观察是否有 SYN、是否有 SYN-ACK、是否出现 RST/ICMP 拒绝;若客户端见 SYN 无响应,服务端也无 SYN-ACK,多为中间策略(防火墙/ACL/路由)阻断;若服务端见 SYN 但回 RST,多为服务未监听或被本机策略拒绝。
- 场景二 访问很慢或偶发超时:关注 TCP 重传(retransmission)、重复 ACK、窗口大小变化、零窗口 等迹象;这些常指示链路拥塞、服务器处理慢或窗口收缩问题。
- 场景三 DNS 解析失败或延迟高:抓取 UDP/TCP 53,核对请求/响应是否到达、响应码是否为 NOERROR、响应时间是否异常;可配合 nslookup/dig 对比解析路径与结果。
五 常见问题与优化建议
- 抓不到包或丢包:确认网卡处于混杂模式(tcpdump 默认开启)、提升抓包缓冲区(如 -B 增大)、减少无关流量(精确过滤表达式)、尽量在近端抓包;必要时分流/镜像端口后再抓。
- 权限不足:使用 sudo 运行;或给账户授予 CAP_NET_RAW 能力(例如 setcap cap_net_raw+ep /usr/sbin/tcpdump)。
- 过滤器语法错误:先用简单表达式验证,再逐步叠加条件;注意 and/or/not 与括号优先级,避免逻辑错误导致“看似无流量”。
- 合规与安全:抓包可能触及隐私与合规要求,务必取得设备与业务的授权,仅捕获必要流量并妥善保护 pcap 文件。