OpenVPN + tap + bridge + DHCP проброс трафика L2
День добрый!
Столкнулся со следующей задачей - есть машина на винде (1), есть линуксовая машина в том же датацентре(2), есть линуксовая машина в удалённом офисе (3) и проприетарная железка (4), которая адрес может получать исключительно по DHCP. Нужно заставить общаться железку и проприетарный софт на винде, поместив их в одну подсеть 10.20.27.0/24. Возможно для этого есть более подходящий способ (GRE туннель или что-то подобное - советам тоже буду рад).
На машине 2 поднял два OpenVPN на разных портах (XXXX и YYYY) с preshared key. Поднял два tap интерфейса в promisc mode, подключил их к одному шлюзу. На бридже выставлен айпишник 10.20.27.1/24.
С машины 1 устанавливается соединение к машине 2 на порт XXXX, машина получает из OpenVPN конфига адрес 10.20.27.5/24.
С машины 3 устанавливается соединение к машине 2 на порт YYYY, tap0 интерфейс на стороне машины 3 поднимается с адресом 0.0.0.0 и подключается к мосту (допустим, br0), на мосте поднят адрес 10.20.27.10/24. Так же есть интерфейс eth1, который добавлен в тот же мост без адреса (0.0.0.0). На интерфейс br0 смотрит dnsmasq в режиме только DHCP, раздающий адреса из диапазона 10.20.27.100 - 10.20.27.200.
На время активных экспериментов iptables на машинах 2 и 3 iptables по всем таблицам выставлен в ACCEPT, таблицы очищены.
Win(1) Linux(2) Linux(3)
OVPN Client --> XXXX YYYY <-- OVPN Client
10.20.27.5 tap0-br0-tap1 tap0-br0-eth1 HARDWARE(4)
10.20.27.1 10.20.27.10 10.20.27.117
DNSMASQ <-- DHCPCLIENT
Все три машины видят друг-друга по адресам 10.20.24.(1/5/10), трафик идёт, пинги есть, всё хорошо. Железка 4 по dhcp у dnsmasq получает адрес (10.20.27.117) и с машины 3 её видно (как минимум, пинги идут). Но для машин 1 и 2 она недоступна.
1<->2, 1<->3, 2<->3, 3<->4 - трафик идёт. 1<->4, 2<->4 - трафик не идёт.