доступ к публичному IP сервера OpenVPN через устройство tun0

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

Мой OpenVPN работает хорошо, только с одной проблемой…

  • Я запускаю OpenVPN на роутере Synology (система SRM) с публичным IP и именем хоста.
  • У меня OpenVPN на 172.22.0.0/24. Я разрешил 172.22.0.0/24 доступ к роутеру в брандмауэре роутера через порт, который я хочу использовать. Я также разрешил ICMP для 172.22.0.0/24 для целей отладки.
  • Я разрешил UDP/1194 для OpenVPN в Интернете в брандмауэре.
  • Других правил брандмауэра нет.
  • Я использую ‘redirect-gateway def1’ в конфигурации клиента OpenVPN.
  • Я использую Gnome/NetworkManager (проблема все еще присутствует при использовании команды openvpn или openvpn3)

Я не могу получить доступ к публичному IP/имену хоста через устройство tun0 с любого из моих ПК на Arch Linux. Тем не менее, подключившись к OpenVPN на Android-устройствах через мобильную сеть – я могу получить доступ к публичному IP, используя оба своих Android-устройства. Проблем здесь нет. – С учетом этого, я думаю, что серверная сторона настроена правильно, и я хотел бы попросить помощи в настройке ПК на Linux.

Моя таблица маршрутов на одном из ПК выглядит следующим образом:

default via 172.22.0.5 dev tun0 proto static metric 50 
default via <client gw> dev enp5s0 proto dhcp src <client ip> metric 100 
<openvpn public IP> via <client gw> dev enp5s0 proto static metric 50 
<client ip>/25 dev enp5s0 proto kernel scope link src <client ip> metric 100 
<client gw> dev enp5s0 proto static scope link metric 50 
172.22.0.0/24 via 172.22.0.5 dev tun0 proto static metric 50 
172.22.0.1 via 172.22.0.5 dev tun0 proto static metric 50 
172.22.0.5 dev tun0 proto kernel scope link src 172.22.0.6 metric 50 
192.168.1.0/24 via 172.22.0.5 dev tun0 proto static metric 50 

Я понимаю, что правило:
<openvpn public IP> via <client gw> dev enp5s0 proto static metric 50 неверно, но даже если я установлю:

ip route add <openvpn public IP> via 172.22.0.5 dev tun0 proto static metric 40

Это не работает. Я пытался отключить авто-маршрутизацию и настроить маршруты вручную, но безуспешно.

Мне нужно это использование, потому что хочется закрыть vaultwarden за OpenVPN. Это также работает на моем Android-телефоне, так что это должно быть возможно. Мог бы кто-нибудь помочь, пожалуйста?

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

Как получить доступ к публичному IP OpenVPN-сервера через устройство tun0

Введение

Настройка OpenVPN может быть непростой задачей, особенно когда дело касается маршрутизации и доступа к ресурсам внутри сети. В вашем случае, несмотря на успешное подключение с Android-устройств, Arch Linux PCs не имеют доступа к публичному IP OpenVPN-сервера через туннельное устройство tun0. Давайте разберёмся в том, как это исправить.

Анализ проблемы

  1. Настройка VPN: Вы используете OpenVPN на маршрутизаторе Synology, IP-адресация настроена на 172.22.0.0/24.
  2. Маршрутизация: Вы добавили маршруты, но openvpn public IP все равно указывает на локальный шлюз (client gw) вместо tun0.
  3. Тестирование работы: Android устройство успешно подключается и получает доступ к публичному IP, что указывает на правильную конфигурацию сервера.

Решения

1. Проверка конфигурации OpenVPN-клиента

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

2. Обновление таблицы маршрутов

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

ip route add <openvpn public IP> via 172.22.0.1 dev tun0

Здесь <openvpn public IP> замените на фактический публичный IP-адрес вашего сервера OpenVPN.

Также убедитесь, что маска подсети корректна и маршрут не конфликтует с другими настройками. Убедитесь, что вы используете правильный шлюз – в большинстве случаев это адрес вашей VPN-сети (в вашем случае, вероятно, 172.22.0.1).

3. Проверьте настройки брандмауэра

Проверьте, нет ли блокировок в брандмауэре вашего Arch Linux. Вы можете временно отключить брандмауэр для устранения проблем:

sudo systemctl stop firewalld

Если проблема решится, надо будет добавить правильные правила в брандмауэр, включив доступ к необходимым портам.

4. Использование NetworkManager

Если вы используете Gnome/NetworkManager, убедитесь, что маршруты, устанавливаемые через OpenVPN, не переопределяются. Если используется GUI NetworkManager, проверьте настройки маршрутов в разделе VPN.

Команда для диагностики

Используйте команду ping для проверки доступности публичного IP и команду traceroute для исследования пути пакетов:

ping <openvpn public IP>
traceroute <openvpn public IP>

Это поможет выяснить, на каком этапе происходит сбой.

Заключение

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

SEO-оптимизация

В этом ответе были использованы ключевые слова и фразы, такие как "OpenVPN", "tun0", "маршрутизация", "Arch Linux" и "брандмауэр", что помогает улучшить его видимость в поисковых системах для людей, сталкивающихся с аналогичными проблемами.

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

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