使用 tcpdump 过滤 GRE 封装的数据包

使用 tcpdump 过滤 GRE 封装的数据包

我可以用下面的方法很简单的让 tcpdump 显示 GRE 封装的数据包tcpdump -ni any proto gre

15:02:57.209082 IP 10.14.0.3 > 10.14.0.2: GREv0, key=0x1, length 106: IP 10.10.10.11 > 10.10.10.1: ICMP echo request, id 21073, seq 2784, length 64
15:02:57.209138 IP 10.14.0.2 > 10.14.0.3: GREv0, key=0x1, length 106: IP 10.10.10.1 > 10.10.10.11: ICMP echo reply, id 21073, seq 2784, length 64
15:02:57.345098 IP 10.14.0.2 > 10.14.0.3: GREv0, key=0x1, length 74: IP 169.254.192.1 > 224.0.0.18: VRRPv2, Advertisement, vrid 1, prio 50, authtype none, intvl 2s, length 20

但是,是否可以过滤例如仅封装的 icmp 数据包或任何其他任意表达式?

答案1

因为这对我有用,所以更新了这个答案。

如果你想查看另一个原型中的原型,你不能只使用原始在比赛中。

原链类似于原始,但为了这个目的,它特意改变了下一场比赛的偏移量。

改为使用:

protochain GRE && proto ICMP

来源:pcap-filter(7)

答案2

如果您的tcpdump版本不支持protochain(例如 Debian 8 中的版本),您可以手动计算确定 GRE 隧道内 ip 数据包的协议号的位置。

ICMP 的协议号为 0x01。它存储在数据包的第 10 个字节中。GREv0 有 24 个字节,加上 9 个(因为从零开始计数)等于 33:

tcpdump -i any proto 47 and ip[33]=0x01

答案3

tcpdump用途pcap 过滤器语法

筛选二十之内耶耶

proto YY && proto XX

ICMP里面研究生入学考试 (GRE)

proto GRE && proto ICMP

相关内容