首页/网络/BGP 与广域网速查/tcpdump 广域网抓包:过滤与落盘
广域网排障60 条

tcpdump 广域网抓包:过滤与落盘

抓包三件事:选对接口、写对过滤表达式、控制量级;-w 落盘后再用分析工具过滤,避免现场刷屏丢掉关键报文。

BGP 与广域网速查网络更新于 2026-10-13

抓包的三件事

在广域网链路上抓包,成败取决于三点:接口选对、过滤写对、量级可控。选接口先看清流量实际从哪个物理口或子接口进出,带 VLAN 与隧道时要用逻辑接口;过滤表达式要尽量具体,只抓某一对主机或某个端口;量级控制指的是别在高速链路上裸抓,先限制包数或按大小轮转落盘。落盘的价值在于可以用分析工具反复过滤,现场刷屏输出一旦滚过去,关键报文就找不回来了。

基本信息

适用平台Linux 主机、多数网络设备自带抓包工具
接口选择-i any 或指定物理口、带 VLAN 用子接口
过滤语法主机、端口、协议三要素组合表达式
落盘-w 写文件,配合 -c 限制包数
轮转-C 单文件大小 -W 文件数量滚动覆盖
权限需要 root 或相应能力位,设备侧需特权模式

典型使用场景

  • BGP 邻居异常:只抓 179 端口确认两侧报文是否对称
  • IPsec 协商失败:过滤 UDP 500 与 4500 对比两端时序
  • 业务丢包定位:抓指定五元组并同时观察两端计数
  • 时延与抖动分析:抓包后计算报文间隔,比 ping 更细
  • 向厂商举证:留存原始 pcap 作为故障证据

常用命令

常用命令
# 抓指定对端的 BGP 报文,限制 100 个包
tcpdump -ni eth0 host 203.0.113.2 and port 179 -c 100
# 高速链路轮转落盘,避免单文件过大
mkdir -p /tmp/cap
tcpdump -ni eth0 -w /tmp/cap/wan_%%Y%%m%%d.pcap -C 50 -W 5 'host 10.2.2.1'
# 带完整时间戳观察间隙
tcpdump -ni eth0 -tttt 'icmp' | head -20
# 抓完用分析工具再看,别在现场死盯屏幕
tcpdump -nr /tmp/cap/wan_20261013.pcap 'port 179' | head

过滤表达式速查

表达式用途说明
host 203.0.113.2限定单主机只保留该地址的来往流量
port 179按端口过滤BGP 专用,需注意方向
udp port 500IPsec 协商可与 4500 用 or 组合
not port 22排除干扰避免把自身管理流量抓进来
tcp[tcpflags] & tcp-syn != 0只看建连用于判断握手是否有回应
抓包位置决定结论:在设备出接口抓不到报文说明本端没发或已被丢弃,在对端入接口抓不到则说明中间链路或策略拦了,两端同时抓是最快的定位方式。
落盘文件先用较小包数验证过滤表达式是否正确,再放开长时间抓取,可以省下大量返工时间。

易错点

  • 在高带宽链路上不加 -c 或轮转参数裸抓:磁盘迅速写满,甚至影响设备转发
  • 抓包接口选错:只看到单向报文,误判为对端没回包
  • 在终端直接输出大量报文:屏幕滚动导致关键报文永久丢失,应落盘后用分析工具查
  • 忽略时间戳精度:默认精度不足以分析毫秒级间隔,需显式打开微秒级显示
  • 抓包时忘记录起止时间与触发条件:事后无法与业务故障时间点对齐

数据来源与参考

  • tcpdump 手册
  • Wireshark 过滤器参考
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