Перейти к основному содержанию

Настройка OpenVPN поверх Stunnel на VPS с Ubuntu 22.04

Введение

Руководство пошагово описывает OpenVPN поверх Stunnel на Ubuntu 22.04. Инкапсуляция трафика OpenVPN в SSL-туннель Stunnel добавляет защиту и потенциально помогает обходить сетевые ограничения или межсетевые экраны, блокирующие либо замедляющие VPN.

Предварительные требования

  • VPS: EDIS Global VPS с Ubuntu 22.04 и доступом root или sudo.
  • Клиентский компьютер: Ubuntu или другой дистрибутив Linux, совместимый с OpenVPN и Stunnel; доступ root или sudo.

Обзор

Основные этапы:
  1. На VPS: установка и настройка Stunnel, затем OpenVPN.
  2. На клиенте: установка и настройка Stunnel, затем подключение OpenVPN через него.

Действия на VPS

  1. Обновите системные пакеты

Убедитесь, что пакеты актуальны:
Пояснение: команда обновляет список пакетов и устанавливает последние версии, включая исправления безопасности и новые возможности.

  1. Установите Stunnel

Stunnel создаст SSL-туннель для трафика OpenVPN:
Пояснение: пакет Stunnel позволяет шифровать произвольные TCP-соединения внутри SSL.

  1. Создайте SSL-сертификат для Stunnel

Перейдите в каталог настроек Stunnel и создайте самоподписанный сертификат:
Пояснение:
  • openssl req -new -x509 -days 365 -nodes создаёт сертификат X.509 на 365 дней без парольной фразы (-nodes).
  • -out stunnel.pem -keyout stunnel.pem сохраняет сертификат и закрытый ключ в stunnel.pem.
Примечание: программа запросит страну, регион и другие данные. Их можно заполнить или оставить пустыми.

  1. Создайте журнал Stunnel

Создайте файл для записи журнала:
Пояснение: команды создают каталог журналов, пустой файл и назначают подходящего владельца.

  1. Настройте Stunnel

Откройте файл конфигурации:
Добавьте настройки:
Пояснение:
  • output — путь к журналу.
  • [openvpn] — служба с именем openvpn.
  • client = no — серверный режим Stunnel.
  • accept = 443 — прослушивание порта 443, обычно используемого HTTPS и часто разрешённого межсетевыми экранами.
  • connect = 127.0.0.1:1194 — пересылка входящих соединений локальному OpenVPN.
  • cert — файл SSL-сертификата.

  1. Включите и запустите службу Stunnel

Включите автозапуск и запустите службу:
Пояснение: enable включает запуск при загрузке, restart запускает или перезапускает службу, status проверяет её работу.

  1. Установите OpenVPN

Скачайте и запустите установочный скрипт:
Пояснение: скрипт автоматизирует установку и настройку OpenVPN. Он запросит параметры — выберите подходящие для своих задач.

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

Настройте прослушивание всех интерфейсов:
Найдите и измените директиву local:
Пояснение: local 0.0.0.0 включает прослушивание всех сетевых интерфейсов.

  1. Перезапустите OpenVPN

Примените изменения:
Пояснение: команды перезапускают OpenVPN и проверяют его состояние.

Действия на клиентском компьютере

  1. Установите Stunnel

Установите Stunnel на клиенте:

  1. Настройте Stunnel

Перейдите в каталог настроек и создайте конфигурационный файл:
Добавьте:
Пояснение:
  • client = yes — клиентский режим.
  • accept = 127.0.0.1:1194 — локальное прослушивание порта 1194.
  • connect = VPS_IP_ADDRESS:443 — соединение со Stunnel на VPS.
Примечание: замените VPS_IP_ADDRESS фактическим IP VPS.

  1. Включите и запустите службу Stunnel

Включите автозапуск и запустите службу:

  1. Скопируйте клиентскую конфигурацию OpenVPN

Безопасно перенесите файл конфигурации с VPS на клиент:
Пояснение: client.ovpn копируется в домашний каталог. Примечание: замените VPS_IP_ADDRESS IP-адресом VPS.

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

Переименуйте и откройте файл:
Внесите изменения:
  • Направьте директиву remote на локальный конец Stunnel.
  • Добавьте или измените следующие директивы.
  • При необходимости укажите файл журнала.
Пояснение:
  • remote 127.0.0.1 1194 подключает OpenVPN к локальному Stunnel.
  • route-nopull запрещает автоматическое изменение маршрутов.
  • script-security 2 разрешает выполнение скриптов.
  • route-up запускает скрипт после установления соединения.

  1. Создайте скрипт маршрутизации

Создайте скрипт для изменения маршрутов после подключения:
Добавьте содержимое:
Пояснение:
  • SERVER_IP — IP VPS.
  • GATEWAY определяет шлюз по умолчанию, чтобы трафик к самому VPS шёл вне VPN-туннеля.
  • Команды ip route add меняют таблицу маршрутизации.
Примечание: замените VPS_IP_ADDRESS IP-адресом VPS. Разрешите выполнение скрипта:

  1. Запустите клиент OpenVPN

Запустите клиентскую службу:
Пояснение: команды включают автозапуск и запускают клиент с изменённой конфигурацией.

Проверка

  1. Проверьте IP-адрес

До и после запуска VPN проверьте публичный IP, чтобы убедиться, что трафик идёт через VPN:

  1. Проверьте службы

Убедитесь, что Stunnel и OpenVPN работают:

  1. Проверьте соединение

Убедитесь, что интернет-ресурсы доступны, а трафик проходит через VPN:

Устранение неполадок

  • Соединение Stunnel отклонено: разрешите входящий порт 443 в межсетевом экране VPS и проверьте службу командой sudo systemctl status stunnel4.
  • Ошибка аутентификации OpenVPN: проверьте соответствие сертификатов клиента и сервера и журналы OpenVPN на обеих сторонах.
  • Проблемы маршрутизации: проверьте IP сервера в routing.sh, право выполнения скрипта и правильность пути в конфигурации OpenVPN.
  • Служба не запускается: изучите journalctl -xe или журнал службы, проверьте опечатки и синтаксис конфигурационных файлов.

Заключение

OpenVPN поверх Stunnel на Ubuntu 22.04 настроен. Эта конфигурация добавляет слой шифрования и может помочь обойти сетевые ограничения, помещая VPN-трафик внутрь стандартных протоколов SSL/TLS.

Источники


Примечание: убедитесь, что использование VPN и шифрования соответствует местным законам и правилам.
Последнее изменение 7 ноября 2026 г.