Всем привет!!!
В этой статье моя инструкция по установке 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 сервер, подключайте клиентов, желаю удачи!!!