Pritunl — VPN-сервер для лентяев

Здравствуйте, уважаемые читатели. Сегодня статья на тему: "Pritunl - VPN-сервер для лентяев". Как поднять свой vpn-сервер с графической панелью управления за несколько минут? В решении подобной задачи, может помочь продукт под названием Pritunl.
Pritunl – это ПО, предоставляющее графический веб-интерфейс, для управления OpenVPN сервером.
Официальный сайт проекта: https://pritunl.com/
- На официальном сайте проекта, можно подробно ознакомиться с документацией продукта. Есть информация на все возникающие вопросы.

- Помимо разработки основного продукта, разработчики создали клиентские приложения для некоторых платформ. Но это не так существенно, так как любое клиентское OpenVPN-приложение, без всяких проблем поддерживает конфигурацию Pritunl.

- Как произвести установку Pritunl в своей операционной системе (если конечно Ваша ОС поддерживается), можно узнать, зайдя в нужный раздел документации на официальном сайте.
- Я буду производить установку в ОС CentOS 7.
Установка Pritunl на CentOS 7
- Для начала нужно подключить три репозитория: mongodb-org, pritunl, и epel-release.
# tee /etc/yum.repos.d/mongodb-org-4.0.repo << EOF [mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc EOF # tee /etc/yum.repos.d/pritunl.repo << EOF [pritunl] name=Pritunl Repository baseurl=https://repo.pritunl.com/stable/yum/centos/7/ gpgcheck=1 enabled=1 EOF # rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- Далее нужно создать, и экспортировать ключ.
# gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
# gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
- После произведённых выше действий, производим установку самого pritunl, и сервера баз данных mongodb.
# yum -y install pritunl mongodb-org
- По завершении установки, запускаем оба сервера, и добавляем их в автозагрузку.
# systemctl start mongod pritunl
# systemctl enable mongod pritunl
- Для корректной работы pritunl, нужно произвести настройку брандмауэра.
- По умолчанию pritunl работает на 443 порту, а так же прослушивает 80 порт, и делает редирект на 443. Поэтому для доступа к панели управления, нужно открыть эти порты.
- Для iptables:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
- Для firewalld:
# firewall-cmd --zone=public --permanent --add-port=80/tcp # firewall-cmd --zone=public --permanent --add-port=443/tcp
- После входа в панель управления, желательно изменить порт доступа к панели. Поэтому сразу откроем какой-нибудь из свободных портов, чтобы после изменения порта, была возможность доступа по новому порту.
- Кроме того, сразу откроем какой-нибудь из свободных портов, для работы VPN-сервера.
- Для iptables:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT
-A INPUT -p udp -m udp --dport 12345 -j ACCEPT
- Для firewalld:
# firewall-cmd --zone=public --permanent --add-port=11111/tcp # firewall-cmd --zone=public --permanent --add-port=12345/udp
--- Порт tcp 11111 -- для входа в панель, а порт udp 12345 -- для работы VPN-сервера.
- Перезапускаем iptables или firewalld.
# systemctl restart iptables # systemctl reload firewalld
Вход в панель управления
- Теперь можно открыть браузер, и ввести ip-адрес сервера. В браузере появится предупреждение, так и должно быть, мы используем самоподписной сертификат. Сошлашаемся с предупреждением.
- Открывается окно настройки базы данных. Прямо в окне указана команда, при помощи которой можно узнать требуемый ключ установки.

- Вводим команду в консоль, и получаем необходимый ключ.

- Копируем ключ, вставляем его в форму, и жмём на «Save». Производится настройка сервера баз данных.
- Открывается окно для авторизации, в котором так же присутствует команда, для того, чтобы узнать нужные данные.

- Вводим команду в консоль, и получаем требуемые данные.

- Вводим полученные данные в форму авторизации, и попадаем в панель управления сервером.
- Появляется окно с глобальными настройками сервера, в котором можно отредактировать логин и пароль для доступа, ip-адреса сервера, изменить порт на котором будет работать панель (в моём случае это порт 11111), а также можно указать домен, для автоматического получения сертификата Let's Encrypt.

- После изменения порта, нужно выполнить одну команду в консоли. Эта команда отключит прослушивание и редирект у pritunl.
# pritunl set app.redirect_server false
- Так же нужно закрыть в брандмауэре порты 80 и 443. Просто удаляем два из добавленных правил, касающихся этих портов.
Настройка VPN-сервера
- Первое с чего нужно начать конфигурацию, это создание организации. Можете назвать на своё усмотрение.

- После создания организации, появляется возможность создания сервера.
- При вызове функции создания сервера, открывается окно, в котором можно указать имя сервера, порт на котором он будет работать (в моём случае порт 12345), DNS-сервер, и виртуальную подсеть.
- Кроме того, можно кликнуть по расширенным настройкам, и внести нужные Вам изменения.

