Problema
Encontrei o mesmo problema hoje, onde pacotes marcianos inundavam meus logs do kernel. Todos os pacotes marcianos são do mesmo endereço IP público eth0
para o mesmo endereço IP público eth0
(os IPs reais e o cabeçalho são removidos).
IPv4: martian source x.x.x.x from x.x.x.x, on dev eth0
ll header: 00000000: aa bb cc dd ee ff gg hh ii jj kk ll 08 00
Depois de algumas pesquisas, percebi que o motivo está oculto nos ll header
pacotes marcianos.
Teoria
Assumindo isso em uma conexão Ethernet, ll header
na verdade mostra a parte inicial de um quadro Ethernet Tipo II, que contém o endereço MAC de destino, o endereço MAC de origem e um ID indica o tipo da parte restante do pacote.
Como você vê, os primeiros 6 bytes são o endereço MAC de destino, os próximos 6 bytes são o endereço MAC de origem e um código nos últimos 2 bytes. Os códigos comuns são:
08 00
: Pacotes IP
86 dd
: Pacote IPv6
08 06
: Pacote ARP
Explicação
De volta ao meu exemplo.
IPv4: martian source x.x.x.x from x.x.x.x, on dev eth0
ll header: 00000000: aa bb cc dd ee ff gg hh ii jj kk ll 08 00
Isso nos diz,
- houve um pacote recebido com o mesmo endereço IP de origem e destino.
- Foi enviado por
GG:HH:II:JJ:KK:LL
, que é um endereço MAC que não conheço.
- Seu destino é
AA:BB:CC:DD:EE:FF
, que é meu próprio endereço MAC.
- Era um pacote IP (
08 00
).
Se um pacote tiver os mesmos endereços IP de origem e destino, ele deverá ser enviado pela mesma interface de rede, mas os MACs de origem e destino serão diferentes! Como isso pode ser possível?
Portanto, fica claro que o pacote vem de Marte, ou existem alguns problemas de roteamento, uma máquina na rede está configurada ou alguém está tentando falsificar os endereços IP / MAC. O próximo passo é verificar o endereço MAC de origem em questão.
tcpdump
nos servidores em questão. Dito isto, entendo o conceito de pacote marciano. O que eu não entendo é por que uma interface consideraria seu próprio IP como tal.