Доброго времени суток, уважаемые читатели. Сегодня статья на тему: "Установка сервера SoftEther (Local Bridge)". Установим SoftEther VPN сервер в режиме Local Bridge, на KVM, в ОС CentOS 7. После установки сервера, настроим его, и произведём подключение клиентским приложением.

SoftEther VPN – это бесплатный мультипротокольный VPN сервер. Помимо поддержки нескольких известных VPN протоколов, SoftEther VPN имеет свой собственный протокол, маскирующийся под обычный HTTPS. Продукт состоит из самого сервера, графического приложения для управления сервером, и клиентского приложения. Клиентское приложение нужно только для использования собственного протокола, во всех других случаях, можно воспользоваться встроенными средствами операционных систем, либо обычными приложениями под используемые протоколы.

Поддерживаемые протоколы: OpenVPN, IPsec, L2TP, MS-SSTP, L2TPv3 и EtherIP.

Официальный сайт разработчиков: https://www.softether.org

Все необходимые компоненты, можно найти на сайте разработчиков, в разделе загрузок:

  1. Сервер SoftEther VPN (можно сохранить ссылку, и скачать прямо на сервер).
  2. Приложение SoftEther VPN Server Manager.
  3. И приложение SoftEther VPN Client Manager.

Заходим на сайт разработчиков, и выбираем всё необходимое, под свою операционную систему, и платформу.

Подготовительные действия перед установкой SoftEther VPN сервера

  • Перед установкой сервера SoftEther, нужно установить некоторые пакеты. Если они у Вас уже установлены, то пропускаем этот шаг.
# yum -y install wget nano
# yum -y install unzip zip
# yum groupinstall -y "Development Tools"
  • Заходим в рабочую директорию, в которой будем производить все манипуляции.
# cd /usr/src
  • Если Вы не скачивали сервер, а просто сохранили ссылку, то самое время скачать его при помощи утилиты wget.
  • В противном случае, добавьте архив сервера любым удобным Вам способом.

Ссылка на последнюю версию сервера, на момент написания статьи, выглядит таким образом:

# 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 -zxvf softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz

Установка сервера SoftEtherVPN

  • Заходим в директорию с сервером, и запускаем установку.
# cd /usr/src/vpnserver
# make
  • В процессе установки, в консоли появляются несколько сообщений, с которыми нужно согласиться.
лицензионное соглашение сервера SoftEtherVPN
  • По завершении установки, нужно добавить необходимые права.
# chmod 600 *
# chmod 700 vpnserver
# chmod 700 vpncmd
  • Запускаем SoftEther VPN сервер.
# ./vpnserver start
  • Нужно проверить – всё ли установилось как нужно.
  • Заходим в консоль управления.
# ./vpncmd

Нам доступны три раздела:

  • Управление VPN сервером или VPN мостом.
  • Редактирование VPN клиента.
  • VPN утилиты.
консоль управления SoftEtherVPN сервера
  • Для запуска проверки, выбираем (3), и далее вводим команду check.
  • Если всё было сделано правильно, то вывод результатов проверки, будет таким как на картинке ниже.
проверка корректности установки SoftEtherVPN сервера
  • Выходим из консоли управления VPN сервером, любым из трёх способов: «еxit, quit или сочетание клавиш Ctrl+C».
  • Следующим шагом, предлагаю отредактировать конфигурационный файл SoftEther VPN сервера. Дело в том, что по умолчанию на сервере включено WebApi. Если Вы зайдёте на работающий порт сервера через браузер, то откроется информационная страница, с пояснениями и ссылками, касающимися Вашего сервера. Не думаю, что посторонним нужно видеть эту информацию.

Прежде чем начать редактирование, нужно остановить сервер.

# ./vpnserver stop
  • Конфигурационный файл находится по адресу /usr/src/vpnserver/vpn_server.config, открываем файл и вносим изменения.
Находим строчку
bool DisableJsonRpcWebApi 
меняем значение 
false на true

