Назад | Перейти на главную страницу

клиент openvpn переопределяет шлюз по умолчанию для сервера vpn

когда 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.