Назад | Перейти на главную страницу

Понимание моста OpenVPN с точки зрения iptable

В моем сценарии есть машина, которая одновременно действует как межсетевой экран на базе iptables и как сервер OpenVPN. Он имеет два сетевых интерфейса - eth1 подключен к Интернету, тогда как eth0 подключен к локальной сети за машиной.

До сих пор понимаю, как настроить iptables для маршрутизация / TUNна основе VPN-соединений. Вы можете найти следующую визуализацию на openvpn.net:

|            FIREWALL            |
|                                |
{eth1                        eth0}
|   \                        /   |
|    +----------------------+    |
|    | iptables and         |    |
|    | routing engine       |    |
|    +--+----------------+--+    |
|       |                |       |
|     (openvpn)-------{tun0}     |
|                    10.8.0.1    |
+--------------------------------+ 

Согласно изображению, логический поток пакетов выглядит так:

Интернет -> eth1 -> iptables (через INPUT-цепочку) -> OpenVPN -> tun0 -> iptables (через FORWARD-цепочку) -> eth0 -> LAN

... что должно привести к следующим правилам iptables, если я не ошибаюсь:

# allow incoming and outgoing VPN traffic from/to the internet
iptables -A INPUT -i eth1 -p udp --dport 1194 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
# allow traffic between tun0 and LAN
iptables -A FORWARD -i tun+ -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Все идет нормально. Сейчас я хочу реализовать тот же сценарий, что и выше, но с мост / TAPна основе VPN-соединений, но у меня проблемы с пониманием логического потока пакетов и созданием правил iptables в среде с мостом.

Что я получаю до сих пор:

Для простоты предположим, что и tap0, и br0 уже настроены.

Чего я не понимаю, так это потока пакетов с точки зрения iptables и особенно того, как iptables работает с br0. Моя цель - создать ту же визуализацию и правила, что и выше, но для описанной среды на основе моста / TAP.

edit: Мне не нужно создавать настоящую и готовую к работе среду, не волнуйтесь. Я просто хочу это понять :)

Что касается iptables, br0 можно рассматривать как единый интерфейс (например, вы можете сопоставить -i br0 или -o br0, который будет применяться к пакетам, прибывающим или уходящим через tap0, а также eth0), но вы также можете ссылаться на его подынтерфейсы в правилах, используя physdev модуль, например -m physdev --physdev-in tap0.

Пожалуйста, постарайтесь конкретизировать свой вопрос, и я постараюсь ответить на него лучше.