Настройка SoftEther VPN сервера через консоль управления

  • Запускаем сервер, и продолжаем настройку.
# ./vpnserver start
  • Заходим в консоль управления VPN сервером.
# ./vpncmd
  • Появляются знакомые три раздела. Но на это раз, нас интересует раздел (1). После перехода, нам предлагают выбрать хост и порт для настройки. Выбираем просто localhost.
настройка подключения к SoftEtherVPN для конфигурации в терминале
  • После выбора хоста, нам предлагают выбрать хаб. Так как мы ещё не создавали хабов, то просто жмём на «Enter».
выбор хаба SoftEtherVPN сервера
  • На следующем шаге создаём пароль для администратора.
  • Выполняем команду ServerPasswordSet, и создаём сложный пароль.
  • В последствии, этот пароль понадобится для управления сервером через терминал, и для подключения к серверу, при помощи программы SoftEther VPN Server Manager.
создание пароля администратора SoftEtherVPN сервера
  • Следующим шагом, удалим хаб по умолчанию. Выполняем команду HubDelete, и вводим название дефолтного хаба DEFAULT.
удаление хаба по умолчанию в SoftEtherVPN сервере
  • Теперь можно создать наш собственный хаб. Выполняем команду HubCreate, вводим имя хаба (на своё усмотрение), я буду использовать ХХХ, и при желании создаём пароль. Минус в создании пароля – это то, что в дальнейшем при каждом обращении к хабу, нужно будет вводить пароль. Поэтому можно не создавать пароля, а просто нажать на «Enter», при появлении приглашения на создание и подтверждение пароля.
создание нового хаба в SoftEtherVPN сервере
  • Проверяем – создался ли наш хаб. Выполняем команду HubList. Как видно на картинке, наш хаб создан.
проверка наличия нового хаба в SoftEtherVPN сервере
  • Переходим к настройке хаба. Выполняем команду Hub XXX, в которой XXX название нашего хаба соответственно.

В режиме настройки хаба, можно выполнять например такие действия, как создание пользователя UserCreate, удаление пользователя UserDelete, создание пароля пользователя UserPasswordSet, и многие другие. Но всё это можно делать используя программу SoftEther VPN Server Manager, которой мы и воспользуемся позже.

  • Переходим к созданию моста, и tap-интерфейса для нашего хаба.
  • Выполняем команду: BridgeCreate XXX -device:vpn -tap:yes
создание моста и tap-интерфейса для хаба в SoftEther VPN сервере
  • Проверяем всё ли создано верно. Выполняем команду Bridgelist.
проверка наличия созданного моста SoftEther VPN сервере
  • Настройка SoftEther VPN сервера в консоли сервера завершена. Выходим из консоли любым из трёх способов: «еxit, quit или сочетание клавиш Ctrl+C».

Настройки для SoftEther VPN Server в системе

  • Проверяем созданный tap-интерфейс в системе.
# ifconfig tap_vpn
  • Если команда ifconfig не работает, то нужно произвести установку дополнительных утилит.
# yum install -y net-tools
  • Если всё верно, то вывод в консоли будет таким, как на картинке.
проверка созданного для SoftEther VPN tap-интерфейса в системе
  • Задаём ip-адрес tap-интерфейсу.
# ifconfig tap_vpn 192.168.10.1
  • Для удобства, сделаем VPN сервер управляемым через systemctl, и добавим в автозагрузку сам сервер, и необходимые для его функционирования компоненты.
  • Предварительно нужно остановить сервер.  Заходим в директорию SoftEther VPN сервера, и останавливаем его.
# cd /usr/src/vpnserver
# ./vpnserver stop
  • Создаём скрипт автозапуска /etc/init.d/vpnserver.

#!/bin/sh
### BEGIN INIT INFO
# Provides: vpnserver
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable Softether by daemon.
### END INIT INFO
DAEMON=/usr/src/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
TAP_ADDR=192.168.10.1

test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
sleep 1
/sbin/ifconfig tap_vpn $TAP_ADDR
systemctl start dhcpd
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
sleep 1
/sbin/ifconfig tap_vpn $TAP_ADDR
systemctl start dhcpd
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

  • Делаем необходимые на файл скрипта разрешения, добавляем его в автозагрузку, и перезапускаем systemctl.
# chmod 755 /etc/init.d/vpnserver
# chkconfig --add vpnserver
# systemctl daemon-reload
  • Теперь управление работой VPN сервера, можно производить как с обычной службой.
  • Запускаем VPN сервер.
# systemctl start vpnserver

Настройка DHCP для SoftEther VPN сервера

  • По умолчанию, в режиме Local Bridge нет функции DHCP-сервера. Поэтому нужно установить, и настроить DHCP-сервер, на работу в связке с SoftEther VPN.
  • Устанавливаем DHCP-сервер.
# yum -y install dhcp
  • Редактируем конфигурационный файл /etc/dhcp/dhcpd.conf, для работы в связке с SoftEther VPN сервером.
option domain-name "myvpn";
option domain-name-servers 1.1.1.1, 1.0.0.1;
default-lease-time 43200;
max-lease-time 86400;
log-facility local6;
subnet 192.168.10.0 netmask 255.255.255.0 {
authoritative;
range 192.168.10.10 192.168.10.200;
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
}
  • Для удобства, настраиваем логирование DHCP-сервера в отдельный файл. Для этого редактируем файл /etc/rsyslog.conf.
В конце файла добавляем строчку
local6.*       /var/log/dhcp.log

Строчку 
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
Заменить на строчку
*.info;mail.none;authpriv.none;cron.none;local6.none                /var/log/messages
  • Перезапускаем rsyslog.
# systemctl restart rsyslog
  • Запускаем и добавляем DHCP-сервер в автозагрузку.
# systemctl start dhcpd
# systemctl enable dhcpd
  • Следующим шагом, нужно включить маршрутизацию в системе. Добавляем в файл /etc/sysctl.conf одну строчку.
net.ipv4.ip_forward = 1
  • Перечитываем конфигурацию.
sysctl -p

Настройка Firewall для работы SoftEther VPN сервера

  • VPN сервер будет работать на 443 порту.
  • Вот команды для iptables.
  • Не забудьте вставить ip-адрес Вашего сервера.

# iptables -I INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source IP_АДРЕС_ВАШЕГО СЕРВЕРА
# iptables -A FORWARD -s 192.168.10.0/24 -j ACCEPT
# iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# /sbin/iptables-save > /etc/sysconfig/iptables

  • А можно добавить выше указанные правила, и ещё несколько дополнительных полезных правил, при помощи скрипта. Не забудьте вставить ip-адрес Вашего сервера.

#!/bin/sh

export IF_EXT="eth0"
export IPT="/sbin/iptables"
export IPT6="/sbin/ip6tables"

# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
$IPT6 --flush

# loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

$IPT6 -P INPUT DROP
$IPT6 -P OUTPUT DROP
$IPT6 -P FORWARD DROP

# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# NAT
# #########################################
# SNAT - local users to out internet
$IPT -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source IP_АДРЕС_ВАШЕГО СЕРВЕРА


$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP


# INPUT chain
# #########################################
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT
$IPT -A INPUT -i $IF_EXT -p tcp --dport 443 -j ACCEPT


# FORWARD chain
# #########################################
$IPT -A FORWARD -s 192.168.10.0/24 -j ACCEPT
$IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

# OUTPUT chain
# #########################################

$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Записываем правила
/sbin/iptables-save > /etc/sysconfig/iptables

  • Перезапускаем iptables.
# systemctl restart iptables
  • А вот команды для firewalld:

# firewall-cmd --zone=public --permanent --add-port=443/tcp
# firewall-cmd --zone=public --permanent --add-masquerade

  • Перезапускаем firewalld:
