OpenVPN — pritunl в docker
Пожалуй, самый быстрый и легкий способ поднять OpenVPN c удобным GUI для управления. Недавно я собрал docker-image и выложил на Docker Hub. Что такое Docker , как его установить и т.д., вы можете найти на официальных страницах, здесь же я коротко изложу, как быстро поднять VPN-сервер у себя на сервере или VDS.
Pritunl — это удобное управление OpenVPN, его можно установить и не используя контейнеры. У нас же, другая задача — быстро и с минимальным вмешательством в родительскую OS.
Подразумевается, что docker вы уже установили.
Первым делом, получаем подготовленный мной имидж:
# docker pull andrey0001/pritunl
Запускать контейнер будем в привилегированном режиме с сетью в режиме --net=host
— это самый простой вариант (есть еще вариант с пробросом портов внутрь контейнера):
# docker run --privileged --name pritunl --restart unless-stopped --net=host -d -t andrey0001/pritunl
--restart unless-stopped
— не работает на старых версиях докера, но это не страшно, это можно пропустить. Эта опция отвечает за то, будет ли контейнер стартовать автоматически при старте/рестарте основной машины.
--net=host
— не создает отдельный сетевой интерфейс, а использует сеть основной машины.
Вы не поверите — но это всё. Да, конечно, надо подождать пока контейнер полностью стартанёт (около 2-х минут).
Есть некоторые ньюансы, которые надо поправить, но и без них, вы уже получили решение:
1. По умолчанию, pritunl использует порт tcp 443, а так же 80, что нам явно не подходит — обычно на VPS эти порты уже используются. А это значит, что при первом старте контейнера, временно остановите сервис, который слушает у вас эти порты (nginx, apache). Далее, зайдите через браузер на вашу машину с логином и паролем pritunl , поменяйте логин/пароль и порт, на котором pritunl слушает:
Но это еще не всё. Надо выключить редирект (pritunl так же слушает на 80-м порту). Для этого подключаемся к контейнеру:
# docker exec -it pritunl bash
и выполняем:
# pritunl set app.redirect_server false
Ctrl-D (exit) — выходим из контейнера.
Теперь, необходимо рестартануть контейнер, на основной машине:
# docker stop pritunl
# docker start pritunl
После этого, если вы останавливали Ваши сервисы, которые слушают на портах 80 и 443, запустите их обратно.
Если Вы не используете порты 80 и 443 на своем сервере (VPS), можете пропустить этот пункт.
2. Через GUI , который мы повесили на порт 9700(как на картинке), подключаемся к своему серверу, добавляем организацию, добавляем сервер (порт/протокол), привязываем организацию к серверу и можем создавать пользователей.
3. По умолчанию, pritunl, в бесплатной версии урезает некоторые настройки, в частности управление сжатием в рамках OpenVPN. Сейчас мы обойдём этот запрет:
Останавливаем сервер через GUI (Stop Server)
подключаемся к контейнеру:
# docker exec -it pritunl bash
подключаемся к mongo:
# mongo pritunl
выполняем:
> db.servers.update({}, {$set: {"lzo_compression" : true}}, { multi: true })
Ctrl-D (exit) — выходим из контейнера.
Стартуем сервер через GUI (Start Server)
Эту процедуру необходимо проделать уже после того как вы создали сервер в GUI.
4. Если у Вас на сервере работает firewall, не забудьте открыть нужные порты. Так же, если в пункте 1 вы опустили свои сервисы на портах 80 и 443, не забудьте из запустить.
Вот и всё. Мы получили OpenVPN сервер, с удобным интерфейсом управления, не затронув основную OS.
Удачи в настройках.
© shadow_alone