
У меня есть виртуальная машина с внутренним интерфейсом, подключенным к локальной сети. У виртуальной машины есть рабочее соединение OpenVPN с другим сайтом. Как перенаправить весь входящий трафик на локальном интерфейсе через туннель VPN с помощью iptables? Я использую дистрибутив Ubuntu.
решение1
Чтобы иметь возможность сделать site-to-site VPN с существующим подключением, вам нужно иметь пути маршрутизации через VPN. Допустим, вы находитесь на сайте № 1 (все симметрично, независимо от того, что действует как сервер OpenVPN).
- Во-первых, вам нужно убедиться, что виртуальная машина с VPN-подключением (которую мы можем назвать "VPN#1") может достичь удаленной подсети. Это делается путем добавления маршрута с использованием конфигурации OpenVPN
- Если «VPN#1» — это клиент OpenVPN, вы можете либо добавить его на сервере с помощью
push
ключевого слова, либо добавить его локально с помощьюroute
- Если «VPN#1» — это сервер OpenVPN, вы можете добавить его с помощью
route
или с помощью внешнего инструмента, напримерip
- Если «VPN#1» — это клиент OpenVPN, вы можете либо добавить его на сервере с помощью
- Затем вам необходимо убедиться, что и на «VPN#1», и на удаленной конечной точке включена переадресация IP (добавьте
net.ipv4.ip_forward=1
и/etc/sysctl.conf
перезагрузите с помощьюsysctl -p
). - Если VPN#1 является шлюзом по умолчанию, то все готово. Если нет, вам нужно либо добавить статический маршрут для удаленной локальной сети в шлюзе по умолчанию, либо вы можете добавить статический маршрут на каждом хосте вашей локальной сети.
- Проверьте брандмауэр в VPN#1: он должен быть настроен на разрешение трафика между интерфейсами LAN и VPN (см.
FORWARD
цепочку вfilter
таблице с использованиемiptables
).
Если вы повторите это на удаленной стороне, все должно работать. Используйте ping
и traceroute
для отладки любой проблемы.
решение2
OK, теперь все работает. Я могу подключиться к серверу RDP на другой стороне из своей локальной сети. Я не могу использовать smb для доступа к административным ресурсам на серверах Windows на другой стороне. Вот правила таблицы IP, которые я использовал:
/sbin/iptables -t nat -A POSTROUTING -o tun0 -j МАСКАРАД /sbin/iptables -A ПЕРЕСЫЛКА -i tun0 -o ens160 -m state --state СВЯЗАННЫЕ,УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ /sbin/iptables -A ПЕРЕСЫЛКА -i ens160 -o tun0 -j ПРИНЯТЬ