LINUX.ORG.RU

Сообщения corpse

 

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 - трафик не идёт.

 , ,

corpse ()

RSS подписка на новые темы