我一直试图在我们的路由/防火墙设置中了解一段特殊的行为已经有一段时间了,但是我并不真正了解正在发生的事情.
我们有一个防火墙/路由器设备,它有两个面向外部的接口和许多内部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,length 126: (tos 0xc0,id 8585,flags [none],length 112) 10.99.0.2 > 10.99.154.254: ICMP host 8.8.8.8 unreachable,length 92 (tos 0x0,ttl 63,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,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的代理响应的事实 – 无法从这里到达那里.