Linux Sniffer辅助网络故障排查的核心价值
Linux Sniffer(如tcpdump、Wireshark)通过捕获、解析网络数据包,帮助管理员直观了解网络流量特征、识别异常行为,是网络故障排查的“显微镜”。其核心作用包括:实时监控流量状态、定位故障根源(如接口错误、协议异常)、验证配置有效性、检测安全威胁(如非法访问、DDoS攻击)。
Sniffer可实时捕获网络中的数据包,统计流量大小、速率、协议分布等指标,快速识别异常流量(如流量突增、大量广播包)。例如,通过tcpdump -i eth0 -n -c 100捕获100个包,观察是否有大量ICMP(ping flood)或UDP(UDP Flood)包,判断是否遭受DDoS攻击;通过Wireshark的“Statistics→Conversations”功能,查看各主机的流量占比,定位高带宽消耗的设备或应用。
通过Sniffer捕获接口上的数据包,检查是否有大量CRC错误、冲突包(半双工模式下常见)或丢包。例如,使用tcpdump -i eth0 -vv查看接口状态,若出现“CRC error”计数上升,可能是网线质量问题或接口松动;若“dropped”计数增加,可能是接口缓冲区溢出或驱动故障。
过滤DNS流量(udp port 53),检查域名解析是否正常。例如,tcpdump -i any udp port 53 -nn,若捕获到大量Query包但无Response包,可能是DNS服务器未响应或网络阻断;若Response中的Answer字段为空,可能是域名拼写错误或DNS记录未配置。
通过Sniffer分析TCP三次握手(SYN→SYN-ACK→ACK)或四次挥手过程,判断连接是否正常。例如,tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' -nn,若只有SYN包无SYN-ACK响应,可能是目标服务器未开放端口或防火墙拦截;若存在大量RST包(连接重置),可能是应用层服务崩溃或网络不稳定。
Sniffer可检测未经授权的访问、恶意流量或数据泄露。例如,过滤SSH(端口22)的异常登录尝试:tcpdump -i eth0 'tcp port 22 and (tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn)' -nn,若短时间内有多个来自陌生IP的SYN包,可能是暴力破解;通过Wireshark的“Expert Info”功能,识别Malformed Packets(畸形包)或Suspicious Payloads(可疑载荷),及时发现恶意攻击。
捕获被拦截的流量,检查安全策略是否误拦截合法请求。例如,若应用无法访问外部数据库(端口3306),使用tcpdump -i eth0 'dst port 3306' -nn,若能看到SYN包但无SYN-ACK响应,可能是防火墙(iptables/nftables)或SELinux阻止了连接,需调整规则。
通过Traceroute(traceroute命令)结合Sniffer,验证路由路径是否正确。例如,tcpdump -i eth0 'icmp' -nn,发送traceroute包后,若看到Time Exceeded(TTL超时)包的路径不符合预期,可能是路由表配置错误或中间设备故障。
适合快速抓包和基础分析,常用命令:
tcpdump -i eth0 -c 10 -w capture.pcap(保存到文件供后续分析);tcpdump -i eth0 src 192.168.1.100 -nn;tcpdump -i eth0 port 80 -vv。适合深入分析复杂流量,功能包括:
ip.addr == 192.168.1.100 && tcp.port == 443);