linux – ICMP Host Unreachable消息导致火星源数据包

我一直试图在我们的路由/防火墙设置中了解一段特殊的行为已经有一段时间了,但是我并不真正了解正在发生的事情.

我们有一个防火墙/路由器设备,它有两个面向外部的接口和许多内部VLAN.

当我们的访客WiFi网络VLAN 99上的客户端(本例中的MAC f4:f5:d8:d2:f2:4c,IP 10.99.154.254)向某个互联网主机8.8.8.8发送ping回应请求时,会观察到特定行为,我们禁止的.

路由器从其vlan99接口(MAC 00:08:a2:0d:00:70,IP 10.99.0.2)向客户端发送ICMP主机不可达数据包,同时我们在外部看到火星数据包接口eth-ext1:

tcpdump显示了这个:

$tcpdump -i vlan99 -vvvvn 'icmp and host 10.99.154.254'
11:59:21.555564 f4:f5:d8:d2:f2:4c > 00:08:a2:0d:00:70, ethertype IPv4 (0x0800), length 98: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    10.99.154.254 > 8.8.8.8: ICMP echo request, id 2303, seq 1, length 64
11:59:21.555651 00:08:a2:0d:00:70 > f4:f5:d8:d2:f2:4c, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 8585, offset 0, flags [none], proto ICMP (1), length 112)
    10.99.0.2 > 10.99.154.254: ICMP host 8.8.8.8 unreachable, length 92
    (tos 0x0, ttl 63, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
    10.99.154.254 > 8.8.8.8: ICMP echo request, id 2303, seq 1, length 64

这里没有什么令人惊讶的,这是来自客户端的原始ping,并且生成的ICMP数据包返回到客户端客户端,通知他们主机无法访问.

同时,内核日志中会出现一个条目:

Feb 21 11:59:21 ganymede kernel: IPv4: martian source 10.99.154.254 from 8.8.8.8, on dev eth-ext1
Feb 21 11:59:21 ganymede kernel: ll header: 00000000: 00 08 a2 0d 00 70 f4 f5 d8 d2 f2 4c 08 00        .....p.....L..

链路层信息显示这个以太网帧来自客户端设备到路由器的vlan99接口,这让我想知道为什么它在eth-ext1上显示为火星数据包,源地址为8.8.8.8.

到目前为止,我已经失败了得到火星源的数据包的痕迹,这让我想知道火星源记录是否也发生在出口接口上,在tcpdump有机会看到它之前?

我很乐意提供更多关于请求的信息(路由表等),并且非常感谢有关这里发生了什么的任何指示.

最佳答案
内核正在使用icmp unreachable消息将ping请求修补到8.8.8.8,并且有助于告诉你sourc是一个火星人.

这是它正在标记的数据包……

11:59:21.555651 00:08:a2:0d:00:70 > f4:f5:d8:d2:f2:4c, ethertype IPv4 (0x0800), length 126: (tos 0xc0, ttl 64, id 8585, offset 0, flags [none], proto ICMP (1), length 112)
    10.99.0.2 > 10.99.154.254: ICMP host 8.8.8.8 unreachable, length 92

正如您可以通过链路层看到的…… MAC 00 08 a2 0d 00 70到f4 f5 d8 d2 f2 4c 08 00.

Feb 21 11:59:21 ganymede kernel: ll header: 00000000: 00 08 a2 0d 00 70 f4 f5 d8 d2 f2 4c 08 00 

火星源 – 我认为它混淆了它作为8.8.8.8的代理响应的事实 – 无法从这里到达那里.

转载注明原文:linux – ICMP Host Unreachable消息导致火星源数据包 - 代码日志