Pritunl – собственный VPN сервис

Pritunl – Корпоративно ориентированный OpenVPN, IPsec и WireGuard VPN сервер. Звучит жутко, но вполне подходит для частного использования в личных целях. По сути, это GUI, позволяющий легко развернуть VPN сервер любому желающему. Если автоматическое развёртывание OpenVPN не удовлетворяет ваших требований, а ручная настройка утомляет, или просто хочется чего-то более профессионального, то этот материал для вас. Ближайший по характеристикам продукт – 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-виртуализация, что означает, что оплачиваемые ресурсы полностью ваши, а не делятся между клиентами. Оплата почасовая, но счёт выставляется раз в месяц, первого числа. Если же у вас уже есть сервер, то следующий абзац можно пропустить. После регистрации и активации аккаунта, вы попадёте в контрольную панель вашей учётной записи. Виртуальные сервера (VPS) в DigitalOcean называют “Droplets” (капли). В соответствующем раздела нажмите “Create” для создания нового дроплета. Выберите конфигурацию (ОС и её версию, локацию, тарифный план и прочее). Вся документация для Pritunl ориентирована на Red Hat, клоном которой до недавнего времени являлась CentOS. Лично для меня это проблема и в данном материале я использую Debian 10. Но также приведу команды из официальной документации, которые применимы к CentOS. Локации доступны в Северной Америке, Европе и в Юго-Восточной Азии. Выберите наиболее предпочтительную. Так же я рекомендую включить поддержку IPv6 и мониторинг. Дополнительной оплаты это не требует, но связано с некоторым геморроем, если добавлять эти опции после создания VPS. Так же будет добавлен локальный сетевой интерфейс, что раньше было опцией. Это означает, что если у вас более одного сервера в одном дата центре, то связь между ними может осуществляться по локальной сети. Все остальные опции на ваше усмотрение. После установки всех параметров своего VPS нажмите “Create Droplet” для применения. Создание VPS займёт около минуты, после чего вы получите письмо с подтверждением. В разделе “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-модуль установлен именно для текущего ядра.Для CentOS и производных используйте следующее: sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
sudo yum -y install kernel-devel kernel-uek-devel wireguard-dkms wireguard-tools
sudo dkms autoinstall
sudo dkms status
sudo rebootОбратите внимание, что для подключения клиентских устройств, на них так же должна быть поддержка 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
Для CentOS: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

sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.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
sudo yum install -y mongodb-org pritunl
sudo systemctl start mongod
sudo systemctl start pritunl
sudo systemctl enable mongod
sudo systemctl enable pritunlПосле того, как всё установлено и работает, откройте браузер и введите IP-адрес или доменное имя вашего сервера. Вам потребуется ключ установки. Для его генерации введите следующую команду в терминале: sudo pritunl setup-key Скопируйте результат и введите его в соответствующее поле запроса. Сохраните. На следующем экране вам будет нужен пароль по умолчанию, который генерируется следующей командой: sudo pritunl default-passwordДалее потребуется создать пользователя и указать другие необходимые данные. В соответствующе поля введи имя первого пользователя и придумайте для него пароль. Укажите адреса (IPv4 и IPv6) вашего сервера и порт web-интерфейса. “Lets Encrypt Domain” – доменное имя вашего сервера для сертификата Lets Encrypt. Сертификат будет выписан автоматически. Используется только для https-доступа к web-интерфейсу. Если у вас нет домена и к web-интерфейсу вы обращаетесь по ip-адресу, то оставьте поле пустым. ПО Lets Encrypt должно быть установлено на сервер отдельно. Вы всегда сможете вернуться в это меню по вкладке “Settings”.После этого вы попадёте в контрольную панель вашего сервера. Панель работающего сервера вы видели в демо. Здесь всё будет несколько победнее. Для начала нам потребуется создать “организацию”. Каждый пользователь должен входить в одну из них. Это те же “группы”, но разработчики решили, что корпоративщикам так будет понятнее. Нажмите “Add Organization”. После создания группы добавьте в неё созданного ранее пользователя. Теперь нужно создать “сервер”. Нажмите “Add Server” и заполните соответствующие поля. Поставьте соответствующие галки, если используется IPv6 и WireGuard. Укажите номера портов для OpenVPN и WireGuard. Укажите маски локальных сетей для OpenVPN и WireGuard. Например “10.20.1.0/24” позволит подключить 253 устройства по определённому протоколу. Этим самым вы создаёте эти виртуальные сети. Они не должны совпадать с уже существующими сетями как на стороне сервера, так и на стороне клиента. Существует три, выделенные под локальные нужды подсети, и “десятка” редко используется по умолчанию в домашних маршрутизаторах, но часто используется провайдерами. “Advanced” вкладку в большинстве случаев можно не трогать, за исключением параметра “Allow Multiple Devices”, включение которого разрешит одновременное подключение нескольких устройств одного пользователя. Если вы не хотите под каждое устройство создавать нового пользователя, то включите этот параметр. 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-модуль был установлен для текущего ядра ОС. Нажмите “Import Profile” и добавьте сертификат из скаченного tar-архива. Выберите протокол (например OpenVPN), введите “пин” (пароль, указанный при создании профиля) и нажмите “ОК”. Соединение должно быть установлено. Настройки самого же клиента минимальны. Реконнект при разрывах связи, автостарт при запуске системы и т. д. Пароль при каждом старте вводить не нужно. Но если вы отключили соединение вручную, то клиент запросит пароль. Стоит также обратить внимание на то, что если вы используете двухфакторную авторизацию от Google, то код придётся вводить каждый раз, что настоящий геморрой. Даже при разрывах связи. Поэтому я не рекомендую эту опцию, если на той нет веских причин. На этом всё. Теперь вы знаете, как поднять свой собственный VPN-сервис.

Go to Source
Author: Tatyana