когда openvpn
клиент подключается к серверу vpn, он создает маршрут для IP-адреса сервера со старым шлюзом по умолчанию. Как я могу сказать openvpn
не использовать старый шлюз по умолчанию, а использовать предоставленный мной пользовательский IP-адрес шлюза.
Т.е. когда у меня есть сервер vpn в другой сети vpn, которая не является маршрутом по умолчанию на моем компьютере.
Добавив эти две строки в Server Config File
заставит весь трафик проходить через ваш VPN
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
Если вы хотите установить маршрутизатор следующего перехода для конкретной подсети после того, как оба VPN установлены, используйте что-то вроде
ip -4 route add ${DESTINATION_SUBNET} via ${NEXT_HOP} dev ${INTERFACE_NAME}
например
ip -4 route add 10.0.0.0/8 via 172.16.0.1 dev eth0
Вам тоже не нужно изменять шлюз по умолчанию; более конкретный маршрут будет выбран вместо маршрута по умолчанию.
В redirect-gateway
опция может или не может изменить шлюз для доступа к серверу OpenVPN, в зависимости от предоставленных ему флагов.
Согласно странице руководства openvpn
:
Флаги опций:
местный - Добавьте локальный флаг, если оба сервера OpenVPN напрямую подключены через общую подсеть, например, по беспроводной сети. Локальный флаг вызовет шаг 1 выше (создание статического маршрута для --удаленный адрес, который пересылает на уже существующий шлюз по умолчанию), который следует опустить.
Итак, просто добавьте redirect-gateway local
в файле конфигурации клиента, чтобы переопределить заданный параметр. Это вызовет openvpn
чтобы просто добавить новый маршрут по умолчанию, а не конкретный маршрут для сервера. Таким образом, текущий маршрут, используемый для подключения к серверу, будет продолжать использоваться.
Если вы хотите, чтобы такое поведение выполнялось для всех клиентов, отредактируйте файл конфигурации сервера и измените параметр push "redirect-gateway"
к push "redirect-gateway local"
.
Я также не хочу, чтобы первый VPN был шлюзом по умолчанию. Просто мне это нужно только для определенной подсети.
На стороне клиента вы можете игнорировать любые маршруты от vpn-сервера со следующими параметрами
script-security 2
route-noexec
route-up setup-routing.sh
и настройте свои собственные маршруты с помощью сценария маршрутизации, это может быть что-то вроде этого
$ cat setup-routing.sh
#!/bin/bash
ip ro add 192.168.10.0/24 via ${route_vpn_gateway}
куда route_vpn_gateway - это переменная среды, которая указывает на шлюз по умолчанию, используемый параметрами --route, как указано либо в параметре --route-gateway, либо во втором параметре --ifconfig, если указано --dev tun.