Установка и настройка SoftEther VPN на Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: SoftEtherLinux, VPN.

Установка SoftEther VPN на Linux выполняется из исходников. Мы рассмотрим процесс компиляции и установки программного продукта в командной строке Linux. Инструкция протестирована на Ubuntu и Rocky Linux (CentOS). Настройку сервера мы выполним в графическом интерфейсе Server Manager. В качестве решения VPN будет использоваться OpenVPN.

Предварительная настройка

Перед установкой сервера VPN выполним предварительные настройки.

1. Установка пакетов, необходимых для установки приложения

Для загрузки, сборки и установки SoftEther нам нужны дополнительные компоненты:

  • wget — для загрузки исходников.
  • tar — для распаковки архивов.
  • make — компиляция приложения из исходников.
  • gcc — набор компиляторов для разных языков программирования.

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

а) Deb (Debian, Ubuntu, Astra Linux):

apt update 

apt install wget tar make gcc

б) RPM (Rocky Linux, CentOS, Oracle Linux):

yum install wget tar make gcc

2. Настройка брандмауэра

В нашем примере мы хотим использовать OpenVPN, поэтому нам нужен порт 1194 (если мы захотим его поменять, то подставляем свое значение). Также нам нужно открыть порт 5555 — по нему мы будем подключаться к системе для управления настройками из графического интерфейса.

В зависимости от утилиты управления брандмауэром, наши действия будут отличаться.

а) Iptables (как правило, для Debian/Ubuntu):

iptables -I INPUT -p tcp --dport 1194 -j ACCEPT

iptables -I INPUT -p udp --dport 1194 -j ACCEPT

iptables -I INPUT -p tcp --dport 5555 -j ACCEPT

Для сохранения правил вводим:

apt install iptables-persistent

netfilter-persistent save

б) Firewalld (как правило, для Rocky Linux/CentOS):

firewall-cmd --permanent --add-port=1194/{tcp,udp}

firewall-cmd --permanent --add-port=5555/tcp

Для сохранения правил вводим:

firewall-cmd --reload

Загрузка и установка SoftEther VPN

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

Выбираем SoftEther и платформу для установки

* в нашем примере установка будет выполняться на Linux 64-bit.

Ниже появятся ссылки для загрузки SoftEther VPN — копируем последнюю RTM:

Копируем ссылку для загрузки SoftEther VPN

На сервере с помощью скопированной ссылки загрузим архив с исходниками:

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

Создадим каталог, где будут находиться файлы сервера:

mkdir /opt/vpnserver

Распакуем скачанный архив в созданную папку:

tar zxvf softether-vpnserver-v*.tar.gz -C /opt/vpnserver --strip-components 1

Переходим в распакованную директорию:

cd /opt/vpnserver/

Выполняем компиляцию:

make

Мы должны увидеть что-то на подобие:

After you start the server daemon, you can open the HTML5 Web Administration Console is available at

https://127.0.0.1:5555/
or
https://ip_address_of_the_vpn_server:5555/

This HTML5 page is obviously under construction, and your HTML5 development contribution is very appreciated.

Серверная часть установлена.

Запуск сервера

Для запуска сервера используется команда /opt/vpnserver/vpnserver start. Но нам нужно настроить непрерывную работу системы, поэтому мы будем использовать systemd.

Создаем файл:

vi /etc/systemd/system/vpnserver.service

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Перечитываем конфигурацию systemd:

systemctl daemon-reload

Разрешаем автозапуск и стартуем vpnserver:

systemctl enable vpnserver --now

Проверяем состояние:

systemctl status vpnserver

Смотрим, на каких портал слушает сервис:

ss -tunlp | grep vpnserver

Мы должны увидеть что-то на подобие:

udp   UNCONN 0      0                                0.0.0.0:49032      0.0.0.0:*    users:(("vpnserver",pid=15459,fd=5),("vpnserver",pid=15458,fd=5))
udp   UNCONN 0      0                                0.0.0.0:58441      0.0.0.0:*    users:(("vpnserver",pid=15459,fd=11))                            
udp   UNCONN 0      0                              127.0.0.1:1194       0.0.0.0:*    users:(("vpnserver",pid=15459,fd=47))                            
udp   UNCONN 0      0                              10.0.2.18:1194       0.0.0.0:*    users:(("vpnserver",pid=15459,fd=46))                            
udp   UNCONN 0      0                                0.0.0.0:36046      0.0.0.0:*    users:(("vpnserver",pid=15459,fd=16))                            
udp   UNCONN 0      0                                0.0.0.0:23986      0.0.0.0:*    users:(("vpnserver",pid=15459,fd=43))                            
udp   UNCONN 0      0                                  [::1]:1194          [::]:*    users:(("vpnserver",pid=15459,fd=49))                            
udp   UNCONN 0      0      [fe80::a00:27ff:fedc:7a3d]%enp0s3:1194          [::]:*    users:(("vpnserver",pid=15459,fd=48))                            
tcp   LISTEN 0      128                              0.0.0.0:1194       0.0.0.0:*    users:(("vpnserver",pid=15459,fd=35))                            
tcp   LISTEN 0      128                              0.0.0.0:5555       0.0.0.0:*    users:(("vpnserver",pid=15459,fd=39))                            
tcp   LISTEN 0      128                              0.0.0.0:443        0.0.0.0:*    users:(("vpnserver",pid=15459,fd=26))                            
tcp   LISTEN 0      128                              0.0.0.0:992        0.0.0.0:*    users:(("vpnserver",pid=15459,fd=31))                            
tcp   LISTEN 0      128                                 [::]:1194          [::]:*    users:(("vpnserver",pid=15459,fd=37))                            
tcp   LISTEN 0      128                                 [::]:5555          [::]:*    users:(("vpnserver",pid=15459,fd=41))                            
tcp   LISTEN 0      128                                 [::]:443           [::]:*    users:(("vpnserver",pid=15459,fd=28))                            
tcp   LISTEN 0      128                                 [::]:992           [::]:*    users:(("vpnserver",pid=15459,fd=33)) 

