SoftEther VPN server — быстрая настройка

В свете периодических блокировок в РБ и РФ, блокирующих как “недозволенные речи неугодных” так и работу специалистов разных мастей, организации и просто технари перебирают возможности различных VPN решений. SoftEther VPN в моем списке выглядит как бесплатное “чудо-решение”, которое позволяет иметь под рукой внушительный лист протоколов VPN из коробки: L2TP, IPSec, OpenVPN, SSTP, SoftEther VPN.

Цель туториала — упростить его установку, сделав доступным любому специалисту способному подключиться по ssh к серверу и вбить пару команд.

Если вас интересуют все возможности решения — на хабре уже есть обзоры SoftEther VPN: раз два три.

Теоретически

Я не системный администратор и не специалист по безопасности. Могу быть не прав.

Наиболее интересными протоколами для нас выглядят протоколы работающие поверх 443 порта т.к. похожи на https трафик: «SSTP», «SoftEther VPN». Ставим нашей целью настроить оба, остальные протоколы бонусом.

Хотя по опыту, они не спасут в случае применения тяжелой артиллерии.

Нам понадобятся

  1. SoftEther VPN Server manager for Windows
  2. Ubuntu 20.04 server
  3. Docker 19+ на борту
sudo apt-get update
sudo apt-get install docker-ce docker
  1. SoftEther VPN Client под необходимую вам систему. [Опционально, если планируете использовать «SoftEther VPN» протокол]

Приступим

  1. Создадим папку для наших настроек
mkdir /home/softethervpn && cd /home/softethervpn 
  1. Создайте и откройте docker-compose.yamlфайл используя vi или nano
  2. nano docker-compose.yaml
  3. ВНИМАНИЕ: Замените следующие ключи своими значениями
  4. <PSK> — pre-shared key. Используется для IpSec
  5. <username>
  6. <password>
  7. <spassword> — Server management password (супер админ — будьте с ним аккуратны)
  8. <hpassword> — hub management password
  9. В секции USERS вы можете определить предустановленных юзеров: username:password;user2:pass2;
version: '3'
services:
  softethervpn:
    container_name: 'softethervpn'
    image: siomiz/softethervpn
    cap_add: 
      - NET_ADMIN
    environment:
      - PSK=<PSK>
      - "USERS=<username>:<password>"
      - SPW=<spassword>
      - HPW=<hpassword>
    #volumes:
      #- ./vpn_server.config:/opt/vpn_server.config
    ports:
      # L2TP/IPSec
      - "500:500/udp"
      - "4500:4500/udp"
      - "1701:1701/tcp"
      # OpenVPN/SSTP
      - "443:443/tcp"
      - "1194:1194/udp"
      # SoftEther VPN (recommended by vendor)
      - "5555:5555/tcp"
      - "992:992/tcp"
  1. Стартуем из папки с docker-compose.yaml
docker-compose up -d  
  1. Во время первого запуска контейнера была создана конфигурация. Давайте скопируем ее из контейнера в нашу папку.
docker cp softethervpn:/usr/vpnserver/vpn_server.config ./
  1. Теперь нам необходимо раскомментировать строки 13, 14 в файле docker-compose.yaml
  2. Итоговый файл должен выглядеть так
version: '3'
services:
  softethervpn:
    container_name: 'softethervpn'
    image: siomiz/softethervpn
    cap_add: 
      - NET_ADMIN
    environment:
      - PSK=<PSK>
      - "USERS=<username>:<password>"
      - SPW=<spassword>
      - HPW=<hpassword>
    volumes:
      - ./vpn_server.config:/opt/vpn_server.config
    ports:
      # L2TP/IPSec
      - "500:500/udp"
      - "4500:4500/udp"
      - "1701:1701/tcp"
      # OpenVPN/SSTP
      - "443:443/tcp"
      - "1194:1194/udp"
      # SoftEther VPN (recommended by vendor)
      - "5555:5555/tcp"
      - "992:992/tcp"
  1. Теперь вы не будете терять ваш конфиг после каждого перезапуска контейнера. Для обновления конфигурации контейнера вызываем.
docker-compose up -d
  1. Запускаем SoftEther VPN Server manager for Windows с локальной машины и подключаемся к созданному серверу:
  1. Если вам удалось подключиться — вам уже доступны протоколы L2TP, IPSec, SoftEther VPN. (при условии, что у вас установлены соответствующие клиенты)
  2. Пора настроить OpenVPN
  3. Активируем протокол в настройках
  1. Кнопка «Generate a Sample Configuration File for OpenVPN Clients» отдаст вам файл который вы можете скормить типовому OpenVPN клиенту.
  2. Пришло время настроить SSTP
  3. Первое, что нужно сделать — сгенерировать self-signed сертификат для сервера:
  1. Экспортируем сертификат в формате .cer
  1. Этот сертификат необходимо импортировать в Trusted Root Certificate Authorities вашей системы. Для этого
  2. Открываем утилиту «Manage Computer Certificates»
  3. Импортируем сертификат в «Trusted Root Certificate Authorities»
  1. Важно: Store location должен быть установлен в Local:
  1. После импорта, в ветке Certificates вы увидите сертификат с IP адресом вашего сервера.
  2. Попробуем установить подключение, для этого идем в настройки VPN:
  1. Добавляем новое VPN соединение
  1. Готово! Если все настройки были выполнены верно, соединение должно было успешно установиться.

Дополнительно

  1. По адресу https://<your_ip_address> доступна страница приветствия SoftEther VPN. Чтобы лишний раз не афишировать факт, что это VPN сервер, давайте ее отключим.
  2. Откроем на редактирование файл vpn_server.config
 nano vpn_server.config
  1. Заменим флаг
  2. bool DisableJsonRpcWebApi false на bool DisableJsonRpcWebApi true
  3. Перезапустим контейнер:
 docker restart softethervpn
  1. Имеет смысл скрыть все неиспользуемые нами порты. В моем случае все кроме 443. Для этого комментируем в файлеdocker-compose.yaml строки с лишними портами
    ports:
      # L2TP/IPSec
      #- "500:500/udp"
      #- "4500:4500/udp"
      #- "1701:1701/tcp"
      # OpenVPN/SSTP
      - "443:443/tcp"
      #- "1194:1194/udp"
      # SoftEther VPN (recommended by vendor)
      #- "5555:5555/tcp"
      #- "992:992/tcp" 

Готово

Теперь у нас под рукой есть многопользовательский VPN Server с набором протоколов которые можно перебирать в надежде достучаться до рабочего варианта в случае известных форс-мажоров. Всем спасибо!

Оставьте комментарий

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