Já faz algum tempo que venho tentando entender um comportamento peculiar em nossa configuração de roteamento/firewall, mas não entendo realmente o que está acontecendo.
Temos um dispositivo firewall/roteador que possui duas interfaces externas e várias VLANs internas.
O comportamento específico é observado quando um cliente (MAC f4:f5:d8:d2:f2:4c
, IP 10.99.154.254 neste exemplo) em nossa rede WiFi convidada VLAN 99 envia uma solicitação de eco de ping para algum host da Internet 8.8.8.8, o que proibimos.
O roteador envia de volta um pacote ICMP host inacessível de sua vlan99
interface (MAC 00:08:a2:0d:00:70
, IP 10.99.0.2) para o cliente e, ao mesmo tempo, vemos umpacote marcianona interface externa eth-ext1
:
tcpdump
mostra isso:
$ 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
Nada de surpreendente aqui, este é o ping original do cliente e o pacote ICMP resultante voltando para o cliente convidado informando-o de que o host está inacessível.
Ao mesmo tempo, uma entrada aparece no log do kernel:
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..
As informações da camada de enlace mostram que esse quadro Ethernet veiodeo dispositivo clienteparao roteadorvlan99
interface, o que me faz pensar por que ele aparece como um pacote marciano emeth-ext1
com um endereço de origem 8.8.8.8.
Até agora, não consegui rastrear o pacote com a fonte marciana, o que me deixa pensando se o registro da fonte marciana também acontece em uma interface de saída, antes de tcpdump
ter a chance de vê-lo?
Terei prazer em fornecer mais informações mediante solicitação (tabelas de roteamento ou similares) e agradeceria qualquer indicação sobre o que está acontecendo aqui.
Responder1
O kernel está corrigindo a solicitação de ping para 8.8.8.8 com a mensagem icmp inacessível e está informando que a fonte é marciana.
Este é o pacote que está sinalizando ...
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
Como você pode ver pela camada de link... MAC 00 08 a2 0d 00 70 to 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
A fonte marciana - presumo que esteja confundindo o fato de estar respondendo como um proxy para 8.8.8.8 - não pode chegar lá a partir daqui.