Установка Pritunl

Анализируя доступные решения организации VPN для SOHO я наткнулся на интересное решение – Pritunl. По сути это OpenVPN сервер с GUI и идеально подходит для небольших компаний (человек так до 50-100). Есть несколько редакций, но я напишу о том, как выполняется установка Pritunl Free. Информация с сайта о сравнении редакций:

Из того, что я отметил – это отсутствие интеграции с LDAP в бесплатной версии. Если вам нужна интеграция с LDAP или настройка MFA, то смотрите в сторону обычного сервера OpenVPN.

Почему Pritunl?

Для себя я отметил следующие положительные моменты в этом продукте:

  1. Редакция Free ожидаемо бесплатная и у неё нет ограничения по количеству пользователей или устройств.
  2. Простота установки.
  3. Очень просто настраивается.
  4. Совместим с OpenVPN GUI или OpenVPN Connect.
  5. Возможность добавления маршрутов.
  6. Веб-интерфейс для управления и мониторинга.

Но есть и ряд моментов, которые стоит учитывать:

  1. В редакции Free нет интеграции с LDAP.
  2. В редакции Free нет интеграции с MFA.

Все достоинства и недостатки, как по мне, делают его очень хорошим решением для SOHO сценариев.

Установка Pritunl

Процесс установки Pritunel довольно хорошо документирован.

В качестве операционной системы я буду использовать Ubuntu Server 22.04.

Команды для установки сервера:

sudo tee /etc/apt/sources.list.d/pritunl.list << EOF
deb http://repo.pritunl.com/stable/apt jammy main
EOF

# Import signing key from keyserver
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A
# Alternative import from download if keyserver offline
curl https://raw.githubusercontent.com/pritunl/pgp/master/pritunl_repo_pub.asc | sudo apt-key add -

sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list << EOF
deb https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse
EOF

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

sudo apt update
sudo apt --assume-yes upgrade

# WireGuard server support
sudo apt -y install wireguard wireguard-tools

sudo ufw disable

sudo apt -y install pritunl mongodb-org
sudo systemctl enable mongod pritunl
sudo systemctl start mongod pritunl

Проверим статус сервисов:

sudo systemctl status mongod pritunl
root@tst01:/home/roman# sudo systemctl status mongod pritunl
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-04-12 22:48:31 +07; 22s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 2685333 (mongod)
     Memory: 67.8M
        CPU: 1.037s
     CGroup: /system.slice/mongod.service
             └─2685333 /usr/bin/mongod --config /etc/mongod.conf

