В свете периодических блокировок в РБ и РФ, блокирующих как “недозволенные речи неугодных” так и работу специалистов разных мастей, организации и просто технари перебирают возможности различных 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 docker
SoftEther VPN Client под необходимую вам систему. [Опционально, если планируете использовать "SoftEther VPN" протокол]
Приступим
Создадим папку для наших настроек
mkdir /home/softethervpn && cd /home/softethervpn
Создайте и откройте
docker-compose.yaml
файл используяvi
илиnano
nano 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.yaml
docker-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.config
nano 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 Автор
Отчасти согласен. И понимаю что опытному админу такие туториалы не нужны. Ставил целью сократить настройку до минимума, чтобы настроил даже человек, который не понимает что делает и как это работает. Или просто потрогать: не понравится - снесу контейнер.