- Следующим шагом, нужно произвести присоединение к организации.

- Теперь появилась возможность запуска созданного сервера.
- Запускаем VPN-сервер.

Добавление пользователей
- Пришло время добавления пользователей.
- Есть возможность добавления пользователей по одному или массово.

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

- Кроме прямого скачивания конфигурационного файла для пользователя, так же есть возможность создания временной ссылки, по которой пользователь сам может произвести скачивание конфигурационного файла.

Вот и все премудрости. Вы получили рабочий VPN-сервер. Как видите ничего сложного.
Установка pritunl в docker-контейнер
- Помимо установки на прямую в операционную систему, можно произвести установку pritunl в изолированный docker-контейнер.
- Плюсы подобной установки в том, что при каких-то проблемах, не будет затронута сама ОС, и после удаления не останется никаких следов.
- Для начала нужно установить docker. Это можно произвести при помощи curl или wget.
# curl -fsSL https://get.docker.com/ | sh
или
# wget -O - https://get.docker.com | bash
- Запускаем докер, и добавляем его в автозагрузку.
# systemctl enable docker
# systemctl start docker
- Далее даём команду на установку pritunl.
# docker run \ --name=pritunl \ --detach \ --privileged \ --network=host \ --restart=always \ jippi/pritunl
- После завершения установки, нужно настроить брандмауэр.
Настройка брандмауэра, аналогична настройке, при прямой установке pritunl в ОС.
- После настройки iptables, можно открывать браузер и вводить ip-адрес сервера. В случае с docker, всё уже настроено, и перед Вами сразу открывается форма авторизации. Логин и пароль по умолчанию pritunl.
- После входа в панель, Вы увидите, что функционал ничем не отличается от функционала прямой установки в операционной системе.
Чтобы отключить прослушивание и редирект, нужно выполнить несколько команд.
-- Вход в контейнер.
# docker exec -it pritunl bash
-- Отключение ненужного функционала.
# pritunl set app.redirect_server false
-- Выход из контейнера.
# Ctrl+D
- После внесённых изменений, нужно перезапустить контейнер.
# docker stop pritunl
# docker start pritunl
В случае ненадобности, можно от всего избавиться в пару кликов.
-- Удаляем docker.
# yum remove docker-ce
-- И удаляем всё, что с ним связано.
# rm -rf /var/lib/docker
Сегодня мы рассмотрели тему: "Pritunl - VPN-сервер для лентяев". Испробовали два способа установки Pritunl в CentOS 7. Смотрите также видео по теме.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Pritunl - VPN-сервер для лентяев":

WMZ-кошелёк = Z667041230317
«Linux»
Данила
хорошее статья, спасибо!
Андрей Бондаренко
Пожалуйста.
Олег
Спасибо. Я первый раз с Линкус работаю и всё получилось.
Андрей Бондаренко
Пожалуйста. Удачных начинаний!
Дмитрий
Привет! Немного дополню вашу замечательную статью- «не все провайдеры vps серверов дают копаться в iptables» сыплет ошибки, тут спасает только firewall-cmd —zone=public —add-port=443/tcp открытие 443 порта и т.д
Потратил 2 дня пока сам не допер)
Андрей Бондаренко
Здравствуйте!
Нужно было не тратить два дня, а сразу задать вопрос тут в комментариях.
Дело не в провайдере, а в используемой утилите настройки системного Firewall.
Для CentOS 7, есть две утилиты firewalld и iptables, используется либо одна, либо другая. По умолчанию в CentOS 7 установлена firewalld.
Общий принцип настройки системного Firewall не зависит от выбора утилиты. Отличается формат требуемых команд.
Я использую iptables, поэтому в статьях указываю правила для iptables. Не думал, что этот нюанс, может быть настолько проблематичным для кого-то.
Добавил в статью команды для firewalld.
Алексей
Знаю и iptables и firewalld …. но нравиться больше вторая.
Жаль в статье не описана настройка 2FA прикрученной из коробки ( это одна из фишек данного сервера) . В некоторых моментах я бы сказал что он очень прост ( если не лезть к нему под капот и не добавлять что тебе надо, там бывают сложности), но один из неоспоримых плюсов это двухфакторка из коробки ( пока что аналогов не находил).
Rust
Здравствуйте!
Это:
# firewall-cmd —zone=public —permanent —add-port=11111/tcp
# firewall-cmd —zone=public —permanent —add-port=12345/udp
вводится с командной строки или редактируется файл?
Андрей Бондаренко
Здравствуйте.
Это команды на открытие портов в Firewall, если у Вы используете firewalld, и они выполняются через консоль.