Apr 12 22:48:31 tst01 systemd[1]: Started MongoDB Database Server.
Apr 12 22:48:31 tst01 mongod[2685333]: {"t":{"$date":"2024-04-12T15:48:31.411Z"},"s":"I",  "c":"CONTROL",  "id":7484500, "ctx":"-","msg":"Environment variable MONGODB_>

● pritunl.service - Pritunl Daemon
     Loaded: loaded (/etc/systemd/system/pritunl.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2024-04-12 22:48:31 +07; 22s ago
   Main PID: 2685334 (pritunl)
      Tasks: 21 (limit: 9389)
     Memory: 87.8M
        CPU: 1.829s
     CGroup: /system.slice/pritunl.service
             ├─2685334 /usr/lib/pritunl/usr/bin/python3 /usr/lib/pritunl/usr/bin/pritunl start
             └─2685384 pritunl-web

Apr 12 22:48:31 tst01 systemd[1]: Started Pritunl Daemon.

Сервисы успешно запущены.

Если кто-то будет устанавливать Pritunl на ВМ Proxmox, то установите тип процессора “Host”. Иначе MongoDB не запуститься.

Установка Pritunl завершена.

Настройка Pritunl

Теперь приступим к первоначальной настройке.

1. Открываем браузер и переходим по IP-адресу сервера. В моем случае:

https://192.168.56.40

2. В консоле сервера выполняем команду:

sudo pritunl setup-key
root@tst01:/home/roman# sudo pritunl setup-key
c81e9ff8df844841ae48bd3472100863

3. Копируем ключ установки и вставляем его в окне браузера. Адрес сервера Mongo оставляем без изменений.

4. Дожидаемся окончания процесса инициализации настроек.

5. В консоле сервера выполняем команду для получения учетных данных для первого логина:

sudo pritunl default-password
root@tst01:/home/roman# sudo pritunl default-password
[local][2024-04-12 22:58:36,743][INFO] Getting default administrator password
Administrator default password:
  username: "pritunl"
  password: "W4qnCD58Av9s"

6. Указываем учетные данные в окне браузера.

7. В появившемся окне настроек указываем новый пароль и нажимаем кнопку “Save”.

8. Добавим организацию:

9. Следующим шагом добавим сервер:

10. Определите параметры сервера – имя, порт, DNS-сервер и используемую подсеть.

11. Теперь привяжем сервер к организации:

12. Запускаем сервер.

13. Теперь мы можем добавить пользователя:

14. Скачиваем профиль для OpenVPN клиента пользователя.

15. Передаем профиль пользователю и импортируем его в конфигурацию клиента OpenVPN.

П. 13 и 14 нужно будет выполнить для каждого нового пользователя.

Вместо п. 15 можно предоставить пользователю временные ссылки на загрузку профиля:

Первоначальная настройка сервера Prinunl завершена.

Настройка клиента Pritunl

Есть несколько вариантов настройки клиентов.

1. Использовать OpenVPN GUI или OpenVPN Connect.

Достаточно просто импортировать профиль. Например, для OpenVPN GUI его можно положить вот в эту директорию (C:\Program Files\OpenVPN\config):

После этого можно выполнить подключение.

2. Для Linux, Windows и MacOS есть отдельный Pritunl клиент. Импорт профиля там тоже осуществляется довольно тривиально. После этого можно выполнить подключение.

На этом я завершаю материал публикации. Надеюсь вы найдете полезное применение весьма этому весьма интересному и заслуживающему внимания решения.

Установка Pritunl: 4 комментария

  1. Добрый день.
    Выполнил всё по инструкции – поставилось успешно, пользуюсь. Через сутки на сервере закончилось место. Кто его мог съесть? Есть ли какое-то логирование которое может потреблять место?

    1. Добрый день! Попробуйте через утилиту ncdu проанализиоровать кто “съел” все место на диске. В моем случае сервер работает уже несколько месяцев и таких проблем я не наблюдал. Если сервер опубликован во внешний мир, то, допускаю, что при активной атаке ботов журналы могли переполнить диск. Тут тогда я бы смотрел в сторону fail2ban и Logrotate.

  2. Еще вопрос по скорости соединения:

    1. проверяю скорость соединения спидтестом непосредственно с сервера где стоит prutunl:

    root@user:~# speedtest-cli
    Hosted by Jonaz B.V. (Amersfoort) [2125.74 km]: 8.302 ms
    Testing download speed……………………………………………………………………..
    Download: 285.26 Mbit/s
    Testing upload speed…………………………………………………………………………………………
    Upload: 240.19 Mbit/s

    2. запускаю openVPN c ПК
    3. проверяю через браузер опять же через http://www.speedtest.net и там выбираю тот же сервер до которого проверялась скорость в п.1
    4. получаю результаты гораздо меньше Download: 50 / Upload: 100

    1. Точно не подскажу, к сожалению. Могу только сказать, что на моем сервере такого не наблюдаю. У меня ВМ на Proxmox.

      Но есть пара мыслей:
      1. Я как-то настраивал pfSense и столкнулся с тем, что исходящий поток режется в 10 раз. Как по итогу оказалось – это был баг одной из версий pfSense для виртуальных адаптеров Hyper-V. Возможно у вас что-то подобное.
      2. Если сервер VPS, то вам мог попасться жадный хостер, которые как-то режет скорость канала. Или делит её между клиентами.
      3. Либо вы просто упираетесь в канал вашего провайдера.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *