Eu montei uma ponte br0
"anexada" a duas interfaces:
eth0
, minha interface física conectada à LAN real,vnet0
, uma interface virtual KVM (conectada a uma VM do Windows).
E eu tenho essa regra de firewall única na cadeia de encaminhamento:
iptables -A FORWARD -j REJECT
Agora, o único ping que está funcionando é da VM para o host.
A br0
interface possui o endereço IP da minha máquina host. eth0
e vnet0
não "possui" nenhum IP, do ponto de vista do host. A VM do Windows tem uma configuração de IP estático.
Se mudar minha iptables
regra para ACCEPT
(ou até usar uma mais restritiva iptables -A FORWARD -o br0 -j ACCEPT
), tudo está funcionando bem! (ou seja, eu posso executar ping em qualquer máquina LAN da VM e vice-versa).
Todas as opções do kernel de encaminhamento de IP estão desabilitadas (como net.ipv4.ip_forward = 0
).
Então, como o firewall do netfilter pode bloquear algo que nem está ativado?
Além disso, o tráfego VM - LAN deve implicar apenas eth0
e vnet0
. No entanto, parece permitir o tráfego FORWARD com -o br0
"obras" (embora não tenha verificado com muito cuidado).
sysctl -a | grep bridge-nf
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-filter-vlan-tagged = 0
net.bridge.bridge-nf-filter-pppoe-tagged = 0