Я установил мост, 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
Ответы:
Комментарий от Stéphane Chazelas дает намек на ответ.
В соответствии с часто задаваемыми вопросами Bridge-nf bridge-nf позволяет iptables, ip6tables или arptables видеть мостовой трафик.
Начиная с версии ядра 2.6.1, существует пять записей sysctl для контроля поведения bridge-nf:
bridge-nf-call-arptables
- передать мостовой ARP-трафик в цепочку FORWARD arptables.bridge-nf-call-iptables
- передавать мостовой трафик IPv4 в цепочки iptables.bridge-nf-call-ip6tables
- передавать мостовой трафик IPv6 в цепочки ip6tables.bridge-nf-filter-vlan-tagged
- передать соединенный с метками vlan-трафик ARP / IP в arptables / iptables.net.bridge.bridge-nf-filter-pppoe-tagged
- передать связанный с pppoe-тегами трафик IP / IPv6 в таблицы {ip, ip6}Вы можете отключить блокировку брандмауэра netfilter с помощью:
источник
br_netfilter
модуля. Отсутствие загрузки модуля также означает, что/proc/sys/net/bridge/
запись отсутствует .