VPN-шлюз VirtualBox для LAN: мост, маршрут, возврат
Подключите шлюзовую виртуальную машину к LAN через мост, объявите LAN клиентам и добавьте маршрут пула на маршрутизатор LAN. Разобранный пример IPv4 с настоящими обратными путями.
Удалённым пользователям нужен доступ к принтеру и файловому серверу в физической LAN, а единственная постоянно работающая машина с Linux — это виртуальная машина VirtualBox. Подключить её к этой LAN через мост — первая половина. Вторая половина — обратный маршрут, которым действительно будет пользоваться каждое устройство в LAN, и именно её большинство настроек упускает. Когда его нет, туннель поднимается, клиент пингует шлюз, и больше никто не отвечает.
Используйте доступные адреса
Переключите LAN-адаптер виртуальной машины в режим Bridged Adapter, разрешённый для этой сети, и выдайте ему адрес обычным процессом распределения. Тогда виртуальная машина появится в физической LAN как любой другой хост. Её маршрут по умолчанию должен по-прежнему использовать настоящий шлюз, чтобы шифрованный транспорт к партнёру VPN оставался доступным. Не используйте стандартный NAT-адрес VirtualBox как следующий шаг для LAN: этот адрес находится за виртуальным NAT и не является on-link для хоста или других машин в LAN.
LAN router: 192.168.70.1/24
VirtualBox host: 192.168.70.5/24
VPN gateway VM: 192.168.70.10/24
Example LAN service: 192.168.70.40
VPN client pool: 10.80.0.0/24
Проверьте пересечение с домашними сетями удалённых пользователей, прежде чем выбирать пул адресов. Пересечение превращается в неоднозначность маршрутизации, которую не исправит никакая настройка сервера.
Объявите LAN, затем пересылайте
Для сервера, аутентификация и транспорт которого уже управляются, строки сети выглядят так. Push сообщает принимающему клиенту, как добраться до LAN, и сам по себе не заставляет виртуальную машину что-либо пересылать.
dev tun
topology subnet
server 10.80.0.0 255.255.255.0
push "route 192.168.70.0 255.255.255.0"
Включите пересылку IPv4 в постоянной сетевой конфигурации виртуальной машины и разрешите пулу клиентов достигать нужных служб LAN на границе пересылки. Разрешение на доступ к слушателю VPN — отдельное правило, и оно уже работает, если туннель поднялся.
Обратный маршрут принадлежит маршрутизатору LAN
Устройства в LAN отвечают через свой шлюз по умолчанию — маршрутизатор LAN по адресу 192.168.70.1. Этот маршрутизатор понятия не имеет, где находится 10.80.0.0/24, если ему не сказать. Добавьте маршрут пула в поддерживаемую постоянную конфигурацию маршрутизатора, направив его на LAN-адрес виртуальной машины. Если добавить его только на хосте VirtualBox, исправятся лишь пути, которые спрашивают этот хост, а это не каждое устройство в LAN.
ip route add 10.80.0.0/24 via 192.168.70.10
Собственный межсетевой экран назначения всё равно должен разрешать пул клиентов как источник. Маршрут несёт пакет; он не выдаёт услугу.
Если маршрутизатор LAN изменить нельзя, альтернатива — ограниченный перевод источника на виртуальной машине. Он возвращает ответы без маршрута и скрывает отдельные адреса клиентов от службы LAN.
Проследите один пакет от начала до конца
Клиент с адресом 10.80.0.25 отправляет на 192.168.70.40 через туннель. Виртуальная машина пересылает пакет в LAN. Служба отвечает своему маршрутизатору, который выбирает виртуальную машину для пула клиентов, и она возвращает пакет через OpenVPN. Каждый шаг в этом предложении — место, где схема может отказать.
Проверьте настоящим приложением с удалённого клиента, затем повторите после перезагрузки управляемой конфигурации и на виртуальной машине, и на маршрутизаторе.
Если клиент достигает виртуальной машины, но не службы, сначала проверьте маршрут маршрутизатора. Если служба получает запрос, а клиент никогда не видит ответ, подозрителен обратный путь.