Другими словами, vpnserver запускается на большом количестве портов.

Сервис работает и можно переходить к его настройке.

Создаем пароль администратора

Для администрирования SoftEther, создаем пароль администратора. Вводим:

/opt/vpnserver/vpncmd

Система задаст вопрос, какой сервис нам нужен — выбираем Management of VPN Server or VPN Bridge (номер 1):

1. Management of VPN Server or VPN Bridge 
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 1

На следующие два вопроса просто нажимаем Enter.

Мы окажемся в командной оболочке SoftEther. Вводим:

> ServerPasswordSet

И дважды задаем пароль, который планируем использовать:

Password: ***********
Confirm input: ***********

The command completed successfully.

Готово — выходим в Linux shell:

> quit

Настройка сервера SoftEther

В нашем примере мы будем выполнять настройку сервера с помощью графической консоли, установленной на Windows. Рассмотрим подробнее:

  1. Установку утилиты для управления SoftEther.
  2. Базовую настройку сервера с помощью мастера настройки.
  3. Создание пользователя для подключения к VPN.
  4. Включение NAT.

Поехали.

Установка утилиты управления сервером VPN

Снова переходим на страницу загрузки SoftEther, выбираем VPN Server Manager и платформу для установки:

Выбираем для загрузки VPN Server Manager

Скачиваем последнюю версию приложения:

Среди списка версий для загрузки, выбираем нужную нам

После загрузки файла, запускаем его — откроется мастер установки. Выбираем установку утилиты для администрирования:

В мастере установки выбираем утилиту для управления softether

На остальные вопросы просто отвечаем Далее. Установка завершена.

Подключение к серверу и начальная настройка

Запускаем установленную утилиту SE-VPN Server Manager (Tools). Переходим к созданию нового подключения, кликнув по New Settings:

Кликаем по кнопке New Settings для создания подключения к серверу

В открывшемся окне заполняем данные по нашему серверу — указываем произвольное имя для подключения, вводим имя сервера или его IP-адрес, выбираем порт для подключения 5555, вводим пароль администратора (который мы создали на шаге выше):

Настраиваем подключение к серверу VPN

Нажимаем ОК.

В следующем окне ставим галочку Remote Access VPN Server (это наиболее встречаемый сценарий работы VPN — клиенты получают доступ к внутренней сети через сервер VPN):

Ставим галочку Remote Access VPN Server

Нажимаем Next.

Подтверждаем наши действия по инициализации настройки:

Подтверждаем применение настроек

Даем произвольное название для Virtual Hub Name:

Задаем название для Virtual Hub Name

Приложение позволяет зарегистрировать DNS имя для нашего сервера в домене softether.net — оставляем предложенное имя или задаем свое:

Указываем имя для нашего VPN сервера

Остальные шаги мастера настройки можно пропустить. Начальная настройка завершена.

Создание пользователя

Для аутентификации на сервере VPN при подключении к нему клиентом, создадим пользователя. Для этого нажимаем по Manage Virtual Hub:

Переходим к настройкам виртуального хаба

Далее кликаем по Manage Users:

Переходим к управлению пользователями

Переходим к созданию нового пользователя, нажав New:

Открываем окно создания нового VPN-пользователя

Заполняем форму создания новой учетной записи — достаточно ввести имя пользователя и пароль:

Вводим данные для создания нового пользователя

* нам доступно несколько способов аутентификации, но в данной инструкции ограничимся входом по паролю.

Нажимаем по OK для создания пользователя и закрываем окно со списком пользователей (Exit).

Включение SecureNAT

В окне настройки виртуального хаба, кликаем по Virtual NAT and Virtual DHCP Server (SecureNAT):

Переходим к настройкам Virtual NAT

Кликаем по Enable SecureNAT:

Разрешаем SecureNAT

