Открыть сервисСервис

Настройка OpenVPN

OpenVPN — это свободное программное обеспечение для создания защищённых виртуальных частных сетей (VPN) на основе протокола с открытыми исходными кодами. Программа использует протоколы TLS/SSL и библиотеку OpenSSL для обеспечения шифрования трафика между клиентом и сервером. OpenVPN работает на большинстве операционных систем, включая Windows, Linux, macOS, Android и iOS, и поддерживает различные режимы работы — от удалённого доступа к корпоративной сети до объединения географически распределённых офисов.

Общие принципы работы

Архитектура OpenVPN построена на клиент-серверной модели. Сервер принимает подключения от клиентов, аутентифицирует их и предоставляет доступ к защищаемой сети. Для работы протокола требуется обмен сертификатами X.509 между сторонами, что обеспечивает взаимную проверку подлинности. Трафик между клиентом и сервером передаётся поверх UDP (обычно порт 1194) или TCP.

Перед началом настройки необходимо определить:

  • тип доступа: удалённый доступ (road warrior) или сетевой туннель между двумя локальными сетями;
  • способ аутентификации: сертификаты, пароли (через плагин auth-pam) или их комбинация;
  • адресный план виртуальной сети (обычно используется подсеть 10.8.0.0/24);
  • протокол транспорта: UDP предпочтительнее для производительности, TCP — для обхода ограничений.

Предварительная подготовка

Для развёртывания сервера на Linux требуется установленный пакет openvpn (в дистрибутивах Debian/Ubuntu — apt install openvpn, в RHEL/Fedora — dnf install openvpn) и утилита easy-rsa для генерации ключей и сертификатов. В Windows-среде используется сборка OpenVPN Community с GUI-оболочкой.

Ключевой шаг — создание инфраструктуры PKI (инфраструктуры открытых ключей). С помощью easy-rsa выполняются следующие операции:

  1. Инициализация PKI: ./easyrsa init-pki
  2. Создание корневого (Certificate Authority): ./easyrsa build-ca
  3. Генерация сертификата и ключа сервера: ./easyrsa build-server-full server nopass
  4. Генерация сертификатов клиентов: ./easyrsa build-client-full client1 nopass
  5. Создание параметров диффи-Хеллмана: ./easyrsa gen-dh
  6. Генация ключа tls-auth (опционально, для защиты от DoS): openvpn --genkey secret ta.key

Настройка сервера

Конфигурационный файл сервера размещается в /etc/openvpn/server.conf (или /etc/openvpn/server/server.conf в новых версиях). Базовый пример:

`` port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem tls-auth ta.key 0 server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 cipher AES-256-GCM auth SHA256 user nobody group nogroup persist-key persist-tun status /var/log/openvpn/status.log verb 3 ``

После создания конфигурации сервер запускается командой systemctl enable --now openvpn-server@server. Для маршрутизации трафика необходимо включить форвардинг в ядре: net.ipv4.ip_forward=1 в файле /etc/sysctl.conf. Также требуется настроить правила iptables или nftables для проброса трафика из интерфейса tun0 наружу и обратно, а на файрволе — открыть UDP-порт 1194.

Настройка клиента

Клиентский конфигурационный файл (.ovpn) содержит параметры подключения, сертификаты и ключи клиента. Пример:

`` client dev tun proto udp remote 203.0.113.10 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client1.crt key client1.key tls-auth ta.key 1 cipher AES-256-GCM auth SHA256 verb 3 ``

В Windows-клиенте файл импортируется через значок OpenVPN в трее. В Linux используется команда openvpn --config client.ovpn. В мобильных ОС (Android — OpenVPN Connect, iOS — OpenVPN Connect) конфигурация импортируется через встроенное меню приложения.

Альтернативный вариант: генерация конфигураций скриптами

Для автоматизации настройки широко используется скрипт openvpn-install (автор — Nyr). Он автоматически генерирует PKI, создаёт конфигурацию сервера и выдаёт готовые .ovpn-файлы для клиентов. Скрипт поддерживает выбор протокола, порта, DNS-серверов и создание нескольких клиентов. Аналогичные решения входят в состав панелей управления (например, 3X-UI для управления Xray/V2Ray и OpenVPN).

Основные проблемы при настройке

ПроблемаВероятная причина
Клиент не подключаетсяНеверный IP-адрес сервера, закрытый порт, несовпадение cipher
Подключение есть, трафик не идётНе включён ip_forward, отсутствуют правила NAT
DNS не работаетНе прописан push-параметр DNS
Разрывы соединенияНестабильный UDP, проблемы с MTU (рекомендуется mssfix 1350)

Безопасность

Для повышения безопасности рекомендуется использовать шифры AES-256-GCM, аутентификацию HMAC SHA256, включать tls-auth или tls-crypt, запрещать одновременные подключения с одного сертификата (опция duplicate-cn по умолчанию отключена) и регулярно обновлять ключи. Дополнительный уровень защиты обеспечивает двухфакторная аутентификация через плагины.

Источники:

  • Документация OpenVPN Community (openvpn.net/community-resources)
  • Руководство Easy-RSA (github.com/OpenVPN/easy-rsa)
  • Справочник по системному администрированию Linux (O'Reilly)
  • Мануалы Debian и Red Hat Enterprise Linux по пакету openvpn
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru