- Вопрос или проблема
- Ответ или решение
- Как получить доступ к публичному IP OpenVPN-сервера через устройство tun0
- Введение
- Анализ проблемы
- Решения
- 1. Проверка конфигурации OpenVPN-клиента
- 2. Обновление таблицы маршрутов
- 3. Проверьте настройки брандмауэра
- 4. Использование NetworkManager
- Команда для диагностики
- Заключение
- SEO-оптимизация
Вопрос или проблема
Мой 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
. Давайте разберёмся в том, как это исправить.
Анализ проблемы
- Настройка VPN: Вы используете OpenVPN на маршрутизаторе Synology, IP-адресация настроена на 172.22.0.0/24.
- Маршрутизация: Вы добавили маршруты, но
openvpn public IP
все равно указывает на локальный шлюз (client gw) вместоtun0
. - Тестирование работы: 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" и "брандмауэр", что помогает улучшить его видимость в поисковых системах для людей, сталкивающихся с аналогичными проблемами.