OpenVPN не работает, когда также используется в той же локальной сети.

Вопрос или проблема

Мне нужно иметь возможность использовать VPN с IP в диапазоне 10.8.0.0, чтобы мой nginx разрешал подключение, даже если я на той же сети, что и сервер OpenVPN.

Мне это нужно, потому что у меня есть веб-сервис (gitlab), доступ к которому ограничен для пользователей VPN. Я не могу добавить IP своей сети в разрешенные, так как у меня динамический IP.

ОДНАКО, если я пытаюсь подключиться к VPN из той же сети, что и VPN-сервер, я больше не могу получить доступ ни к чему в интернете (включая мой собственный веб-сервис)

Я использую этот скрипт OpenVPN: https://github.com/angristan/openvpn-install

.

Ответ или решение

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

Теория

OpenVPN — это популярное решение для организационной VPN, которое позволяет безопасно подключать удаленные клиенты к серверу через интернет. Когда вы подключаетесь к VPN, вашему устройству назначается виртуальный IP-адрес (в данном случае в диапазоне 10.8.0.0), позволяющий обходить ограничения локальных IP-адресов. Задача в вашем случае заключается в том, чтобы когда компьютер находится на той же локальной сети, что и сервер OpenVPN, он должен продолжать работать через VPN без конфликта маршрутизации с локальной сетью.

Основная проблема здесь — это конфликт IP-маршрутов. Поскольку клиент и сервер находятся в одной подсети, пакеты данных могут некорректно маршрутизироваться, приводя к потере соединения с интернетом или удаленными ресурсами. Это особенно важно, если сервер VPN не умеет перенаправлять трафик или у клиента неправильно настроены маршруты по умолчанию.

Пример

Пример вашей конфигурации:

  1. VPN-сервер: находится в вашей локальной сети с сетью, например, 192.168.1.0/24.
  2. Клиент: пытается подключиться через ту же сеть и получает IP-адрес в диапазоне VPN, например, 10.8.0.2.

Когда вы соединяетесь с VPN, вашему клиенту предоставляются два основных маршрута:

  • По умолчанию весь трафик может идти через VPN, что предотвращает доступ к локальной сети и интернету.
  • На стороне клиента OpenVPN устанавливает маршрут для доступа к IP-адресу VPN-сервера через локальную сеть без использования VPN-туннеля.

Приложение

Для устранения проблемы конфликта маршрутов при использовании OpenVPN из той же локальной сети, что и сервер, можно предпринять следующие шаги:

Шаг 1: Настройка маршрутов и Ip-трансляция

  1. Изменение конфигурации сервера:

    • Убедитесь, что на сервере OpenVPN включена пересылка IP-адресов (IP forwarding). Обычно это делается путем добавления или изменения параметра в /etc/sysctl.conf:
      net.ipv4.ip_forward = 1
  2. Маршрутизация на сервере:

    • Настройте сервер, чтобы он мог маршрутизировать пакеты между сетями. Возможно, вам понадобится использовать iptables для NAT (Network Address Translation) на сервере OpenVPN.
  3. Добавление статических маршрутов:

    • Добавьте статические маршруты, чтобы трафик, предназначенный для VPN сети, всегда шел через VPN. Это можно сделать в конфигурации клиента OpenVPN, добавив соответствующую запись, например:
      route 10.8.0.0 255.255.255.0 vpn_gateway
    • Если надо, укажите маршруты для перенаправления трафика в интернет.

Шаг 2: Настройка клиентской конфигурации

  1. Изменение конфигурации клиента:

    • Проверьте параметры маршрутизации в файле конфигурации клиента OpenVPN. Добавьте/измените директивы redirect-gateway и route так, чтобы трафик, предназначенный для вашей конкретной VPN-сети, шел через туннель, а локальный остался доступным:
      redirect-gateway def1 bypass-dhcp
  2. Использование split-tunneling (раздельное туннелирование):

    • Если ваш сервер OpenVPN поддерживает раздельное туннелирование, настройте клиент так, чтобы только определенные трафики шли через VPN.

Заключение

Ваше решение зависит от настройки как сервера, так и клиента. Убедитесь, что маршруты правильно прописаны и сервер установлен с правильным NAT и IP-пересылкой. Этот подход позволит вам поддерживать доступ к вашему GitLab сервису и другим ресурсам, даже будучи на той же локальной сети, что и сервер, не сталкиваясь с потерей интернет-соединения. В некоторых случаях может потребоваться дополнительная настройка или возможна конфигурация вашего локального роутера.

Оцените материал
Добавить комментарий

Капча загружается...