1

У меня OpenVPN подключен к конкретному приложению (A) с локальным портом (127.0.0.1:2727). Это (А) подключено к моей основной сети.

Но каждый раз, когда VPN отключается, он не может быть снова подключен к (A), потому что (A) подключен к ip VPN.

Есть идеи, как решить эту проблему? Я хочу подключить (A) к определенной сети (моей основной сети) после отключения VPN. Я пытался использовать ForceBindIP, но не работает ..

1 ответ1

1

tl; dr: Добавить явный маршрут к удаленному хосту мистической программы (/32).

Я посмотрел руководство OpenVPN, но остается неясным, может ли он делать это изначально (через --route). Чтобы быть в безопасности, используйте скрипты / программы с --up и --down . Важно отметить , что изменение маршрутизации конфигурации требует корень, который вы не имеете , когда --down работает , если --user также указан.

Чтобы быть переносимым, скрипту / программе --up потребуется выполнить следующее, в зависимости от того, как соединяется ваша таинственная программа:

  1. Разрешить удаленный IP-адрес загадочной программы ($remote_addr)
  2. Определите шлюз ($gateway) для удаленного IP-адреса - это может или не может быть шлюз по умолчанию
  3. Добавьте явный маршрут, например, ip route add $remote_addr via $gateway

Таким образом, он будет правильно работать с --redirect-gateway .

Скрипт / программа --down должен будет выполнять почти то же самое, за исключением того, что он должен удалить маршрут.

При написании скрипта (Bash) проблемы действительно начинаются уже с шага 1. Вам нужен только IP-адрес и больше ничего. Что-то вроде getent hosts сделало бы свое дело, но оно очень предпочитает адреса IPv6, что может или не может быть уместным. Другие инструменты (dig +short т.д.) Не используют распознаватель ОС, а напрямую запрашивают DNS, что может быть не тем, что вам нужно (например, /etc/hosts).

Шаг второй относительно легок на любой ОС (ip route get т.д.), Кроме Windows. В Windows вам нужно запрограммировать алгоритм, чтобы самостоятельно найти наиболее подходящий маршрут.

Если вы чувствуете, что все статично (удаленный IP-адрес, IP-адрес следующего перехода), вы также можете использовать OpenVPN --route:

route 1.2.3.4 255.255.255.255 10.1.2.3

... где 1.2.3.4 - это удаленный хост тайной программы, а 10.1.2.3 - следующий прыжок на маршрутизацию, чтобы достичь его.


Другое решение - не использовать --persist-tun , то есть сетевой интерфейс VPN будет полностью закрыт, когда OpenVPN потеряет соединение. Это имеет очень серьезное значение: трафик будет пропадать, как только соединение будет разорвано.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .