
Ближайший по характеристикам продукт - OpenVPN Access Server от OpenVPN Inc, но в отличии от Access Server, Pritunl в бесплатной версии поддерживает работу не только с OpenVPN, может работать с IPv6 “из коробки” и не имеет ограничений на количество аккаунтов и одновременно подключенных устройств. Так же это Open Source.
С тарифами на платную версию можно ознакомиться в нижней части главной страницы проекта. Там же расписаны различия в версиях. Для частного же использования вполне достаточно бесплатной версии Pritunl. Так же доступно демо сервера. Это корпоративная версия, но по ней можно составить впечатление о работе любой версии продукта. Например, в бесплатной версии вы не можете объединять сервера в кластеры и использовать перенаправление портов.
И так приступим к установке. Как и в остальных подобных материалах, я рекомендую DigitalOcean в качестве хостинг-провайдера за их соотношение цены и качества. Низкие цены, отличное качество. Ссылка реферальная, но ни к чему вас не обязывает. Однако, регистрация по ней окажет поддержку данному сайту. Так же вы получите $100 на месяц, что позволит вам экспериментальным путём подобрать себе нужную конфигурацию VPS. Для “домашнего” VPN на 5-10 устройств вполне достаточно минимальной конфигурации с 1 GB оперативной памяти и 1 TB трафика в месяц, что обойдётся вам в $5 (+ НДС вашего региона). На серверах DigitalOcean используется KVM-виртуализация, что означает, что оплачиваемые ресурсы полностью ваши, а не делятся между клиентами. Оплата почасовая, но счёт выставляется раз в месяц, первого числа. Если же у вас уже есть сервер, то следующий абзац можно пропустить.

В разделе “Droplets” теперь отображается созданный VPS. Здесь можно посмотреть все данные и характеристики. Используйте ssh-ключ, или Root пароль для доступа к серверу через консоль. Я использую пароль, так как закрываю 22-й порт файрволом. Вы можете использовать стандартный файрвол на стороне ОС, или воспользоваться внешним, в разделе “Networking”. Опция так же не требует дополнительных расходов. Я рекомендую внешний, так как он элементарно прост и позволит вам восстановить доступ к серверу в случае ошибок с настройками Iptables. Кроме всего прочего, в панели управления доступна внутренняя консоль для каждого дроплета, которая работает в отдельном окне браузера. Она локальна, что так же позволит получить доступ к серверу, если что-то пошло не так.
Обратите внимание, что для удобства лучше подключить к нашему серверу домен. Подойдёт любой домен любого уровня. Если у вас нет домена, его можно купить. Так же можно зарегистрировать домен бесплатно в определённых зонах (в основном национальные зоны некоторых африканских стран). Не забудьте настроить DNS для вашего домена.
И так, после того как мы разобрались с сервером, приступим к установке нужного ПО. Имеется в виду, что ОС у нас настроена и находится в актуальном состоянии. Как уже было сказано выше, я использую Debian 10, но дублирую все действия командами для CentOS 8.
Если вы так же хотите использовать WireGuard, то нужные пакеты нужно установить отдельно. Можно пропустить, если хотите использовать только OnenVPN.
sudo apt install wireguard
Убедитесь, что пакеты wireguard-dkms и wireguard-tools так же установились. Должны установиться автоматически как зависимости.
sudo dkms status
uname -r
Первая команда покажет, всё ли установлено. Обратите внимание, что ядро на VPS как правило имеет в своём имени что-то типа "cloud-amd64". Для этого вторая команда. Убедитесь, что dkms-модуль установлен именно для текущего ядра. Начиная с версии 5.6 ядра Linux dkms-модуль не нужен, так как поддержка Wireguard там "из коробки".
Для Red Hat восьмой линейки используйте следующее:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
sudo dnf copr enable jdoss/wireguard
sudo dnf install wireguard-dkms wireguard-tools
Обратите внимание, что для подключения клиентских устройств, на них так же должна быть поддержка WireGuard. В случае с Linux, нужно установить соответствующие пакеты для вашего дистрибутива. Ядро так же должно иметь соответствующую поддержку, что для стандартных ядер всех крупных дистрибутивов не должно быть проблемой. То есть нужно выполнить вышеприведённые действия на клиентской машине тоже.
Убедитесь, что на стороне сервера фаервол настроен и работает. Для корректной работы Pritunl нужны открытые tcp-порты 80 и 443 для web-интерфейса, а также любой незанятый udp-порт для OpenVPN. Откройте также любой udp-порт для WireGuard, если собираетесь его использовать.
Добавляем нужные репозитории, устанавливаем сам Pritunl и всё необходимое. Обратите внимание, что данные Pritunl хранятся в MongoDB.
sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list << EOF
deb http://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main
EOF
sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb https://repo.pritunl.com/stable/apt buster main
EOF
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A
sudo apt update
sudo apt install pritunl mongodb-org-server
sudo systemctl start mongodb-org-server
sudo systemctl start pritunl
sudo systemctl enable mongodb-org-server
sudo systemctl enable pritunl
Для Red Hat.
sudo tee /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/8/
gpgcheck=1
enabled=1
EOF
sudo tee /etc/yum.repos.d/mongodb.repo << EOF
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp
sudo dnf install -y mongodb-org pritunl
sudo systemctl start mongod
sudo systemctl start pritunl
sudo systemctl enable mongod
sudo systemctl enable pritunl

