В свете периодических блокировок в РБ и РФ, блокирующих как “недозволенные речи неугодных” так и работу специалистов разных мастей, организации и просто технари перебирают возможности различных VPN решений. SoftEther VPN в моем списке выглядит как бесплатное “чудо-решение”, которое позволяет иметь под рукой внушительный лист протоколов VPN из коробки: L2TP, IPSec, OpenVPN, SSTP, SoftEther VPN.
Цель туториала - упростить его установку, сделав доступным любому специалисту способному подключиться по ssh к серверу и вбить пару команд.
Если вас интересуют все возможности решения - на хабре уже есть обзоры SoftEther VPN: раз два три.
Теоретически
Я не системный администратор и не специалист по безопасности. Могу быть не прав.
Наиболее интересными протоколами для нас выглядят протоколы работающие поверх 443 порта т.к. похожи на https трафик: "SSTP", "SoftEther VPN". Ставим нашей целью настроить оба, остальные протоколы бонусом.
Хотя по опыту, они не спасут в случае применения тяжелой артиллерии.
Нам понадобятся
Ubuntu 20.04 server
Docker 19+ на борту
sudo apt-get update sudo apt-get install docker-ce dockerSoftEther VPN Client под необходимую вам систему. [Опционально, если планируете использовать "SoftEther VPN" протокол]
Приступим
Создадим папку для наших настроек
mkdir /home/softethervpn && cd /home/softethervpnСоздайте и откройте
docker-compose.yamlфайл используяviилиnanonano docker-compose.yamlВНИМАНИЕ: Замените следующие ключи своими значениями
<PSK> - pre-shared key. Используется для IpSec
<username>
<password>
<spassword> - Server management password (супер админ - будьте с ним аккуратны)
<hpassword> - hub management password
В секции 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"
Стартуем из папки с
docker-compose.yamldocker-compose up -dВо время первого запуска контейнера была создана конфигурация. Давайте скопируем ее из контейнера в нашу папку.
docker cp softethervpn:/usr/vpnserver/vpn_server.config ./Теперь нам необходимо раскомментировать строки 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"Теперь вы не будете терять ваш конфиг после каждого перезапуска контейнера. Для обновления конфигурации контейнера вызываем.
docker-compose up -dЗапускаем SoftEther VPN Server manager for Windows с локальной машины и подключаемся к созданному серверу:

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

Кнопка "Generate a Sample Configuration File for OpenVPN Clients" отдаст вам файл который вы можете скормить типовому OpenVPN клиенту.
Пришло время настроить SSTP
Первое, что нужно сделать - сгенерировать self-signed сертификат для сервера:

Экспортируем сертификат в формате
.cer
Этот сертификат необходимо импортировать в Trusted Root Certificate Authorities вашей системы. Для этого
Открываем утилиту "Manage Computer Certificates"
Импортируем сертификат в "Trusted Root Certificate Authorities"

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

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

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

Готово! Если все настройки были выполнены верно, соединение должно было успешно установиться.
Дополнительно
По адресу https://<your_ip_address> доступна страница приветствия SoftEther VPN. Чтобы лишний раз не афишировать факт, что это VPN сервер, давайте ее отключим.
Откроем на редактирование файл
vpn_server.confignano vpn_server.configЗаменим флаг
bool DisableJsonRpcWebApi falseнаbool DisableJsonRpcWebApi trueПерезапустим контейнер:
docker restart softethervpn
Имеет смысл скрыть все неиспользуемые нами порты. В моем случае все кроме 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 с набором протоколов которые можно перебирать в надежде достучаться до рабочего варианта в случае известных форс-мажоров. Всем спасибо!
13werwolf13
уже на этом этапе статья превращается в бесполезную клоунаду с использованием молотка для закручивания шурупов..
devel0per Автор
Отчасти согласен. И понимаю что опытному админу такие туториалы не нужны. Ставил целью сократить настройку до минимума, чтобы настроил даже человек, который не понимает что делает и как это работает. Или просто потрогать: не понравится - снесу контейнер.