# systemctl reload firewalld
  • На этом настройки в терминале сервера завершены. Остальные настройки будем производить при помощи программы SoftEther VPN Server Manager.

Настройка SoftEther VPN сервера программой SoftEther VPN Server Manager

  • Запускаем программу, для добавления сервера, в открывшемся окне кликаем по «New Setting».
запуск программы SoftEther VPN Server Manager

В открывшемся окне вводим данные для подключения к серверу:

  1. Ip-адрес сервера.
  2. Порт для подключения.
  3. Пароль администратора (создан нами в консоли управления VPN сервера).
  4. Кроме того, можно выбрать режим подключения (администратор сервера или администратор хаба).
настройка подключения в программе SoftEther VPN Server Manager
  • При первом подключении, нам предлагают настроить дополнительные протоколы, для подключения смартфонов.
  • Закрываем окно, так как мы не будем использовать данные протоколы. Доступные протоколы, при необходимости, можно активировать позднее, в любое удобное время.
сообщение с предложением активировать дополнительные протоколы в SoftEther VPN Server Manager
  • В окне управления сервером, всё интуитивно понятно.
  • Сверху список имеющихся на сервере хабов .
  • Под списком - кнопки с возможными опциями, для управления хабами.
  • Ниже находится список прослушиваемых портов, настройки сети и шифрования, доступ к конфигурации сервера, и проверка статуса.
  • В самом низу расположены кнопки, для активации и настройки дополнительных протоколов.
основное окно управления сервера SoftEther VPN

Окно управления хабом выглядет следующим образом:

  • Сверху находятся разделы для управления группами, пользователями, листом доступа, и окно с выводом статуса хаба.
  • Ниже находятся разделы для управления свойствами хаба, настройками аутентификации, управление каскадными подключениями, настройками логирования, настройками сертифицирования, настройками режима SecureNat, и управление сессиями.
окно настройки хаба SoftEther VPN сервера
  • Желательно отключить пакетное логирование, так как в противном случае, логи будут расти до неимоверных размеров.
  • Нужно зайти в настройки логирования, и снять галку – как показано на картинке.
отключение логирования в SoftEther VPN сервере
  • Для создания пользователя, нужно зайти в раздел «Manage Users» хаба. В открывшемся окне, можно создать пользователя, настроить ему метод аутентификации, задать отдельную политику, а так же задать пользователю ограниченное время существования профиля.
создание нового пользователя в хабе SoftEther VPN сервера
  • Я создам для примера пользователя user, и настрою ему аутентификацию по паролю.
  • После создания, пользователь появляется в списке доступных пользователей.
список пользователей хаба в SoftEther VPN сервере

Подключение к VPN серверу программой SoftEther VPN Client Manager

  • Теперь можно запускать программу SoftEther VPN Client Manager, и пробовать подключиться к нашему серверу.
  • Запускаем программу.
  • Нас интересует строчка «Add VPN Connection, кликаем по ней дважды.
основное окно программы SoftEther VPN Client Manager

Открывается окно с настройками для нового подключения:

  1. Ip-адрес сервера.
  2. Порт для подключения и название Вашего хаба.
  3. Имя пользователя и пароль ( пользователь и пароль, созданные на предыдущем шаге).
  4. После внесения всех данных, жмём на «ОК»
создание подключения в программе SoftEther VPN Client Manager
  • В окне программы-клиента, появляется строчка с новым подключением.
список подключений в программе SoftEther VPN Client Manager
  • Дважды кликаем по строчке с нашим подключением. Если всё было сделано правильно, то в итоге, наш компьютер подключится к VPN-сети, и получит настройки с Ip-адресом.
подключение к серверу программой SoftEther VPN Client Manager

Сегодня мы рассмотрели тему: "Установка сервера SoftEther (Local Bridge)". Произвели установку, настройку, и подключение к серверу SoftEther VPN в режиме Local Bridge. Смотрите так же видео по теме.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Установка сервера SoftEther (Local Bridge)":