Я установил мост, 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