Нажимаем OK:

Кликаем по OK

Закрываем окно настройки виртуального хаба.

Наш сервер подготовлен для настройки VPN.

Конфигурирование OpenVPN

SoftEther поддерживаем возможность настройки VPN на базе различных протоколов и технологий. В нашем примере мы сконфигурируем OpenVPN.

Нашу настройку необходимо выполнить на сервере и клиенте. Рассмотрим процесс пошагово.

Настройка сервера

В окне настройки сервера кликаем по OpenVPN / MS-SSTP Setting:

Переходим к настройкам OpenVPN

Проверяем, чтобы стояла галочка Enable OpenVPN Clone Server Function, а также задаем порт, на котором будет слушать наш сервер OpenVPN:

Включаем OpenVPN, а также задаем порт, на котором он должен работать

* порт 1194 является портом по умолчанию для OpenVPN.

Также кликаем по Generate a Simple Configuration File for OpenVPN Clients — появится окно выбора каталога, в котором нужно сохранить конфигурационные файлы. Переносим на компьютер, с которого нужно подключиться к серверу файл server_openvpn_remote_access_l3.ovpn.

Закрываем окно, кликнув OK.

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

Подробнее работа с клиентом OpenVPN рассмотрена в инструкции Настройка OpenVPN клиента. Мы для примера кратко рассмотрим подключение из под компьютера с Windows.

Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:

Загружаем клиента OpenVPN для Windows

Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».

Переходим в папку C:\Users\<USERNAME>\OpenVPN\config (предполагается, что системный диск — диск С; <USERNAME> — имя учетной записи, под которой мы зашли в систему). И копируем в нее файл server_openvpn_remote_access_l3.ovpn, который мы ранее сгенерировали на сервере.

Запускаем с рабочего стола программу «OpenVPN GUI».

Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:

Запуск подключения openvpn-клиента к серверу

Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.

Некоторые полезные команды

Мы уже немного пользовались утилитой командной строки для управления VPN. Это vpncmd. В данном разделе приведем несколько примеров ее использования.

Подключение

Для начала, заходим в консоль управления SoftEther с помощью vpncmd:

/opt/vpnserver/vpncmd

На первый вопрос отвечаем 1 — управление сервером:

By using vpncmd program, the following can be achieved. 

1. Management of VPN Server or VPN Bridge 
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)

Select 1, 2 or 3: 1

На второй вопрос можно не отвечать, нажав Enter:

Hostname of IP Address of Destination:

На третий вопрос вводим имя нашего хаба (его мы задали при настройке сервера через графическую утилиту):

Specify Virtual Hub Name: VPN_Server

Мы должны увидеть:

VPN Server/VPN_Server>

Мы подключились для управления сервером.

Управление пользователями

1. Для создания пользователя вводим:

> UserCreate

2. Для удаления пользователя:

> UserDelete

3. Чтобы сменить пароль пользователю вводим:

> UserPasswordSet

Управление сервером

Для смены пароля администратора сервера вводим:

> ServerPasswordSet

Настройка анонимности

Для обеспечения полной анонимности при использовании VPN-сервера, делаем дополнительные настройки.

1. Необходимо, чтобы время на сервере совпадало с временем на компьютере/телефоне, откуда мы подключаемся к данному серверу.

На стороне сервера необходимо задать часовой пояс, например, если наш прокси находится в Германии, вводим:

timedatectl set-timezone Europe/Berlin

На стороне клиента либо меняем часовой пояс в системе, либо устанавливаем плагин для браузера, например, для Mozilla Firefox и меняем часовой пояс уже в нем.

2. Отключение icmp.

По времени ответа на ping можно определить отдаленноесть клиента от прокси. Чтобы проверку нельзя было выполнить, отключаем на сервере icmp. Для этого создаем файл:

vi /etc/sysctl.d/icmp.conf

net.ipv4.icmp_echo_ignore_all=1

И применяем настройки:

sysctl -p /etc/sysctl.d/icmp.conf

Однако, данный метод сработал не для всех операционных систем на базе DEB. В этом случае есть альтернативный способ — задать блокировку с помощью брандмауэра:

iptables -I INPUT -p icmp --icmp-type echo-request -j DROP

И сохраним настройки:

netfilter-persistent save

3. Проверяем анонимность.

Открываем браузер, который работает через прокси и переходим на страницу 2ip.ru/privacy — кликаем по Проверить:

Переходим к проверке анонимности прокси

Будет выполнена проверка анонимности нашего сервера.

Читайте также

Другие инструкции по работе с VPN, которые могут оказаться интересными:

1. Как настроить сервер OpenVPN на Windows.

2. Настройка и использование OpenVPN на Ubuntu.

3. Установка и настройка OpenVPN на Linux CentOS 7.

4. Настройка доступа к локальной сети клиентам OpenVPN в Linux.

5. Настройка IPSEC L2TP VPN-сервера на CentOS 7.

# Linux # Сети # Серверы # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет