Configuré un puente br0
"conectado" a dos interfaces:
eth0
, mi interfaz física conectada a la LAN real,vnet0
, una interfaz virtual KVM (conectada a una máquina virtual de Windows).
Y tengo esta única regla de firewall en la cadena de avance:
iptables -A FORWARD -j REJECT
Ahora, el único ping que funciona es desde la VM al host.
La br0
interfaz posee la dirección IP de mi máquina host. eth0
y vnet0
no "posee" ninguna IP, desde el punto de vista del host. La VM de Windows tiene una configuración de IP estática.
Si cambio mi iptables
regla a ACCEPT
(o incluso uso una más restrictiva iptables -A FORWARD -o br0 -j ACCEPT
), ¡todo está funcionando bien! (es decir, puedo hacer ping a cualquier máquina LAN desde la VM, y al revés también).
Todas las opciones de kernel de reenvío de IP están deshabilitadas (como net.ipv4.ip_forward = 0
).
Entonces, ¿cómo puede el firewall de netfilter bloquear algo que ni siquiera está habilitado?
Además, el tráfico VM - LAN solo debe implicar eth0
y vnet0
. Sin embargo, parece permitir el tráfico ADELANTE con -o br0
"obras" (aunque no lo revisé con mucho 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
Respuestas:
El comentario de Stéphane Chazelas proporciona la pista a la respuesta.
Según las preguntas frecuentes de Bridge-nf, bridge-nf permite que iptables, ip6tables o arptables puedan ver el tráfico en puente.
A partir de la versión 2.6.1 del kernel, hay cinco entradas sysctl para el control de comportamiento bridge-nf:
bridge-nf-call-arptables
- Pase el tráfico ARP puenteado a la cadena FORWARD de arptables.bridge-nf-call-iptables
- Pase el tráfico IPv4 puenteado a las cadenas de iptables.bridge-nf-call-ip6tables
- Pase el tráfico IPv6 puenteado a las cadenas de ip6tables.bridge-nf-filter-vlan-tagged
- Pase el tráfico ARP / IP con etiqueta vlan en puente a arptables / iptables.net.bridge.bridge-nf-filter-pppoe-tagged
- Pase el tráfico IP / IPv6 con etiqueta pppoe en puente a las tablas {ip, ip6}Puede deshabilitar el bloqueo del firewall de netfilter con:
fuente
br_netfilter
módulo. No tener el módulo cargado también significa que no hay/proc/sys/net/bridge/
entrada.