Go to file
2024-06-11 17:52:36 +03:00
.github Added sponsoring 2021-08-23 13:16:55 +02:00
mounts/nginx Адаптация проекта под собственные нужды 2024-06-11 17:52:36 +03:00
.gitattributes Newer Pritunl version 2021-10-13 14:32:32 +02:00
docker-compose.yml Адаптация проекта под собственные нужды 2024-06-11 17:52:36 +03:00
README.md Адаптация проекта под собственные нужды 2024-06-11 17:52:36 +03:00
setup.py Адаптация проекта под собственные нужды 2024-06-11 17:52:36 +03:00

Назначение

Адаптация проекта https://github.com/simonmicro/Pritunl-Fake-API для развертывания API сервера Pritunl на том же сервере, где запущен VPN сервер Pritunl.

Протестировано на

  • Ubuntu Server 22.04 LTS
  • pritunl/now 1.32.3552.76-0ubuntu1~jammy

при использовании клиента OpenVPN. Использование официального клиента Pritunl не тестировалось.

Как это работает

  1. В Docker запускается вебсервер с FakeAPI сервера лицензирования Pritunl
  2. В конфигурационных файлах Pritunl подменяется адрес API сервера лиценизирования Pritunl на pritunl-fakeapi.local
  3. В /etc/hosts вносится запись 127.0.0.1 pritunl-fakeapi.local
  4. Используются самоподписанные сертификаты для обеспечения TLS между Pritunl и FakeAPI сервером лицензирования

Требования

  1. Ubuntu Server 22.04 LTS
  2. Установленный Docker Compose
  3. Установленный Pritunl с бесплатной лицензией
  4. Порт веб интерфейса Pritunl сменен со стандартного 443 на любой свободный, кроме 80 и 443

Установка

  1. (Рекомендуется) зафиксировать версию Pritunl
sudo apt-mark hold pritunl*
  1. Клонировать репозиторий /opt/pritunl-fakeapi
sudo mkdir /opt/pritunl-fakeapi -p && \
sudo chown ${USER}:${USER} /opt/pritunl-fakeapi && \
git clone https://github.com/nd4y/Pritunl-Fake-API.git /opt/pritunl-fakeapi && \
cd /opt/pritunl-fakeapi
  1. (Рекомендуется) сгенерировать сертификаты удостоверяющего центра и сервера. (команды для выпуска сертификатов протестированы на OpenSSL 1.1.1w)

    1. Перейти в каталог cd /opt/pritunl-fakeapi/mounts/nginx/certs и удалить имеющиеся сертификаты rm -f *.pem
    2. Выпустить сертификат удостоверяющго центра
    openssl req -x509 -newkey rsa:4096 -keyout ca.key.pem -out ca.crt.pem -sha256 -days 3650 -nodes -subj "/CN=Self-Signed Root Certification Authority" 
    
    1. Выпустить запрос на сертификат сервера
    openssl req -newkey rsa:4096 -nodes -days 3650 -keyout tls.key.pem -out tls.req.pem -subj "/CN=Self-Signed Server Certificate" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:pritunl-fakeapi.local"))
    
    1. Подписать запрос на сертификат сервера сертификатом удоствоверяющего центра
    openssl x509 -req -in tls.req.pem -CA ca.crt.pem -CAkey ca.key.pem -out tls.crt.pem -days 3650 -extensions SAN -extfile  <(cat /etc/ssl/openssl.cnf <(printf "[SAN]\nsubjectAltName=DNS:pritunl-fakeapi.local"))
    
    1. Удалить файл приватного ключа удостоверяющего центра и файл запроса сертификата сервера
    rm -f ca.key.pem tls.req.pem
    
  2. Запустить контейнеры

cd /opt/pritunl && docker compose up -d
  1. Установить сертификат удостоверяющего центра в доверенные для Pritunl
cat ca.crt.pem >> /usr/lib/pritunl/usr/lib/python3.9/site-packages/certifi/cacert.pem
  1. Отключить использование VPN сервером Pritunl порта 80/TCP
sudo pritunl set app.redirect_server false
  1. Добавить запись в /etc/hosts
echo "127.0.0.1 pritunl-fakeapi.local" | sudo tee -a /etc/hosts
  1. Запустить скрипт setup.py
chmod +x /opt/pritunl-fakeapi/setup.py && sudo /opt/pritunl-fakeapi/setup.py

В скрипте выбрать [I]nstall и в качестве "new API endpoint" указать pritunl-fakeapi.local

  1. Перезапустить Pritunl
sudo systemctl restart pritunl
  1. В веб интерфейсе Pritunl активировать подписку, введя ключ активации active ultimate