Я установил мост, br0
«привязанный» к двум интерфейсам:
eth0
мой физический интерфейс подключен к реальной локальной сети,vnet0
виртуальный интерфейс KVM (подключен к виртуальной машине Windows).
И у меня есть это единственное правило брандмауэра в прямой цепочке:
iptables -A FORWARD -j REJECT
Теперь работает только один пинг - от виртуальной машины до хоста.
br0
Интерфейс принадлежит IP - адрес моего хоста. eth0
и vnet0
не "владеть" никаким IP с точки зрения хоста. Виртуальная машина Windows имеет статическую IP-конфигурацию.
Если изменить мое iptables
правило ACCEPT
(или даже использовать более строгие ограничения iptables -A FORWARD -o br0 -j ACCEPT
), все работает нормально! (то есть я могу пропинговать любой компьютер локальной сети с виртуальной машины, и наоборот).
Все параметры ядра переадресации IP отключены (как net.ipv4.ip_forward = 0
).
Итак, как брандмауэр netfilter может заблокировать то, что даже не включено?
Кроме того, трафик VM - LAN должен только подразумевать eth0
и vnet0
. Тем не менее, это похоже на то, что разрешить FORWARD трафик с -o br0
«работами» (хотя я не очень тщательно проверял)
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