Здравствуйте, уважаемые читатели. Сегодня статья на тему: "Pritunl - VPN-сервер для лентяев". Как поднять свой vpn-сервер с графической панелью управления за несколько минут? В решении подобной задачи, может помочь продукт под названием Pritunl.

Pritunl – это ПО, предоставляющее графический веб-интерфейс, для управления OpenVPN сервером.

Официальный сайт проекта: https://pritunl.com/

  • На официальном сайте проекта, можно подробно ознакомиться с документацией продукта. Есть информация на все возникающие вопросы.
официальный сайт Pritunl
  • Помимо разработки основного продукта, разработчики создали клиентские приложения для некоторых платформ. Но это не так существенно, так как любое клиентское OpenVPN-приложение, без всяких проблем поддерживает конфигурацию Pritunl.
клиентское приложение 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-адрес сервера. В браузере появится предупреждение, так и должно быть, мы используем самоподписной сертификат. Сошлашаемся с предупреждением.
  • Открывается окно настройки базы данных. Прямо в окне указана команда, при помощи которой можно узнать требуемый ключ установки.
настройка базы данный Pritunl
  • Вводим команду в консоль, и получаем необходимый ключ.
команда вывода ключа
  • Копируем ключ, вставляем его в форму, и жмём на «Save». Производится настройка сервера баз данных.
  • Открывается окно для авторизации, в котором так же присутствует команда, для того, чтобы узнать нужные данные.
форма входа в панель Pritunl
  • Вводим команду в консоль, и получаем требуемые данные.
команда вывода логина и пароля Pritunl
  • Вводим полученные данные в форму авторизации, и попадаем в панель управления сервером.
  • Появляется окно с глобальными настройками сервера, в котором можно отредактировать логин и пароль для доступа, ip-адреса сервера, изменить порт на котором будет работать панель (в моём случае это порт 11111), а также можно указать домен, для автоматического получения сертификата Let's Encrypt.
основные настройки панели Pritunl
  • После изменения порта, нужно выполнить одну команду в консоли. Эта команда отключит прослушивание и редирект у pritunl.
 # pritunl set app.redirect_server false 
  • Так же нужно закрыть в брандмауэре порты 80 и 443. Просто удаляем два из добавленных правил, касающихся этих портов.

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

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

Добавление пользователей

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

Вот и все премудрости. Вы получили рабочий 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-сервер для лентяев":