найдено здесь: https://forums.openvpn.net/viewtopic.php?t=9465
Автор имеет 4 метода, 2 и 3 решают мой вариант использования, я оставил 4-й, так как он был довольно длинным.
Сайт A Локальная сеть: 192.168.0.0/255.255.255.0. Шлюз по умолчанию имеет IP 192.168.0.1 (общая конфигурация). IP-адрес хоста, на котором работает OpenVPN, равен 192.168.0.A, где A может быть любым от 2 до 254. Хосты имеют IP-адреса, например 192.168.0.x, где x от 2 до 254 и отличается от A (IP-адрес хоста OpenVPN) .
Сайт B Локальная сеть 192.168.1.0/255.255.255.0. Шлюз по умолчанию имеет IP 192.168.1.1 (общая конфигурация). IP-адрес хоста, на котором работает OpenVPN, равен 192.168.1.B, где B может быть любым от 2 до 254. Хосты имеют IP-адреса, например 192.168.1.x, где x от 2 до 254 и отличается от B (IP-адрес хоста OpenVPN) .
IP-адреса VPN относятся к 10.8.0.0/255.255.255.0.
При обсуждении этого вопроса не важно, какой сайт является сервером или клиентом, и какие IP-адреса получают интерфейсы TAP. Для решения этой проблемы маршрутизации существует 4 метода:
Метод 1 Как очевидно, переместите программное обеспечение OpenVPN на шлюз по умолчанию в локальной сети. Поскольку существует ситуация, когда это невозможно (простой маршрутизатор, который не может запустить OpenVPN), этот метод является лучшим для будущих расширений, так как добавление большего количества удаленных сайтов не потребует возврата к проблемам маршрутизации.
Метод 2 Добавление маршрута stati c для удаленной сети в таблицу маршрутизации каждого хоста. На каждом хосте мы должны добавить маршрут следующим образом: CODE: SELECT ALL
route add mask gw Например, на каждом хосте с сайта A мы должны добавить два маршрута: CODE: SELECT ALL
route add 192.168.1.0 mask 255.255.255.0 gw 192.168.0.A route add 10.8.0.0 mask 255.255.255.0 gw 192.168.0.A Маршрут для сети VPN 10.8.0.0 может быть опущен, но это не рекомендуется.
Таким же образом мы добавляем маршруты на сайт B, чтобы показать хостам, куда направлять пакеты для удаленного сайта: КОД: ВЫБРАТЬ ВСЕ
route add 192.168.0.0 mask 255.255.255.0 gw 192.168.1.B route add 10.8.0.0 mask 255.255.255.0 gw 192.168.1.B Если будет третий сайт, мы должны таким же образом добавить другой маршрут для новой удаленной сети.
маршруты также должны быть добавлены на шлюзах локальной сети по умолчанию. Хотя кажется, что многие маршрутизаторы могут возвращать ответы без добавления маршрутизаторов для удаленных сетей.
Метод 3 Этот метод подразумевает добавление тех же маршрутов, что и в методе 2, только по умолчанию в локальной сети шлюз. Таким образом, перенаправление будет выполняться маршрутизатором, и нам не нужно добавлять маршруты на каждом хосте. Конечно, это возможно, если маршрутизатор разрешает изменять таблицу маршрутизации и iptable. Как и в методе 2, на маршрутизаторе по умолчанию мы добавляем маршруты к удаленным сайтам: CODE: SELECT ALL
route add mask gw Например, на шлюзе по умолчанию сайта A с IP 192.168.0.1 мы должны добавить два маршруты: КОД: ВЫБРАТЬ ВСЕ
route add 192.168.1.0 mask 255.255.255.0 gw 192.168.0.A route add 10.8.0.0 mask 255.255.255.0 gw 192.168.0.A Но это покажет только шлюз, где отправлять пакеты, исходящие от себя. Нам также нужно показать, как маршрутизировать пакеты для удаленного сайта с локальных хостов. Для этого мы должны добавить правило iptable для маршрутизаторов, которое сообщит, что все пакеты, поступающие из интерфейса локальной сети и имеющие пункт назначения в сеть удаленного сайта, должны быть перенаправлены на хост OpenVPN. Большинство маршрутизаторов, которые обрабатывают более широкие настройки, имеют возможность использовать unix как команда «iptables». Итак, мы используем правило iptables следующим образом: CODE: SELECT ALL
iptables -A PREROUTING -t mangle -i -d / -j ROUTE --gw Например, на маршрутизаторе по умолчанию с сайта A мы добавим : КОД: ВЫБРАТЬ ВСЕ
iptables -A PREROUTING -t mangle -i -d 192.168.1.0/255.255.255.0 -j МАРШРУТ --gw 192.168.0.A iptables -A PREROUTING -t mangle -i - d 10.8.0.0/255.255.255.0 -j ROUTE --gw 192.168.0.A Таким же образом мы добавляем правила на маршрутизатор по умолчанию с сайта B.
Если мы добавим 3-й сайт, то нам придется добавить к другим сайтам маршрут к сети 3-го сайта таким же образом.