Как стать автором
Обновить

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

Время на прочтение4 мин
Количество просмотров77K

В свете периодических блокировок в РБ и РФ, блокирующих как “недозволенные речи неугодных” так и работу специалистов разных мастей, организации и просто технари перебирают возможности различных 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
  4. SoftEther VPN Client под необходимую вам систему. [Опционально, если планируете использовать "SoftEther VPN" протокол]

Приступим

UPD: Шаги 1-6, можно срезать.

Под FreeBSD SoftEther доступен для установки через пакетный менеджер.

su
pkg update
pkg upgrade
pkg install softether

sysrc softether_server_enable=yes

Листаем к пункту 7. Спасибо @i7071270

  1. Создадим папку для наших настроек

    mkdir /home/softethervpn && cd /home/softethervpn 
  2. Создайте и откройте docker-compose.yamlфайл используя vi или nano

    nano docker-compose.yaml

    ВНИМАНИЕ: Замените следующие ключи своими значениями

    1. <PSK> - pre-shared key. Используется для IpSec

    2. <username>

    3. <password>

    4. <spassword> - Server management password (супер админ - будьте с ним аккуратны)

    5. <hpassword> - hub management password

    6. В секции 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"
  3. Стартуем из папки с docker-compose.yaml

    docker-compose up -d  
  4. Во время первого запуска контейнера была создана конфигурация. Давайте скопируем ее из контейнера в нашу папку.

    docker cp softethervpn:/usr/vpnserver/vpn_server.config ./
  5. Теперь нам необходимо раскомментировать строки 13, 14 в файле docker-compose.yaml

    Итоговый файл должен выглядеть так

    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"
  6. Теперь вы не будете терять ваш конфиг после каждого перезапуска контейнера. Для обновления конфигурации контейнера вызываем.

    docker-compose up -d
  7. Запускаем SoftEther VPN Server manager for Windows с локальной машины и подключаемся к созданному серверу:

    Если вам удалось подключиться - вам уже доступны протоколы L2TP, IPSec, SoftEther VPN. (при условии, что у вас установлены соответствующие клиенты)

  8. Пора настроить OpenVPN

    1. Активируем протокол в настройках

    2. Кнопка "Generate a Sample Configuration File for OpenVPN Clients" отдаст вам файл который вы можете скормить типовому OpenVPN клиенту.

  9. Пришло время настроить SSTP

    1. Первое, что нужно сделать - сгенерировать self-signed сертификат для сервера:

    2. Экспортируем сертификат в формате .cer

    3. Этот сертификат необходимо импортировать в Trusted Root Certificate Authorities вашей системы. Для этого

      1. Открываем утилиту "Manage Computer Certificates"

      2. Импортируем сертификат в "Trusted Root Certificate Authorities"

        Важно: Store location должен быть установлен в Local:

        После импорта, в ветке Certificates вы увидите сертификат с IP адресом вашего сервера.

      3. Попробуем установить подключение, для этого идем в настройки VPN:

      4. Добавляем новое VPN соединение

      5. Готово! Если все настройки были выполнены верно, соединение должно было успешно установиться.

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

  1. По адресу https://<your_ip_address> доступна страница приветствия SoftEther VPN. Чтобы лишний раз не афишировать факт, что это VPN сервер, давайте ее отключим.

    1. Откроем на редактирование файл vpn_server.config

       nano vpn_server.config
    2. Заменим флаг
      bool DisableJsonRpcWebApi false на bool DisableJsonRpcWebApi true

    3. Перезапустим контейнер:

       docker restart softethervpn
  2. Имеет смысл скрыть все неиспользуемые нами порты. В моем случае все кроме 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 с набором протоколов которые можно перебирать в надежде достучаться до рабочего варианта в случае известных форс-мажоров. Всем спасибо!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Как вы считаете, имеет ли это смысл
36.05% Да, должно помочь от примитивных блокировок31
2.33% Нет, бесполезная трата времени2
23.26% VPN не для обхода блокировок придумали20
12.79% Могло бы помочь, но этог конфиг не полный11
25.58% Не знаю, но хочется верить22
Проголосовали 86 пользователей. Воздержались 35 пользователей.
Теги:
Хабы:
Всего голосов 4: ↑2 и ↓20
Комментарии8

Публикации

Истории

Работа

Ближайшие события