Инструкция по установке и настройке клиента SoftetherVPN на Linux (Debian 10)

Подготовка операционной системы

Устанавливаем и обновляем ОС
apt update && upgrade
(Для виртуальных машин) Устанавливаем агент Proxmox
apt-get install qemu-guest-agent
(Если необходимо) Разрешаем доступ по SSH для root. Редактируем файл
nano /etc/ssh/sshd_config
Отключаем протокол IPv6. Для этого в файл настройки nano /etc/sysctl.conf
Записываем значения
net.ipv6.conf.all.disable_ipv6 = 1net.ipv6.conf.default.disable_ipv6 = 1net.ipv6.conf.lo.disable_ipv6 = 1
Сохраняем файл и перезапускаем sysctl
sysctl -p
Устанавливаем пакет для сборки клиента из исходников
apt-get install build-essential
Перезагружаем
Проверяем настройки пересылки пакетов между интерфейсами
cat /proc/sys/net/ipv4/ip_forward
если 0, то включаем пересылку командой
echo 1 > /proc/sys/net/ipv4/ip_forward

Установка клиента SoftEtherVPN

Скачиваем SoftEther VPN for Linux, распаковываем загруженный файл (tar.gz)
wget http://www.softether-download.com/files/softether/v4.42-9798-rtm-2023.06.30-tree/Linux/SoftEther_VPN_Client/64bit_-_Intel_x64_or_AMD64/softether-vpnclient-v4.42-9798-rtm-2023.06.30-linux-x64-64bit.tar.gz
Ссылка на актуальную версию находится на сайте softethervpn.org
tar -xvf softether-vpnclient-v4.42-9798-rtm-2023.06.30-linux-x64-64bit.tar.gz
Идем в папку с распакованной программой, собираем и устанавливаем пакет
cd ./vpnclient
make
принимаем лицензионные соглашения: 1
запускаем установленный VPN клиент из того же каталога:
./vpnclient start

Настройка клиента SoftEtherVPN

Чтобы перейти к конфигурированию клиентской части переходим в командную строку VPN-клиента:
./vpncmd
Перед настройкой проверим готовность клиента:
Выбираем "3" чтобы попасть в раздел Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool
Выполняем команду "check"
Если все тесты пройдены без ошибок, можно переходит дальше, выход из vpncmd Ctrl+C.
После выхода, опять выполняем команду: ./vpncmd выбираем пункт "2" (Management of VPN Client)
Программа запросит IP адрес хоста, нажимаем "Enter" (по умолчанию подключается к "localhost").
Если появится ошибка о невозможности сетевого подключения, то сначала выполнить запуск клиента
./vpnclient start
После чего повторить предыдущий шаг

Создание и настройка VPN адаптера, и аккаунта для подключения к VPN сети

На сервере SoftetherVPN создать пользователя name с авторизацией по сертификату. Скачать сертификат и ключ (name.cer name.key), положить их в папку на клиенте (например /root/keys)
Создать виртуальный интерфейс для подключения к VPN-серверу:
NicCreate vpn    (где "vpn" это имя виртуального адаптера), другие команды (NicDelete - удалить адаптер, NicList - список адаптеров)
Создать учетную запись VPN-клиента с помощью следующей команды:
AccountCreate NameConnect /SERVER:<IPSERVER>:5555 /HUB:<NAMEVIRTUALHUB> /USERNAME:<username> /NICNAME:<name nic adaptera>
В данном случае с именем соединения TEST, адресом сервера 172.16.41.15, именем виртуального хаба HUBTEST, пользователем USERTEST и именем адаптера VPN
AccountCreate TEST /server:172.16.41.15:5555 /HUB:HUBTEST /USERNAME:USERTEST /NICNAME:VPN
(где "NameConnect" это просто имя подключения), другие команды (AccountDelete - удалить, AccountList - список)
Если вы получите сообщение "The command completed successfully", то все сделано верно, c помощью AccountList можно посмотреть созданное подключение.
ВАЖНО! Варианты аутентификации на сервере.
В некоторых случаях необходимо указать тип аутентификации пользователя и указать необходимые параметры. Чтобы изменить эту информацию, вы можете использовать такие команды, как AccountAnonymousSet, AccountPasswordSet, AccountCertSet и AccountSecureCertSet.
 AccountAnonymousSet - анонимная аутентификация
 AccountPasswordSet- аутентификация по пользователю и паролю
 AccountCertSet - аутентификация по пользовательскому сертификату
 AccountSecureCertSet- аутентификация пользователя по смарт-картам
В нашем случае аутентификация будет происходить по пользовательскому сертификату AccountCertSet, для этого выполняем команду:
AccountCertSet [имя соединения] [/LOADCERT: путь до сертификата] [/LOADKEY: путь до ключа]
В нашем случае :
AccountCertSet TEST /LOADCERT:/root/keys/name.cer /LOADKEY:/root/keys/name.key]
После выполнения у вас запросит пароль для сертификата (если он установлен).
Подключение готово, можно посмотреть список подключений выполнив команду AccountList, в статусе подключение будет видно его текущее состояние (offline, connected).
Чтобы подключиться необходимо выполнить команду: 
AccountConnect NameConnect (где NameConnect это имя созданного аккаунта для подключения)
После чего статус должен измениться на Connected.
Если все сделано верно то вы подключитесь к VPN сети со своими учетными данными.
Если не отключали протокол IPv6, то на сервере VPN вы сможете увидеть активное подключение, работающее пока по IPv6.
Получение IP адреса для виртуального адаптера

Вносим изменения в файл сетевой конфигурации для виртуального адаптера, который создавали. В нашем случае vpn_vpn
nano /etc/network/interfaces
Для статического адреса добавляем блок:
allow-hotplug vpn_vpn
iface vpn_vpn inet static
address 10.10.10.10
netmask 255.255.255.0

Настройка автозапуска соединения

В настройках клиента :
cd ./vpnclient
./vpnclient start
./vpncmd
2
Enter
Выполняем команду добавления соединения в автозапуск AccountStartupSet [имя соединения]:
AccountStartupSet TEST
Создаем UNIT для запуска клиента :
nano /etc/systemd/system/softethervpn-client.service
с содержанием:
[Unit]
Description=SoftEther VPN Client
After=network.target

[Service]
Type=forking
ExecStart=/root/vpnclient/vpnclient start
ExecStop=/root/vpnclient/vpnclient stop
Restart=on-failure

[Install]
WantedBy=multi-user.target
Перезагружаем сервисы systemctl daemon-reload
Включаем сервис в автозагрузку systemctl enable softethervpn-client.service
Запускаем и проверяем статус:
systemctl start softethervpn-client.service
systemctl status softethervpn-client.service