Вопрос или проблема
Я уже несколько лет являюсь пользователем Linux, хотя с сетевыми аспектами я пока не очень знаком. Это первый раз, когда я собираюсь использовать OpenVPN, и я уже несколько дней пытаюсь заставить его работать. Мне нужно подключить мои домашние и рабочие ПК (всего два компьютера, каждый в разном месте и с разной сетью) для использования ssh таким образом, чтобы я мог получить доступ к любому из них. Затем я мог бы синхронизировать свои файлы, используя команды: sync, unison и т.д.
Оба компьютера используют Debian 12. В случае, если эта информация может быть релевантной, на одном компьютере установлен стандартный ядро Debian: 6.1.0-30-amd64, архитектура: x86_64. На другом компьютере используется более новое ядро для достижения совместимости с Wi-Fi: Kernel: 6.10.11+bpo-amd64, архитектура: x86_64. Я хотел бы настроить их как сервер и клиент для доступа к ним из любого места.
Маршрутизатор дома и на работе предоставляет разные типы подсетей: 192.168.home.255 и 192.168.work.255 (home и work — это разные значения).
Я установил стандартный OpenVPN в Debian 12:
OpenVPN 2.6.3 x86_64-pc-linux-gnu
версии библиотек: OpenSSL 3.0.15 3 Sep 2024, LZO 2.10
Изначально разработан Джеймсом Йонаном
Copyright (C) 2002-2023 OpenVPN Inc [email protected]
Сначала я следовал инструкции на странице вики Debian: https://wiki.debian.org/OpenVPN:
На этой странице сначала объясняется, как установить и запустить OpenVPN в незащищенном режиме только для тестирования. Но мой тест не удался. Затем следует настройка OpenVPN, которую я также выполнил, но все равно, кажется, не работает. Потом я изучал более сложные руководства в интернете, настраивал сертификаты и т.д., но безуспешно. Думаю, мне стоит сосредоточиться на первом шаге на странице вики Debian и выяснить, почему не работает общий тест.
Вот шаги, которые я выполнил на странице вики Debian:
sudo apt-get install openvpn
sudo apt-get install network-manager-openvpn-gnome
На брандмауэре сервера откройте UDP 1194 (порту по умолчанию).
Я сделал это с помощью firewalld (рекомендуемая программа для использования nftables в Debian).
sudo apt install firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --add-port=1194/udp
Также проверил, что служба openvpn активна и включена:
sudo systemctl start openvpn.service
sudo systemctl enable openvpn.service
И я включил OpenVPN в брандмауэр:
sudo firewall-cmd --add-service openvpn.service
Вот вывод моей конфигурации firewalld с командой:
> sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: wlp7s0
sources:
services: dhcpv6-client openvpn ssh
ports: 1194/udp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Поскольку я хочу использовать оба компьютера в качестве серверов, я выполнил все эти шаги на обоих компьютерах.
На одном из компьютеров (назовем его сервером) я запускаю экземпляр openvpn:
sudo openvpn --remote CLIENT_IP --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
Если я правильно понял, я должен заменить CLIENT_IP на публичный IP другого компьютера (назовем его клиентом). Я выбрал получение IP с помощью команды:
curl https://api.ipify.org
и копировал/вставлял IP, заменив часть CLIENT_IP в команде выше.
Итак, вот окончательная команда и вывод:
> sudo openvpn --remote xxx.xxx.xxx.xxx. --dev tun1 --ifconfig 10.9.8.1 10.9.8.2.
2025-01-23 19:42:08 DEPRECATION: No tls-client or tls-server option in configuration detected. OpenVPN 2.7 will remove the functionality to run a VPN without TLS. See the examples section in the manual page for examples of a similar quick setup with peer-fingerprint.
2025-01-23 19:42:08 OpenVPN 2.6.3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO]
2025-01-23 19:42:08 library versions: OpenSSL 3.0.15 3 Sep 2024, LZO 2.10
2025-01-23 19:42:08 DCO version: N/A
2025-01-23 19:42:08 ******* WARNING *******: '--cipher none' was specified. This means NO encryption will be performed and tunnelled data WILL be transmitted in clear text over the network! PLEASE DO RECONSIDER THIS SETTING!
2025-01-23 19:42:08 ******* WARNING *******: '--auth none' was specified. This means no authentication will be performed on received packets, meaning you CANNOT trust that the data received by the remote side have NOT been manipulated. PLEASE DO RECONSIDER THIS SETTING!
2025-01-23 19:42:08 ******* WARNING *******: All encryption and authentication features disabled -- All data will be tunnelled as clear text and will not be protected against man-in-the-middle changes. PLEASE DO RECONSIDER THIS CONFIGURATION!
2025-01-23 19:42:08 TUN/TAP device tun1 opened
2025-01-23 19:42:08 net_iface_mtu_set: mtu 1500 for tun1
2025-01-23 19:42:08 net_iface_up: set tun1 up
2025-01-23 19:42:08 net_addr_ptp_v4_add: 10.9.8.1 peer 10.9.8.2 dev tun1
2025-01-23 19:42:08 TCP/UDP: Preserving recently used remote address: [AF_INET]xxx.xxx.xxx.xxx:1194
2025-01-23 19:42:08 UDPv4 link local (bound): [AF_INET][undef]:1194
2025-01-23 19:42:08 UDPv4 link remote: [AF_INET]xxx.xxx.xxx.xxx:1194
Итак, я получил эту “хорошую” строку, говорящее: TUN/TAP device tun1 openedв>
Пока OpenVPN запущен, я запускаю из другого терминала команду “ip a” и получаю следующий вывод:
tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.9.8.1 peer 10.9.8.2/32 scope global tun1
valid_lft forever preferred_lft forever
Я продолжаю следовать странице вики Debian, перехожу к клиенту и запускаю:
> sudo openvpn --remote SERVER_IP --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
тоже заменяя SERVER_IP на публичный IP “серверного” компьютера.
Я получаю очень похожий вывод, просто поменяв местами 10.9.8.1 и 10.9.8.2.
Я также должен иметь возможность пинговать сервер, но это не работает:
> ping 10.9.8.1
PING 10.9.8.1 (10.9.8.1) 56(84) bytes of data.
--- 10.9.8.1 ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 10312ms
Так что, пожалуйста, сможет ли кто-нибудь помочь мне понять, как и где я могу начать искать проблему в моей настройке OpenVPN или на моих компьютерах? Какие команды я мог бы запустить для отладки? Может быть, это что-то с моим маршрутизатором? В этом случае, как я могу настроить мой маршрутизатор для разрешения соединений OpenVPN?
Ответ или решение
Для решения проблемы с OpenVPN на Debian 12, когда сервер не отвечает на ping, важно глубоко проанализировать текущую конфигурацию и процесс настройки. Проблема может возникать из-за множества причин, включая неправильную настройку, проблемы с сетевой маршрутизацией, брандмауэром или маршрутизатором. Ниже приведен детальный разбор возможных причин проблемы и предложены пути её решения.
Теоретическая часть (Т)
Проблемы с подключением OpenVPN могут возникать из-за ряда факторов. Важно понимать, что успешное развертывание VPN соединения включает несколько ключевых элементов:
-
Конфигурация OpenVPN: Оба конечных узла должны быть правильно настроены. Это включает в себя корретную замену IP-адресов серверов и клиентов в конфигурационных файлах, а также корректную настройку аутентификации и шифрования.
-
Настройка сетьевого интерфейса TUN/TAP: Интерфейсы TUN и TAP — это виртуальные сетевые интерфейсы, которые OpenVPN использует для маршрутизации трафика. На обоих устройствах должен быть правильно сконфигурирован интерфейс TUN/TAP для возможности обмена пакетами.
-
Брандмауэр и маршрутизация: Необходимо убедиться, что правила брандмауэра и маршрутизации позволяют трафику проходить через сеть. Это означает открытие соответствующих портов и прокладку маршрутов между разными сетями, если это необходимо.
-
Маршрутизатор и NAT: Параметры NAT и Port Forwarding должны быть правильно настроены на маршрутизаторе, чтобы обеспечить корректную туннелизацию трафика.
Применение к данной ситуации (П)
Давайте применим теорию к вашей ситуации и выделим потенциальные проблемы и их решения.
-
Конфигурация OpenVPN: Проблема может заключаться в параметрах конфигурации, использованных в вашем тесте:
- Вы используете необезопасенное соединение — это значительный риск. Убедитесь, что вы следуете рекомендациям безопасности для использования TLS и соответствующего шифрования и аутентификации.
-
Проверка TUN/TAP настроек: Для работы VPN через интерфейс TUN могут потребоваться изменения:
- Проверьте, что интерфейсы tun действительно созданы и находятся в состоянии UP на обоих компьютерах.
-
Брандмауэр на обеих системах: Проверьте, что правила брандмауэра разрешают входящий и исходящий трафик через интерфейс tun:
- Проверьте, что порт 1194 (или любой другой порт, который вы используете) открыт и разрешен для UDP трафика.
-
Настройка маршрутизатора: Важно также проверить настройки вашего роутера:
- Убедитесь, что Forwarding открытого на маршрутизаторе порта (например, порт 1194) ведет на нужный локальный IP-адрес сервера.
Практическая реализация (А)
-
Удостовериться в правильной конфигурации OpenVPN:
- Перейдите к использованию конфигурационных файлов (*.ovpn) для упрощения настройки и обеспечения согласованности между клиентом и сервером.
- Создайте и используйте модули безопасности TLS для шифрования сеанса VPN.
-
Настройка брандмауэра:
- Убедитесь, что firewalld на обоих компьютерах не блокирует трансляцию трафика между туннельными интерфейсами.
- Проверьте конфигурацию с помощью
sudo iptables -L -v -n
и добавьте необходимые правила.
-
Проверка и настройка NAT/маскарадинга:
- Если сеть домашнего роутера использует NAT, убедитесь, что пакетам разрешено пересекать NAT-границу.
- Настройте маршрутизатор так, чтобы он корректно переадресовывал пакеты VPN с внешним соединением на сервер.
-
Использование команд для диагностики:
- Проверьте сетевую трассировку с помощью
traceroute
на проблемный IP-адрес. - Используйте команду
tcpdump
для анализа трафика на интерфейсе VPN, чтобы убедиться, что пакеты поступают и передаются должным образом.
- Проверьте сетевую трассировку с помощью
-
Отладка VPN со стороны клиента:
- Выполните ping из клиента в сеть сервера (и наоборот) и убедитесь в наличии ICMP ответа.
- Используйте OpenVPN логи для выявления потенциальных проблем.
Если после выполнения вышеуказанных действий проблема сохраняется, возможно, стоит поискать более специфичные ошибки в логах OpenVPN, либо обратиться к более специализированной литературе или консультантам по настройке VPN.