Как подменить шлюз внутри сетевого моста?

Приветствую.

Имеем "головной офис" соединенный с "филиалом" L2-тоннелем по средством OpenVPN.

В филиале стоит компьютер (PC2) с двумя сетевыми портами: к одному (eth0) подключен кабель провайдера, к другому (eth1) локальная сеть филиала. На этом компьютере tap-интерфейс (tap0), созданный OpenVPN, добавлен в сетевой мост (br0) вместе с eth1. Аналогичная конфигурация на OpenVPN-сервере в головном офисе. Обе машины под управлением Debian 9.

По итогу локальная сеть филиала и головного офиса видят друг-друга, компьютеры филиала получают сетевые настройки от DHCP-сервера с головного офиса, но и интернет-трафик филиала тоже идет через головной офис.

Вопрос в том, как на PC2 перенаправлять интернет-трафик клиентов филиала через их же интернет?

Для экспериментов собрал тестовый стенд:
DebianClient - имитирует клиентов филиала, подключен к DebianServer изолированной от всего сетью, сетевые настройки получит по DHCP (IP: 192.168.0.0/22, Шлюз: 192.168.0.1)
DebianServer - имитирует пограничный компьютер филиала, на нем:
ens3 - сетевой интерфейс для кабеля провайдера (IP: 172.16.20.4/29, Шлюз: 172.16.20.1)
ens4 - интерфейс подключенный к изолированной сети (DebianClient)
tap0 - интерфейс созданный OpenVPN
br0 - Сетевой мост с портами ens4 и tap0, под DHCP получает те же настройки, что и DebianClient.

Спасибо.
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
Sinot
@Sinot Автор вопроса
Все оказалось не так сложно, минимальное решение:
1. На пограничном компьютере (DebianServer) раздаем интернет
iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

2. Меняем адрес шлюза на DebianServer в пакетах внутри моста. Но только для тех, у которых адрес назначения отличается от локальной сети
ebtables -t broute -A BROUTING -i ens4 -d yy:yy:yy:yy:yy:yy -p IPv4 --ip-dst ! 192.168.0.0/22 -j dnat --to-destination xx:xx:xx:xx:xx:xx

, где xx:xx:xx:xx:xx:xx - MAC-адрес моста на DebianServer,
yy:yy:yy:yy:yy:yy - MAC-адрес исходного шлюза.

Это минимальная конфигурация с которой у меня решился вопрос.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
vadimspriggan
@vadimspriggan
Системный администратор по жизни
Возможно маршрутизация на PC2 настроена на ip 0.0.0.0 в туннель, так что весь трафик улетает в него.
А нужно прописать только адреса тех сетей, которые находятся по ту сторону тунеля: 192.168.0.0/24
Так всё, кроме локальных адресов полетит в провайдера минуя туннель.

И я бы на вашем месте разделил хосты по обе стороны на подсети:
192.168.0.0/24 -- 192.168.1.0/24 -- 192.168.3.0/24
Ответ написан
Комментировать
@Supporting
Задача, конечно, не лёгкая!
Предлагаю следующие решения:
1. Простой.
Настроить для каждого офиса свою область на DHCP со своими настройками маршрутизации. На маршрутизаторах прописать соответствующие правила.
2. Посложнее.
Настроить в DHCP политики для головного и удалённого офисов с собственными правилами маршрутизации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы