Вы беспокоитесь о том, как свободно получить доступ к Интернету без множества ограничений и угрозы безопасности данных? Больше не беспокойтесь! Начните хостить свой VPN-сервер с использованием OpenVPN в Docker.
С помощью технологий Docker и OpenVPN вы можете быстро настроить и запустить свой VPN-сервер. В этом руководстве вы узнаете основы запуска сервера OpenVPN, размещенного в контейнере Docker.
Следите за обновлениями и обеспечивайте безопасность своего VPN-сервера с OpenVPN Docker!
Необходимые условия
Это руководство будет практическим демонстрационным материалом. Если вы следуете за нами, вам понадобятся следующие компоненты:
- A Linux-based operating system (OS) – This tutorial uses Ubuntu v22.04, but other Linux distributions will work.
- Установленный и работающий Docker – в данном руководстве используется Docker версии v20.10.17.
- Устройство Android с установленным приложением OpenVPN Connect – в данном руководстве используется Android v11 и OpenVPN Connect v3.2.7.
Создание контейнера Docker для OpenVPN
Контейнеризация – это упаковка кода и всех его зависимостей в стандартный программный блок для быстрого и надежного запуска вашего приложения. Существует несколько способов создания контейнера OpenVPN Docker. Вы можете либо создать контейнер с нуля, либо загрузить готовый контейнер с Docker Hub.
Однако в этом руководстве вы будете использовать существующий файл образа OpenVPN Docker. Готовые контейнеры предлагают несколько преимуществ, так как они тщательно тестируются на наличие различных уязвимостей при поддержке обширного сообщества разработчиков. Кроме того, эти контейнеры помогают сэкономить время и устранить необходимость изобретать велосипед заново.
Чтобы создать контейнер OpenVPN Docker:
1. Откройте терминал и выполните следующую команду OVPN_DATA, которая не выводит результат, но устанавливает имя тома данных ovpn-data-test в переменную OVPN_DATA.
2. Затем выполните следующую команду docker volume create для создания тома данных с именем, установленным в переменной $OVPN_DATA.
Эта команда не выводит результат, но создает контейнер тома данных для OpenVPN, где хранятся все данные, файлы конфигурации и сертификаты.
3. Наконец, выполните следующую команду docker run, чтобы загрузить и установить образ OpenVPN Docker с помощью следующего:
- Укажите объем хранилища (
-v
) внутри контейнера, отделенного от остальной файловой системы контейнера. В этом случае образ Docker OpenVPN хранится в каталоге/etc/openvpn
.
- Укажите механизм ведения журнала (
--log-driver
), который сохраняет информацию о работающих контейнерах и службах (none
).
- Сообщает Docker автоматически удалять (–rm) контейнер, если он уже существует.
Не забудьте заменить (YourPublicIP.com) на публичный IP-адрес вашего сервера (хоста) или доменное имя (если у вас есть), используя протокол UDP. Однако имейте в виду, что также можно использовать протокол TCP.
TCP – это протокол ориентированный на соединение, в то время как UDP – протокол без установления соединения.

Обратите внимание, что если вы собираетесь использовать самостоятельное размещение или публичный IP, вам необходимо настроить переадресацию портов на вашем маршрутизаторе/модеме.
Защита клиента OpenVPN с использованием сертификатов
Вы успешно установили клиент Docker OpenVPN на свою машину, так что ура! Но прежде чем использовать OpenVPN, вам нужно настроить конфигурацию клиента OpenVPN.
Только потому, что вы работаете с OpenVPN, не означает, что вы должны открывать свой VPN-сервер для мира. Вам понадобятся сертификаты, чтобы защитить свой клиент OpenVPN.
1. Запустите нижеуказанную команду docker run для создания и получения сертификатов CA и клиента. Эта команда создает запущенные контейнеры OpenVPN (–it) изображение, указанное внутри основного контейнера.
В большинстве случаев создание сертификатов сервера CA занимает время, в зависимости от ресурсов машины, которую вы используете.
Введите yes и нажмите Enter, как показано ниже, чтобы инициировать систему OpenVPN PKI.

2. Затем введите и подтвердите новый пароль для сертификата CA и нажмите Enter. Запишите пароль в надежном месте, так как вам понадобится он позже при настройке и создании сертификата клиента.

3. Укажите уникальное имя для вашего сертификата CA и нажмите Enter.

4. Теперь введите фразу-пароль CA, которую вы установили на втором шаге, чтобы проверить, что запрос соответствует подписи.

5. Введите вашу фразу-пароль еще раз, чтобы создать закрытый ключ.

6. Затем выполните нижеуказанную команду, чтобы запустить службу сервера OpenVPN в Docker для настройки клиента OpenVPN, где:
- Опция -p устанавливает порт (1194), который слушает и инициирует соединение между сервером и клиентом.
Вы можете изменить порт 1194, чтобы он соответствовал вашим предпочтениям, если вы не удовлетворены использованием стандартного порта OpenVPN.
- Аргумент –cap-add=NET_ADMIN применяет дополнительные возможности Linux, изменяя сетевые интерфейсы, которые Docker по умолчанию не предоставляет.

7. После установки порта выполните нижеуказанную команду docker run
для выполнения следующего:
- Сгенерируйте клиентский сертификат и загрузите файл конфигурации клиента (.ovpn) из контейнера Docker на сервер хоста. Сгенерированный сертификат не имеет пароля, как указано в аргументе no-pass в команде.
- Установите имя файла сертификата OpenVPN и идентификации клиента на CLIENTAPP. Сертификат хранится в директории пользователя хоста, а не в контейнере Docker.
Введите ваш пароль, как показано ниже, чтобы завершить генерацию сертификата.

8. Затем выполните команду ниже, чтобы сгенерировать и загрузить файл конфигурации OpenVPN (ovpn_getclient) из контейнера на сервер хоста.
9. Перейдите в директорию user/home на вашем сервере хоста (машина с Linux), и передайте файл .ovpn (CLIENTAPP.ovpn) на ваше устройство Android.
10. Наконец, запустите приложение клиента OpenVPN Connect на вашем устройстве Android.
Нажмите на ПРОСМОТР во вкладке ФАЙЛ и выберите файл .ovpn (CLIENTAPP.ovpn), который вы перенесли на ваше устройство Android. Это добавит новый профиль в клиент OpenVPN Connect.

После успешного подключения вы увидите результат ниже.

Доступ к веб-интерфейсу OpenVPN
Беспокоитесь ли вы о количестве команд, которые вам пришлось выполнить, чтобы получить доступ к серверу VPN? Почему бы не попробовать простой веб-интерфейс?
OpenVPN предлагает набор инструментов для установки и настройки через веб-интерфейс, что позволяет быстро развернуть решения для удаленного доступа к VPN. Весь набор инструментов поставляется в одном пакете под названием OpenVPN Access Server.
Для доступа к веб-интерфейсу OpenVPN необходимо установить пакет:
1. Выполните следующую команду docker pull, чтобы скачать и установить последний контейнер Docker OpenVPN (openvpn-as) с Hub Docker для Linux-серверов (linuxserver).

2. После загрузки выполните нижеприведенную команду docker create, чтобы создать новый контейнер Docker с именем openvpn-as со следующим:
-v /home/docker/openvpn-as/config: /config
– Устанавливает директорию для хранения файлов конфигурации.
--restart=always
– Гарантирует, что контейнер всегда будет запускаться при загрузке системы. Если вы не хотите, чтобы контейнер перезапускался, этот аргумент можно опустить.
-e PGID=1001 -e PUID=1001
– Устанавливает идентификатор пользователя для устранения проблем с разрешениями между сервером-хостом и контейнером.
-e TZ=Africa/Nairobi
– Указывает информацию о часовом поясе.
- –net=host –privileged – Определяет, как OpenVPN Access Server работает в контейнере.

3. Затем выполните следующую команду docker start, чтобы получить доступ к веб-интерфейсу OpenVPN через контейнер Docker OpenVPN Access Server, созданный на предыдущем этапе.

4. Наконец, откройте свой любимый веб-браузер и перейдите на веб-интерфейс OpenVPN, используя ваш локальный IP-адрес (например, https://YourIP:943/admin). Замените YourIP на фактический IP-адрес вашего сервера.
Вас встретит страница входа в OpenVPN Access Server, если всё пройдет успешно, как показано ниже.
Введите admin и пароль в соответствующие поля и нажмите Войти, чтобы получить доступ к панели управления OpenVPN Access Server.
Обратите внимание, что имя пользователя и пароль по умолчанию – admin и password соответственно. Вы можете изменить учетные данные по своему усмотрению.

После входа вы увидите панель управления OpenVPN Access Server ниже.

Настройка DNS для быстрого и безопасного подключения
На данном этапе ваш OpenVPN Access Server работает корректно. Однако, для улучшения производительности вашего VPN-сервера необходимо настроить DNS.
Для настройки DNS необходимо получить доступ к веб-интерфейсу сервера OpenVPN и обновить настройки DNS с использованием серверов Google или вашего предпочтительного DNS. Google предлагает самые быстрые DNS-серверы, которые вы будете использовать в своем OpenVPN Access Server.
1. Нажмите VPN Settings (левая панель) на вкладке CONFIGURATION на панели управления вашего OpenVPN Access Server.
Прокрутите вниз до раздела DNS-настройки и включите опцию Использовать определенные DNS-серверы клиентами, как показано ниже.

2. Затем обновите основной (8.8.8.8) и вторичный DNS-сервер (8.8.8.4) с адресами DNS Google, как показано ниже, и нажмите «Сохранить настройки», чтобы сохранить изменения.

3. После сохранения изменений нажмите «Обновить запущенный сервер», чтобы перезапустить сервер и внести изменения в действие.

4. Теперь перейдите к серверу доступа OpenVPN (например, https://ВашIP:943/admin) на вашем компьютере с Linux. Замените ВашIP на IP-адрес вашего сервера. Если конфигурация работает правильно, вы увидите ту же страницу ниже.
Войдите с помощью учетных данных по умолчанию (администратор и пароль) для имени пользователя и пароля.

5. Нажмите на значки любой платформы, чтобы загрузить приложение клиента, и нажмите “Себя” (профиль с блокировкой пользователя), чтобы загрузить файл клиента .ovpn.

6. Наконец, запустите загруженный вами клиент OpenVPN и импортируйте файл .ovpn, как вы делали на последнем этапе “Обеспечение безопасности клиента OpenVPN с помощью сертификатов”, как показано ниже.

Заключение
Хостинг вашего VPN-сервера никогда не должен быть сложной задачей, не говоря уже о защите соединения с сервером. К счастью, OpenVPN Docker уже под рукой, чтобы спасти ситуацию. И в этом руководстве вы узнали, как установить, настроить и настроить OpenVPN с использованием Docker в Ubuntu. Вы также коснулись обеспечения безопасного доступа к OpenVPN в контейнере Docker с помощью OpenVPN CA и клиентских сертификатов.
Помимо доступа к вашему серверу OpenVPN через интерфейс командной строки, теперь у вас есть визуальный способ сделать это через веб-интерфейс OpenVPN Access Server. Вы осознали быстрое развертывание VPN, создав файлы конфигурации клиента для приложений OpenVPN.