Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
linux_faq:softether_ubuntu_16.04 [2020/04/09 13:23] – [Сервер SSTP на базе Ubuntu + SoftEther] admin | linux_faq:softether_ubuntu_16.04 [2020/04/09 13:23] (current) – [SSTP за Haproxy с SNI] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | Мне понадобился **VPN**, работающий поверх **HTTPS**, чтобы его можно было протащить через корпоративный **firewall**. Одним из вариантов реализации такого **VPN** является **SSTP**, однако это разработка **Microsoft** и свободных реализаций до недавнего времени не было. \\ | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | https:// | ||
+ | http:// | ||
+ | https:// | ||
+ | |||
+ | ====== Сервер SSTP на базе Ubuntu + SoftEther ====== | ||
+ | [[http:// | ||
+ | ===== SSTP за Haproxy с SNI ===== | ||
+ | В моем случае, | ||
+ | Эта конфигурация позволяет держать на одном хосте и несколько **HTTPS**-сайтов (каждый со своим сертификатом), | ||
+ | Нужно учитывать, | ||
+ | tcp-request inspect-delay 5s | ||
+ | tcp-request content accept if { req.ssl_hello_type } | ||
+ | use_backend websites if { req_ssl_sni -m found } | ||
+ | default_backend | ||
+ | </ | ||
+ | То есть, выполняется проверка наличия **SNI** и если он есть, то трафик направляется на Web-сервер, | ||
+ | ===== Устанавливаем сервер ===== | ||
+ | Дистрибутив актуален на ноябрь 2017. Новые версии - http:// | ||
+ | sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get install wget nano build-essential -y | ||
+ | wget http:// | ||
+ | tar -xvf ./ | ||
+ | cd vpnserver/ | ||
+ | echo -e " | ||
+ | ==== Запуск в виде сервиса systemd ==== | ||
+ | Создаем файлик **/ | ||
+ | < | ||
+ | Description=SoftEther VPN Server | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=forking | ||
+ | ExecStart=/ | ||
+ | ExecStop=/ | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | Включаем сервис: | ||
+ | sudo systemctl enable vpnserver | ||
+ | Запускаем: | ||
+ | sudo service vpnserver start | ||
+ | |||
+ | ===== Администрирование сервера ===== | ||
+ | Для администрирования сервера в комплект входит утилита **vpncmd**. Она позволяет администрировать как локальный, | ||
+ | sudo ./vpncmd | ||
+ | Во-первых нужно установить административный пароль: | ||
+ | ServerPasswordSet | ||
+ | Полный список доступных команд можно увидеть так: | ||
+ | help | ||
+ | |||
+ | ===== Настройка SSTP ===== | ||
+ | Включаем **SSTP**: | ||
+ | SstpEnable yes | ||
+ | ==== Импорт сертификата сервера ==== | ||
+ | Для работы **SSTP** нужен сертификат. Его может сгенерировать сам **SoftEther**, | ||
+ | Для того, чтобы подсунуть сертификат в **SoftEther** есть команда: | ||
+ | ServerCertSet | ||
+ | при её выполнении нужно указать путь к сертификату и закрытому ключу. В случае с **let' | ||
+ | |||
+ | ==== Создание виртуального Хаба ==== | ||
+ | **SoftEther** использует концепцию виртуальных хабов. Хабы используются для разграничения прав и изоляции траффика. Можно создать новый хаб, но можно использовать дефолтный. | ||
+ | Я буду использовать дефолтный. | ||
+ | Hub DEFAULT | ||
+ | Создать новый хаб и перейти в него можно командами: | ||
+ | HubCreate AUTOSYS | ||
+ | Hub Autosys | ||
+ | Задать административный пароль для хаба можно командой: | ||
+ | SetHubPassword | ||
+ | |||
+ | ==== Создание пользователя ==== | ||
+ | **SoftEther** поддерживает много разных вариантов авторизации, | ||
+ | Создание пользователя: | ||
+ | UserCreate test | ||
+ | Задаем пароль для пользователя: | ||
+ | UserPasswordSet test | ||
+ | ==== Режим маршрутизации траффика ==== | ||
+ | После выбора хаба нужно задать режим маршрутизации VPN-сессий. Режимов два - **Local Bridge** и **SecureNAT**. \\ | ||
+ | [[http:// | ||
+ | [[http:// | ||
+ | Виду того, что я поднимаю **SoftEther** в контейнере **lxc**, я буду использовать режим **SecureNAT**: | ||
+ | SecureNatEnable | ||
+ | При включении режима **SecureNat** автоматически включается маршрутизатор и и **DHCP**-сервер. \\ | ||
+ | Настроить параметры виртуального сетевого адаптера **SecureNAT** можно командой: | ||
+ | SecureNatHostSet | ||
+ | При выполнении **SecureNatHostSet** нужно задать **MAC**-адрес (произвольный, | ||
+ | Параметры MTU и таймаутов для **Virtual NAT** можно задать командой: | ||
+ | NatSet | ||
+ | Параметры сервера **DHCP** задаются командой: | ||
+ | DhcpSet | ||
+ | Посмотреть текущие выданные **DHCP**-сервером **IP**-адреса: | ||
+ | DhcpTable | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Состояние сервера SoftEther ===== | ||
+ | Список прослушиваемых в данный момент портов: | ||
+ | ListenerList | ||
+ | Настройки **SecureNAT**: | ||
+ | SecureNatHostGet | ||
+ | Состояние **SecureNAT**: | ||
+ | SecureNatStatusGet | ||
+ | | ||
+ | ===== Настройка L2TP/IPSec ===== | ||
+ | Включаем **L2TP/ | ||
+ | > IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no / | ||
+ | |||
+ | Проверяем статус **OpenVPN** | ||
+ | > OpenVpnGet | ||
+ | OpenVPN Clone Server Enabled|Yes | ||
+ | UDP Port List |1194 | ||
+ | ====== Настройка клиента SoftEther ====== | ||
+ | Клиент SoftEther способен работать в режиме сервиса, | ||
+ | wget http:// | ||
+ | tar -xvf ./ | ||
+ | cd vpnclient/ | ||
+ | echo -e " | ||
+ | Запускаем клиента: | ||
+ | sudo ./vpnclient start | ||
+ | ===== Настройка подключения ===== | ||
+ | Запускаем утилитку управления клиентом. | ||
+ | sudo ./vpncmd | ||
+ | Теперь жмем 2.\\ | ||
+ | При настройке клента надо сделать две вещи. Создать виртуальный сетевой адаптер и привязать к нему подключение. \\ | ||
+ | Создаем адаптер: | ||
+ | NicCreate autosys | ||
+ | Создаем подключение: | ||
+ | AccountCreate autosys | ||
+ | При создании подключения сервер указвыавем с портом **server: | ||
+ | < | ||
+ | VPN Client> | ||
+ | NicCreate command - Create New Virtual Network Adapter | ||
+ | The command completed successfully. | ||
+ | |||
+ | VPN Client> | ||
+ | AccountCreate command - Create New VPN Connection Setting | ||
+ | Destination VPN Server Host Name and Port Number: sstp.autosys.tk | ||
+ | |||
+ | The host name and port number specification is invalid. | ||
+ | Please specify using the format of host name:port number, or IP address: | ||
+ | Destination VPN Server Host Name and Port Number: sstp.autosys.tk: | ||
+ | |||
+ | Destination Virtual Hub Name: DEFAULT | ||
+ | |||
+ | Connecting User Name: mike | ||
+ | |||
+ | Used Virtual Network Adapter Name: autosys | ||
+ | |||
+ | The command completed successfully. | ||
+ | </ | ||
+ | |||
+ | Теперь прописываем пароль для нового подключения: | ||
+ | AccountPasswordSet | ||
+ | тут нужно указать имя подключения, | ||
+ | < | ||
+ | AccountPasswordSet command - Set User Authentication Type of VPN Connection Setting to Password Authentication | ||
+ | Name of VPN Connection Setting: autosys | ||
+ | |||
+ | Please enter the password. To cancel press the Ctrl+D key. | ||
+ | |||
+ | Password: ******* | ||
+ | Confirm input: ******* | ||
+ | |||
+ | Specify standard or radius: standard | ||
+ | |||
+ | The command completed successfully. | ||
+ | </ | ||
+ | ===== Установка связи ===== | ||
+ | AccountConnect myconnection | ||
+ | |||
+ | ===== Проверка состояния подключения ===== | ||
+ | |||
+ | AccountStatusGet myconnection | ||
+ | |||
+ | |||