Всем привет!!!
В этой статье моя инструкция по установке SoftEther VPN на Linux сервере под управлением ОС Ubuntu Serever 20.04, но в принципе мануал подойдет к любой версии Ubuntu или даже другому дистрибутиву при самостоятельной установке зависимостей.
SoftEther VPN — продвинутый мульти протокольный и кросс платформенный VPN-сервер и клиент. Этот сервер умеет работать с такими протоколами как L2TP/IPsec, OpenVPN, MS-SSTP, L2TPv3, EtherIP-серверы, а также имеет свой собственный протокол «SSL-VPN», который неотличим от обычного HTTPS-трафика. Может работать не только через TCP/UDP, но и через ICMP (подобно pingtunnel, hanstunnel) и DNS (подобно iodine), работает быстрее других аналогов (по заверению разработчиков). Текущих версия строит L2 и L3 туннели, имеет встроенный DHCP-сервер, поддерживает как kernel-mode, так и user-mode NAT, IPv6, шейпинг, QoS, кластеризацию, load balancing и fault tolerance. Поддерживает операционные системы Windows, Linux, Mac OS, FreeBSD и Solaris и является Open-Source проектом под GPLv2.
Установка SoftEther VPN на Synology NAS • Александр Linux (bafista.ru)
Так отличие Softether VPN от других аналогов в том, что у него есть отличное приложение Softether VPN Server Manager, которое доступно для Windows и Mac OS. Для Linux доступен только режим через командную строку vpncmd

Так же хочу отметить, что можно создавать несколько хабов с разным поведением VPN для разных задач. Это очень удобно
Всю установку я буду делать на любимом дистрибутиве Linux Ubuntu версия 20.04 LTS
Все команды я буду вводить от имени root. Для этого достаточно ввести:
sudo -i
Первое, что всегда нужно делать это обновить систему:
apt update && apt upgrade -y
Если при обновлении обновились пакеты, то лучше перегрузить систему:
reboot
Теперь, когда система в актуальном состоянии установим зависимости:
apt install build-essential cmake gcc g++ make libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev pkg-config
Затем переходим на офф сайт softether vpn и копируем ссылку на продукт

Когда вы будите устанавливать этот vpn сервер его актуальная версия может поменяться. На данный момент версия такая.
Я предпочитаю устанавливать стороннее ПО в папку opt, поэтому переходим в нее, скачиваем vpn сервер и распаковываем:
cd /opt/ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz tar xzvf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz cd vpnserver/
В папке /opt/vpnserver будут лежать исполняемый файлы, логи и конфигурация Sofrether VPN сервера.
Настало время скомпилировать наш vpn сервер с исходников. Для этого нам нужна всего одна команда:
make
После компиляции в папке /opt/vpnserver должны появиться бинарные файлы для запуска:

Теперь добавим Softether VPN в автозагрузку как сервис системы. Для этого создадим файл:
nano /lib/systemd/system/softether-vpnserver.service
И добавим в него следующее содержимое:
[Unit] Description=SoftEther VPN Server After=network.target auditd.service ConditionPathExists=!/opt/vpnserver/do_not_run [Service] Type=forking TasksMax=16777216 EnvironmentFile=-/opt/vpnserver ExecStart=/opt/vpnserver/vpnserver start ExecStop=/opt/vpnserver/vpnserver stop KillMode=process Restart=on-failure # Hardening PrivateTmp=yes ProtectHome=yes ProtectSystem=full ReadOnlyDirectories=/ ReadWriteDirectories=-/opt/vpnserver/ CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_BROADCAST CAP_NET_RAW CAP_SYS_NICE CAP_SYSLOG CAP_SETUID [Install] WantedBy=multi-user.target
Для выхода из режима редактирования и сохранения изменений нажмите Ctrl+x и ответьте y на вопрос.
Включаем сервис Softether VPN в автозагрузку
systemctl enable softether-vpnserver.service
Запустим вручную для проверки
systemctl start softether-vpnserver.service
Статус можно узнать командой:
systemctl status softether-vpnserver.service
Если нужно включить форвардин пакетов силами ядра, вводим команды:
sudo sysctl -w net.ipv4.ip_forward=1
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
Для проверки вводим такие команды:
cat /etc/sysctl.conf | grep forward
cat /proc/sys/net/ipv4/ip_forward
где 0 – форвардинг отключен, 1 – форвардин включен
Теперь можно первый раз подключиться к нашему SoftEther VPN серверу. Для этого скачиваем и устанавливаем Manager

После установки запускаем программу, нажимаем добавить новый и в открывшемся окне вписываем только имя и IP адрес сервера.

Первый раз пароль вводить не надо. Затем нажимаем ОК и подключаемся к серверу для настройки. Первый раз он предложит установить пароль администратора. Придумываем сложный пароль:

После чего система начнет задавать вопросы, для первоначальной настройки. Выбирайте нужные параметры, но имейте ввиду, что потом их можно поменять в любой момент.
Так же я рекомендую настроить защиту от подбора паролей fail2ban для Softether VPN. Установим fail2ban^
apt install fail2ban
После установки создаем файл фильтров:
nano /etc/fail2ban/filter.d/vpnserver.conf
И наполняем его следующим содержимым:
# Fail2Ban filter for SoftEther authentication failures # Made by quixrick and Nobody # Thanks to quixrick from Reddit! https://reddit.com/u/quixrick # Further reference: http://www.vpnusers.com/viewtopic.php?f=7&t=6375&sid=76707e8a5a16b0c9486a39ba34763901&view=print [INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = common.conf #Enable multi line support. Doesn't work with versions < 0.9 [Init] maxlines = 2 # The regular expression filter follows [Definition] failregex =IP address: <HOST>.*\n.*User authentication failed.* ignoreregex=
Затем редактируем файл:
nano /etc/fail2ban/jail.local
Добавляем в конец следующее:
[vpnserver-udp] port = 500,1701,4500 enabled = true protocol = udp filter = vpnserver logpath = /opt/vpnserver/security_log/*/sec_*.log [vpnserver-tcp] port = 443 enabled = true protocol = tcp filter = vpnserver logpath = /opt/vpnserver/security_log/*/sec_*.log
Нужно создать два контекста, один для tcp, другой для udp иначе fail2ban не сможет заблокировать udp соединения и пароль будут подбирать несмотря на то, что IP адрес заблокирован в правилах. Порты указывайте свои, те которые вы используете.
Рестартуем fail2ban для применения изменений:
systemctl restart fail2ban.service
Теперь защита от подбора паролей включена, но ее нужно до настроить. Как это сделать я расскажу в другой статье.
В этой статье только установка, настройка будет попозже.
Настраивайте ваш личный VPN сервер, подключайте клиентов, желаю удачи!!!
Настроил на VPS сервере. При подключении к серверу клиенты не получают IP адреса. Мост на eth0 включен, работает. Когда включаю secureNAT, IP конечно же выдается, но через некоторое время соединение отваливается. Подскажите, что ему надо?)
Встроенного DHCP сервера нету, только в secureNAT, поэтому нужно настраивать его отдельно. Соединение может отваливаться в L2tp\IpSEC если настройки фаервола или NAT не пропускают нужные порты или после установки соединения маршрутизация работает не корректно.