Como ler os logs da "fonte marciana" do Linux?

Como ler os logs da "fonte marciana" do Linux?

Estou configurando o host de virtualização KVM com roteamento baseado em políticas (rede de gerenciamento 192.168.1.0/24 para tráfego relacionado ao host, como atualizações, ssh etc., rede DMZ 192.168.2.0/24 roteada para VMs)

A configuração fica assim (por ^^^ quero dizercomo acimapara representar a estrutura da árvore)

#external connectivity
eth0 -> vlan110 -> brhost (192.168.1.9)
^^^  -> vlan120 -> brguest (192.168.2.4)

#internal connectivity
brguestA (10.0.1.1) -> tapA0
^^^                 -> tapA1
^^^                 -> tapA2
brguestB (10.0.2.1) -> tapB0
^^^                 -> tapB1

# ... and so on for each VM group subnet

máquinas An estão em um "switch", Bn no segundo etc. O host se comporta como um roteador e possui o iptables instalado. O IP de origem é validado por ponte no nível iptables.

Em geral, tudo "normal" funciona, mas quando estou executando algumas operações de fronteira, ele ainda se comporta como deveria, mas os registros sugerem que é mais uma coincidência do que um funcionamento adequado. Por exemplo:

  • conectar-se a 192.168.1.3 da VM (host diferente na rede de gerenciamento) que está com operação bloqueada no nível iptables (tcp-reset) fornece

    (iptables reject log) IN=brguestA OUT=brguest SRC=10.0.1.2 DST=192.168.1.3 ...
    IPv4: martian source 10.0.1.2 from 192.168.1.3 on dev brhost
    

observe que OUTa interface está realmente correta de acordo com o que deveria fazer, considerando a lógica da separação da rede host/convidado e mesmo que tais pacotes fossem encaminhados pelo host, eles seriam descartados no firewall de qualquer maneira. No entanto, o host iptables não pode ser rejeitado corretamente com tcp-reset, portanto, essas conexões ficam suspensas na VM e não recebem redefinição

  • conectar-se a 192.168.1.9 da VM fornece

    IPv4: martian source 192.168.1.9 from 10.0.1.2 on dev brguestA
    

e nada mais. Trocar os lugares de 10.0.1.xe 192.168.1.x nesses logs me deixa muito confuso e eu realmente não entendo o significado deles (quais são src ip e qual é dst ip). Eu realmente não sei o que o host está tentando fazer e por que falha. Aqui está o resultado do meu ip rulee ip route:

ip rule
0: from all lookup local
32763: from 10.0.0.0/16 lookup guest
32764: from 192.168.2.0/24 lookup guest
32765: from all iif lo lookup host
32766: from all lookup main
32767: from all lookup default

ip route show table host
default via 192.168.1.1 dev brhost proto static
192.168.1.0/24 dev brhost proto static

ip route show table guest
default via 192.168.2.1 dev brguest proto static
10.0.0.0/24 dev brguestA proto static
10.0.1.0/24 dev brguestB proto static
# ... so on for other networks

ip route show table main
192.168.1.0/24 dev brhost proto static
10.0.0.0/24 dev brguestA proto static
10.0.1.0/24 dev brguestB proto static
# ...

Estou usando systemd-networkdpara gerenciamento de rede. EUpensamentoisso está acontecendo porque o host sempre tenta responder usando brhosto dispositivo como o OUTPUTtipo de pacote definido iifpara loser capturado pela from iif lookup hostregra. No entanto, não parece ser o caso, pois a conexão 192.168.2.4é rejeitada corretamente, por isso nem sempre é escolhida brhostcomo fonte de saída.

informação relacionada