Создаем свой VPN сервер на основе SoftEther
В рамках данного блога была заметка об установке SoftEther VPN на FreeBSD.
Я решил, что будет интересно описать установку данного продукта в Ubuntu.
Пару слов о программе
SoftEther — это открытый и свободно распространяемый продукт (под лицензией Apache 2.0).
Написан студентом японского университета Цукубы в рамках академического проекта.
Проект является мультиплатформенным решением (MacOS, Linux, Windows и BSD).
По мимо этого, решение является мультипротокольным VPN сервером (l2tp, ipsec, openvpn)
Мы рассмотрим установку и первичную настройку VPN сервера с протоколом l2tp/ipsec.
Плюс данного протокола является нативная поддержка операционных систем Windows.
Задача
Предоставить удаленным пользователям защищенный доступ к серверу терминалов организации.
Сервер имеет прямой IP адрес.
В этой заметке останется за кадром использование Microsoft Azur для организации VPN сервера за NAT.
Схема сети
Установку мы будем делать терминале, настройку SoftEther VPN с помощью его клиента в Windows.
Установка
Обновляем репозитории и устанавливаем компиляторы
sudo apt update sudo apt install build-essential
Получение дистрибутива
В отличии от FreeBSD, где SoftEther доступен в портах и пакеджах, в Ubuntu в стандартных репозиторях его нет:)
Поэтому выбираем платформу на этой странице и копируем ссылку на дистрибутив.
Скачиваем, разархивируем и компилируем
mkdir ~/tmp cd ~/tmp wget https://www.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz tar zxf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz cd vpnserver make && cd ../
В момент компиляции принимаем три раза условия, введя цифру 1
Переносим скомпилированный SoftEther, назначаем права на его файлы
sudo mv ~/tmp/vpnserver /opt sudo chmod 600 /opt/vpnserver/* sudo chmod 700 /opt/vpnserver/vpncmd sudo chmod 700 /opt/vpnserver/vpnserver
Создаем автозапуск через systemctl
sudo vi /lib/systemd/system/vpnserver.service
[Unit] Description=SoftEther VPN Server After=network.target [Service] Type=forking ExecStart=/opt/vpnserver/vpnserver start ExecStop=/opt/vpnserver/vpnserver stop [Install] WantedBy=multi-user.target
Разрешаем запуск сервиса
sudo systemctl enable vpnserver
Запускаем
sudo systemctl start vpnserver
Проверим:
sudo systemctl status vpnserver ● vpnserver.service - SoftEther VPN Server Loaded: loaded (/lib/systemd/system/vpnserver.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-11-05 11:23:05 MSK; 20s ago Process: 5179 ExecStart=/opt/vpnserver/vpnserver start (code=exited, status=0/SUCCESS) Main PID: 5227 (vpnserver) Tasks: 36 (limit: 629145) Memory: 105.1M CGroup: /system.slice/vpnserver.service ├─5227 /opt/vpnserver/vpnserver execsvc └─5228 /opt/vpnserver/vpnserver execsvc
Создаем административный пароль
sudo /opt/vpnserver/vpncmd
Выбираем Management of VPN Server or VPN Bridge, введя цифру 1 и нажав два раз Enter
- Hostname of IP Address of Destination:
- Specify Virtual Hub Name:
VPN Server> ServerPasswordSet
Скачиваем и устанавливаем SoftEther VPN Server Manager for Windows
С этой страницы выбрав нужную платформу и битность
Устанавливаем данный клиент
Выбираем только компонент SoftEther VPN Server Manager (Admin Tools Only)
Запускаем SoftEther VPN Server Manager
Кликаем по кнопке New Setting и заполняем поля:
- Имя соединения (Setting Name)
- Адрес (host name)
- Пароль, который мы установили (Password)
Нажимаем ОК и соединяемся
Попадаем в мастер первоначальной настройки:
Жмем Next получаем окно с предупреждением:
Нажимаем Да, и появляется окошко с предложением создать виртуальный хаб (Virtual Hub), задаем ему имя и нажимаем ОК
Следующим окном будет Dynamic DNS Function
Нажимаем Exit и попадаем в настройку IPsec
Включаем lt2tp/IPsec и устанавливаем IPsec Pre-Shared key
Жмем ОК и попадаем в настройку Azure
Я выключаю данную настройку, т.к. имею прямой IP адрес
Нажимаем OK и попадаем в мастер создания пользователя и установки локального моста
Создаем пользователя или пользователей (Create Users)
Локальный бридж не трогаем!
Нажимаем ОК, нажимаем Close на предыдущем мастере.
Попадаем наконец в администрирование VPN сервера:
Где нам доступны для редактирования все настройки VPN сервера.
Кликаем два раза по виртуальному хабу MY_VPN, чтобы попасть в настройки хаба.
Где нас интересует настройка Virtual NAT and Virtual DHCP Server (Secure NAT)
Кто-то должен раздавать адреса VPN клиентам и пробрасывать в локальную сеть.
В обсуждениях SoftEther VPN много жалоб, что Secure NAT требователен к ресурсам.
У меня было две успешные инсталляции с использованием Secure NAT, правда под FreeBSD.
Никаких проблем с ресурсами у меня не было, при чем одна машина VPS (WMVare ESXi) с минимальной конфигурацией.
Включаем Secure NAT
Настраиваем VPN клиент как l2tp/IPsek не забыв указать ключевую фразу
Подключаемся
На этом хотел сказать все:)
Пара слов о безопасности
Во-первых, в windows клиентах (в свойствах сети, IPv4) отключайте функцию «Использовать основной шлюз в удаленной сети».
Чтобы клиентам через VPN отдавались только локальные ресурсы.
Во-вторых, как правило компьютеры удаленных пользователей являются их личным материальном активом:)
Со всем зоопарком программ в том числе и антивирусного ПО.
Если для удаленных пользователей требуется только подключение к терминальному серверу, закройте остальные порты.
В первую очередь закройте SMB протокол.
SoftEther VPN имеет на свой борту firewall, настраивается в настройке Virtual Hub —> Manage Access List
В-третьих, ограничьте пользователя числом одновременных сессий.
Настраивается в политиках учетной записи пользователя.
Будет правильным пользователей закидывать в группы и в группах править политики.
На этом все:)
а как его сделать автозапускаемым на ubuntu server 18.04?
Добрый день!
Сделать через systemctl (в статье поправил этот момент)
Удаляете у себя скрипт запуска из /etc/init.d/
Далее создаете файл:
/lib/systemd/system/vpnserver.service
С содержимым:
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
[Install]
WantedBy=multi-user.target
Разрешаете данный сервис:
systemctl enable vpnserver
И стартуете:
systemctl старт vpnserver
При перезагрузке поднимется автоматом
Здравствуйте!
Спасибо за статью. Помогите пожалуйста с настройкой softether vpn!
У меня дома на raspberry (миникомп дальше) поднят умный дом на базе Home Assistant по адресу: http://миникомп:8123. Данный миникомп подключен к роутеру с интернетом от МТС. Провайдер выдает серый ip! Я хочу иметь доступ к Home Assistant через Интернет!
Для решения этой задачи установил на миником softether vpn server. Т.к. ip у меня серый, то на softether включил опцию Azure VPN и выдачу адреса NAT. В итоге родным клиентом softether мне удалось подключиться через [hostname.azurevpn.net] к серверу. При подключении выдает ip = 192.168.0.30.
Вопрос: какие настройки необходимо сделать, чтобы я с компа, на котором подключен клиент softether, мог иметь доступ на http://миникомп:8123?
Если возможно, напишите свой телеграм, напишу вам в личку!
Помогите, не подключаются пользователи. Административная прога подключается.
Может файрвол в Ubuntu надо настроить?
Или порт занят другим процессом?