Установка SoftEther VPN на Linux сервере Ubuntu

Всем привет!!!

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

У этой записи 2 комментариев

  1. Павел

    Настроил на VPS сервере. При подключении к серверу клиенты не получают IP адреса. Мост на eth0 включен, работает. Когда включаю secureNAT, IP конечно же выдается, но через некоторое время соединение отваливается. Подскажите, что ему надо?)

    1. Встроенного DHCP сервера нету, только в secureNAT, поэтому нужно настраивать его отдельно. Соединение может отваливаться в L2tp\IpSEC если настройки фаервола или NAT не пропускают нужные порты или после установки соединения маршрутизация работает не корректно.

Добавить комментарий

5 × 5 =