У меня есть этот сценарий, и все работает нормально, но я хочу настроить Shorewall и не могу этого сделать.
Мои интерфейсы:
br0 (bridge of eth0)
tun0 (OpenVPN)
vnet* (each one of bridged interfaces with public IP's)
Public Main IP: 188.165.X.Y
OpenVPN IP's: 172.28.0.x
Bridge: public ip's
Итак, у меня есть следующая конфигурация Shorewall:
/ etc / shorewall / зоны
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
inet ipv4
road ipv4
/ и т.д. / shorewall / интерфейсы
#ZONE INTERFACE BROADCAST OPTIONS
inet br0 detect routeback
road tun+ detect routeback
/ etc / shorewall / policy
#SOURCE DEST POLICY LOG LIMIT: CONNLIMIT:
# LEVEL BURST MASK
$FW all ACCEPT
inet $FW DROP info
road all DROP
inet road DROP
/ etc / shorewall / туннели
#TYPE ZONE GATEWAY GATEWAY
# ZONE
openvpnserver:1194 inet 0.0.0.0/0
Проблема в том, что даже при запущенном shorewall я могу пинговать или подключаться к виртуальным машинам за мостом.
Вы не должны защищать интерфейсы межсетевого экрана, которые являются членами моста, а только сам интерфейс моста. Мост - это домен уровня 2, тогда как iptables - это межсетевой экран уровня 3, поэтому он работает только тогда, когда хост маршрутизирует пакеты на уровне 3.
В вашем случае Shorewall должен знать только о br0
и tun+
, поскольку eth0
и vnet+
являются членами br0
. Если вы хотите контролировать трафик между виртуальными машинами и Интернетом, вы должны изменить свою конфигурацию, чтобы не подключать виртуальные машины к локальной сети (т.е. eth0
снаружи br0
).