1. Linux网络排查实战前置准备
1.1 角色与权限
在进行网络排查时,获取合适的权限是基础前提,通常需要root权限或通过sudo提升权限,才能对网卡进行抓包与监控。没有权限,抓包会变得受限,观察不到真实流量。确保账号具备必要的权限,并了解系统的安全策略对抓包工具的影响。
安全合规是第一要务,在生产环境抓包前应得到相关部门审批并标注抓包时间段、涉及主机范围、流量隐私等级等信息,避免数据泄露风险。掌握这些要点有助于后续故障定位的高效性。

1.2 设备与环境
明确被排查的主机与网络拓扑,包括所属VLAN、交换机镜像端口、路由路径等,有助于快速锁定流量入口与出口。对常用接口如eth0、ens33、wlan0进行对比分析时,良好的拓扑认知能提升排错效率。
准备工作区与工具链,建议在排错工作区安装核心工具集,例如tcpdump、Wireshark、tshark、grep、awk等,确保抓包工具使用的连贯性,避免工具缺失造成的干扰。以下是推荐的安装清单及版本校验步骤,便于后续统一环境:
# 以 Debian/Ubuntu 为例
sudo apt-get update
sudo apt-get install -y tcpdump wireshark tshark tshark-qt && sudo usermod -aG wireshark $(whoami)
# 校验版本
tcpdump --version
wireshark --version
tshark -v
2. tcpdump 基础与实践
2.1 基本命令与格式
tcpdump 是 Linux 下最常用的抓包工具,通过
-i 指定接口,-n 取消域名解析,-s 指定抓包长度,-c 指定抓包数量。理解抓包对象与输出格式,能够快速获取网络行为的初步证据。
常用的基本命令模板有助于快速进入现场排查:检测接口流量、对指定主机/端口进行监控、以及捕获指定协议的包。下面给出一个典型的入口命令,帮助你快速启动排错过程。
# 抓取接口 eth0 上的全部数据包,数量不限,包含完整包体
tcpdump -i eth0 -nn -s0
2.2 过滤表达式与抓包策略
BPF 过滤表达式是高效排错的核心,通过主机、端口、协议等条件,可将关注点限定在目标流量上,显著降低数据量与分析难度。
常用过滤示例包括按主机、按端口、按协议过滤,以及组合条件过滤。掌握以下表达式,将有助于快速定位问题源头:host、src、dst、port、proto等。
# 只抓取与目标主机 192.168.1.10 之间的流量
tcpdump -i eth0 host 192.168.1.10# 只捕获目标端口为 80 的 TCP 包
tcpdump -i eth0 tcp port 80# 捕获UDP流量并按源端口过滤(例如源端口 53 为 DNS)
tcpdump -i eth0 udp src port 53# 同时结合多条件筛选
tcpdump -i eth0 'tcp and (src 192.168.1.10 or dst 192.168.1.20) and port 443'
3. Wireshark 深入分析与过滤表达式
3.1 Wireshark 的加载与基本视图
Wireshark 提供直观的图形化界面,便于从大规模数据中快速捕捉异常,包含 Packet List、Packet Details、Packet bytes 三大区域。通过拖拽或导入 pcap 文件,可以在本地进行深入分析。
为提高可读性,合理使用颜色规则与注释,如对 TCP 三次握手阶段进行强调、对重传与时延显著的包进行标记,这些都能显著提升故障定位效率。
3.2 显示过滤器与过滤表达式
显示过滤器用于在已经捕获的数据中筛选感兴趣的包,常见语法包括 tcp、udp、http、dns、arp,以及复杂组合,如 tcp.port == 80 和 dns 服务端口 53。
结合示例学习过滤表达式,帮助你快速聚焦问题域:如关注来自特定主机的 HTTP 请求,或仅查看失败的握手阶段。
# 以文本形式展示,实际在 Wireshark 的显示过滤器输入框中使用
tcp.port == 80
tcp.flags.syn == 1 && tcp.flags.ack == 0
ip.src == 192.168.1.10 && tcp.dstport == 443
http.request
3.3 常见故障定位场景
常见网络问题在 Wireshark 中的呈现形式包括握手失败、应用层协议错配、重传与时延异常,通过按阶段查看,能够快速分离出网络层、传输层、应用层的问题。
结合 Follow TCP Stream 等功能,可以还原一个完整的对话序列,帮助理解是服务端问题、客户端问题,还是网络路径中的丢包与阻塞。
4. 故障定位要点与案例实操
4.1 案例一:网页加载慢的排查
排查步骤从域名解析到 TCP 握手再到应用层响应,先用 tcpdump 观察 DNS 请求和响应是否正常,接着检查 TCP 三次握手是否正常完成,以及后续的数据传输是否存在重传与延迟。通过 Wireshark 的显示过滤器定位到瓶颈点。
关键观察点包括握手时延、SYN/ACK 关系、以及服务端响应时间,如果发现明显的延迟,需进一步分析路由、NAT、缓存层以及后端应用处理时间的分布。
# 在排错初期记录PCAP,便于后续分析
tcpdump -i eth0 -s0 -w /tmp/capture_case1.pcap
4.2 案例二:局域网广播风暴
通过 tcpdump 识别高频率的广播或多播包,快速定位风暴源,常见现象是 ARP 请求剧增、DHCP 请求异常等。Wireshark 可以通过过滤器快速筛选 ARP、DHCP 报文,结合时间序列判断风暴来源。
定位步骤包括:捕获时段、源/目的地址分布、以及端口/接口的流量对比,从而追溯至触发源并逐步隔离。
# 捕获与广播风暴相关的报文段
tcpdump -i eth0 'arp or (udp port 67 or udp port 68)'
4.3 案例三:应用层握手异常
应用层握手异常往往反映后端服务不可用、负载高或网络分段阻塞,通过在 Wireshark 中筛选 tcp.flags.syn==1 且 tcp.flags.ack==0 的数据包,结合对等端的响应情况,可以判断是对端未响应还是丢包导致握手失败。
结合后续的应用数据包分析,可以判断是认证、授权还是业务逻辑处理的瓶颈,必要时需要对后端服务链路进行分段监控与容量评估。


