Итак, у меня есть сервер с публичным IP-адресом 101.102.103.104 (например). На этом сервере запущен сервер OpenVPN, а также куча других вещей, которые прослушивают порты сетевых устройств с публичным IP-адресом.
Я хочу после подключения к 101.102.103.104 направлять весь будущий трафик на этот IP через VPN.
Например, если у меня curl
101.102.103.104:8080, то он будет подключен через VPN-соединение.
Я попробовал добавить push route
в свой server.conf вот так:
push "route 101.102.103.104 255.255.255.255"
и я даже попробовал добавить маршрут исключения:
push "route 101.102.103.104 255.255.255.255 net_gateway"
но это, похоже, не сработало. Запуск sudo route -n
по-прежнему показывал маршрут, проходящий через мой домашний маршрутизатор:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0
10.8.0.1 10.8.0.5 255.255.255.255 UGH 0 0 0 tun0
10.8.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
101.102.103.104 192.168.1.1 255.255.255.255 UGH 0 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
Есть мысли, как это сделать? Я подумал, что проблема, скорее всего, в том, что я пытаюсь направить трафик на сам VPN-сервер, через VPN-сервер, и таким образом формирую своего рода бесконечный цикл, но это всего лишь предположение.
решение1
Таблица маршрутизации, которую вы показали, явно не направляет весь трафик через VPN, как показано в самой первой строке. В своей текущей конфигурации она только позволяет клиенту иметь доступ к LAN.
Команда для маршрутизации всего клиентского трафика через OpenVPN, включая весь трафик к третьим лицам (то есть, а не локальная сеть VPN-сервера)
push "redirect-gateway def1"
который необходимо добавить в файл конфигурации сервера (чтобы изменения вступили в силу, вам потребуется перезапустить программу OpenVPN).
Кроме того, поскольку вы настроили маршрутизируемый OpenVPN, а не мостовой, вам потребуется активировать NAT на сервере:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Это предполагает, что интерфейс сервера OpenVPN в Интернете (то естьтот, у которого IP-адрес 101.102.103.104) называетсяeth0. Пожалуйста, отрегулируйте соответствующим образом.
Чтобы проверить конфигурацию, после установки соединения с сервером OpenVPN выполните следующую команду:
wget 216.146.39.70:80 -O - -o /dev/null
Это выведет ваш очевидный IP-адрес. Если вывод содержит 101.102.103.104, то все готово.