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


Используемые термины: SoftEther, Linux, VPN.
Установка SoftEther VPN на Linux выполняется из исходников. Мы рассмотрим процесс компиляции и установки программного продукта в командной строке Linux. Инструкция протестирована на Ubuntu и Rocky Linux (CentOS). Настройку сервера мы выполним в графическом интерфейсе Server Manager. В качестве решения VPN будет использоваться OpenVPN.
Подготовка системы
Сборка SoftEther
Настройка запуска сервиса
Создание пароля для подключения
Общая настройка SoftEther
Установка программы для управления
Подключение к сервису и настройка с помощью мастера
Создание пользователя для подключения к VPN
Настройка NAT
Настройка OpenVPN
Настройка l2tpd
Примеры управления сервером из командной строки
Другие инструкции по настройке VPN
Настройка анонимности
Читайте также
Предварительная настройка
Перед установкой сервера 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
Переходим на страницу загрузки программного обеспечения, выбираем серверный компонент и платформу для установки:
* в нашем примере установка будет выполняться на Linux 64-bit.
Ниже появятся ссылки для загрузки SoftEther VPN — копируем последнюю RTM:
На сервере с помощью скопированной ссылки загрузим архив с исходниками:
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. Рассмотрим подробнее:
- Установку утилиты для управления SoftEther.
- Базовую настройку сервера с помощью мастера настройки.
- Создание пользователя для подключения к VPN.
- Включение NAT.
Поехали.
Установка утилиты управления сервером VPN
Снова переходим на страницу загрузки SoftEther, выбираем VPN Server Manager и платформу для установки:
Скачиваем последнюю версию приложения:
После загрузки файла, запускаем его — откроется мастер установки. Выбираем установку утилиты для администрирования:
На остальные вопросы просто отвечаем Далее. Установка завершена.
Подключение к серверу и начальная настройка
Запускаем установленную утилиту SE-VPN Server Manager (Tools). Переходим к созданию нового подключения, кликнув по New Settings:
В открывшемся окне заполняем данные по нашему серверу — указываем произвольное имя для подключения, вводим имя сервера или его IP-адрес, выбираем порт для подключения 5555, вводим пароль администратора (который мы создали на шаге выше):
Нажимаем ОК.
В следующем окне ставим галочку Remote Access VPN Server (это наиболее встречаемый сценарий работы VPN — клиенты получают доступ к внутренней сети через сервер VPN):
Нажимаем Next.
Подтверждаем наши действия по инициализации настройки:
Даем произвольное название для Virtual Hub Name:
Приложение позволяет зарегистрировать DNS имя для нашего сервера в домене softether.net — оставляем предложенное имя или задаем свое:
Остальные шаги мастера настройки можно пропустить. Начальная настройка завершена.
Создание пользователя
Для аутентификации на сервере VPN при подключении к нему клиентом, создадим пользователя. Для этого нажимаем по Manage Virtual Hub:
Далее кликаем по Manage Users:
Переходим к созданию нового пользователя, нажав New:
Заполняем форму создания новой учетной записи — достаточно ввести имя пользователя и пароль:
* нам доступно несколько способов аутентификации, но в данной инструкции ограничимся входом по паролю.
Нажимаем по OK для создания пользователя и закрываем окно со списком пользователей (Exit).
Включение SecureNAT
В окне настройки виртуального хаба, кликаем по Virtual NAT and Virtual DHCP Server (SecureNAT):
Кликаем по Enable SecureNAT:
Нажимаем OK:
Закрываем окно настройки виртуального хаба.
Наш сервер подготовлен для настройки VPN.
Конфигурирование OpenVPN
SoftEther поддерживаем возможность настройки VPN на базе различных протоколов и технологий. В нашем примере мы сконфигурируем OpenVPN.
Нашу настройку необходимо выполнить на сервере и клиенте. Рассмотрим процесс пошагово.
Настройка сервера
В окне настройки сервера кликаем по OpenVPN / MS-SSTP Setting:
Проверяем, чтобы стояла галочка Enable OpenVPN Clone Server Function, а также задаем порт, на котором будет слушать наш сервер OpenVPN:
* порт 1194 является портом по умолчанию для OpenVPN.
Также кликаем по Generate a Simple Configuration File for OpenVPN Clients — появится окно выбора каталога, в котором нужно сохранить конфигурационные файлы. Переносим на компьютер, с которого нужно подключиться к серверу файл server_openvpn_remote_access_l3.ovpn.
Закрываем окно, кликнув OK.
Настройка клиента
Подробнее работа с клиентом OpenVPN рассмотрена в инструкции Настройка OpenVPN клиента. Мы для примера кратко рассмотрим подключение из под компьютера с Windows.
Заходим на официальную страницу загрузки openvpn и скачиваем клиента для Windows:
Запускаем скачанный файл и устанавливаем программу, нажимая «Далее».
Переходим в папку C:\Users\<USERNAME>\OpenVPN\config (предполагается, что системный диск — диск С; <USERNAME> — имя учетной записи, под которой мы зашли в систему). И копируем в нее файл server_openvpn_remote_access_l3.ovpn, который мы ранее сгенерировали на сервере.
Запускаем с рабочего стола программу «OpenVPN GUI».
Нажимаем правой кнопкой по появившемуся в трее значку и выбираем «Подключиться»:
Произойдет подключение и значок поменяет цвет с серого/желтого на зеленый.
Настройка l2tpd
Настройка сервера
Открываем раздел Ipsec / L2TP Setting:
Ставим галочку Enable L2TP Server Function (L2TP over IPsec):
* данная настройка активирует VPN Server на базе L2TP с защитой IPsec.
Вводим ключ для IPsec:
Настраиваем брандмауэр — разрешаем порты:
- 500/UDP — обмен данными во время согласования IKE.
- 4500/UDP — согласования IKE с использованием NAT.
В зависимости от утилиты управления брандмауэром, наши действия будут отличаться.
а) Iptables (как правило, для Debian/Ubuntu):
iptables -I INPUT -p udp --dport 500 -j ACCEPT
iptables -I INPUT -p udp --dport 4500 -j ACCEPT
netfilter-persistent save
б) Firewalld (как правило, для Rocky Linux/CentOS):
firewall-cmd --permanent --add-port={500,4500}/udp
firewall-cmd --reload
Настройка клиента
Пример настройки клиента Windows:
* где:
- Имя подключения — произвольное имя.
- Имя или адрес сервера — адрес сервера VPN, к которому мы будем подключаться.
- Тип VPN — для нашего случая, выбираем L2TP/IPsec с предварительным ключом.
- Общий ключ — ключ, который мы задали при настройке IPsec Pre-Shared Key.
- Тип данных для входа — выбираем пользователь и пароль.
- Имя пользователя и пароль — логин и пароль, которые мы создавали на более раннем этапе.
Настройка завершена.
Некоторые полезные команды
Мы уже немного пользовались утилитой командной строки для управления 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.