sudo pritunl setup-key
Скопируйте результат и введите его в соответствующее поле запроса. Сохраните. На следующем экране вам будет нужен пароль по умолчанию, который генерируется следующей командой:
sudo pritunl default-password

После этого вы попадёте в контрольную панель вашего сервера. Панель работающего сервера вы видели в демо. Здесь всё будет несколько победнее. Для начала нам потребуется создать “организацию”. Каждый пользователь должен входить в одну из них. Это те же “группы”, но разработчики решили, что корпоративщикам так будет понятнее. Нажмите “Add Organization”. После создания группы добавьте в неё созданного ранее пользователя.

DNS-сервер. По умолчанию здесь прописаны адреса Google. Если у вас паранойя по поводу Google (хотя они не скрывают, что используют эти данные для показа релевантной рекламы), то рассмотрите другие варианты. Из бесплатных могу порекомендовать публичные DNS CloudFlare. Первый блок пропускает весь трафик; второй блокирует известные сайты со всяким вредоносным кодом; третий делает тоже самое, что и второй, но также блокирует контент для взрослых. CloudFlare клянутся, что не используют логи в коммерческих целях и не хранят их более суток. И их DNS в большинстве случаев быстрее DNS от Google. В первую очередь из-за того, что CloudFlare - лидер на рынке систем распределения контента, и в случае с DNS используется множество серверов по всему миру.
После создания “сервера” нажмите “Attach Organization” для подключения к нему ранее созданной группы (организации).
На этом сервер настроен и готов к использованию. Нажмите кнопку “Start Server”. Если всё настроено верно, то в окне логов появятся соответствующие строки. Опять же, как выглядит рабочий сервер можно посмотреть в демо. Если в логах вы видите ошибки, то что-то настроено неверно. Самое распространённое, что может прийти на ум в такой ситуации - неверно настроены локальные сети. Так же отсутствие вообще каких-либо логов может говорить о том, что WireGuard не запущен, если он используется в конфигурации. То же касается и OpenVPN. Убедитесь, что процессы обоих запущены и работают без ошибок на стороне операционной системы сервера. Команда “ip a” покажет все поднятые сетевые интерфейсы. Убедитесь, что “tun” (OpenVPN) и “wg” (WireGuard) подняты.
Если всё работает, то можно подключаться. Из профиля пользователя скачайте архив с сертификатом (для каждого пользователя). Это tar-архив с OpenVPN сертификатом. На соответствующей странице проекта скачайте клиент для Mac или Windows. Для Linux дистрибутивов подключите соответствующий вашему дистрибутиву репозиторий и установите клиент. Для мобильных устройств официального клиента нет, но для OpenVPN вполне достаточно официального клиента “OpenVPN Connect” от OpenVPN Inc. Он существует как для iOS, так и для Android. Просто скормите ему сертификат и введите логин и пароль клиента вашего сервера.
Если вы используете WireGuard на десктопе и соответствующая вкладка не отображается, то это значит, что клиент не видит запущенного WireGuard на вашем ПК. Убедитесь, что при установке WireGuard dkms-модуль был установлен для текущего ядра ОС.

На этом всё. Теперь вы знаете, как поднять свой собственный VPN-сервис.
___
Tatyana K.
Tatyana K.