Установка и настройка SoftEther VPN сервера на Ubuntu 22.04/20.04

Этот справочник научит вас запускать личный VPN-сервер, устанавливая SoftEther VPN на Ubuntu 22.04/20.04. SoftEther VPN — это программа с открытым исходным кодом, поддерживающая различные протоколы, которая предоставляет возможность пользователям подключаться к удаленной сети.

Зачем настраивать собственный VPN-сервер?

  • Возможно, вы являетесь поставщиком VPN-услуг или системным администратором и вам требуется настроить свой собственный VPN-сервер.
  • Вы не доверяете заявленной политике VPN-провайдеров о неведении логов и предпочитаете вариант с самостоятелным хостингом.
  • VPN может быть применен для реализации сетевых мер безопасности. Например, при управлении собственным почтовым сервером можно настроить политику, требующую входа пользователей исключительно с IP-адреса VPN, добавив его в белый список в настройках брандмауэра. Это обеспечит дополнительную защиту вашего почтового сервера от несанкционированного доступа.
  • Возможно, вам любопытно разобраться, как функционирует VPN-сервер.

Настройка сервера SoftEther VPN на Ubuntu.

Характерные черты SoftEther VPN

  • Быстрый и лёгкий. Во время моего тестирования с SoftEther VPN я смог смотреть 4K видео на YouTube, который заблокирован в моей стране (Китай).
  • Поддерживает работу на серверах с операционными системами Linux, FreeBSD, macOS, Solaris и Windows, а также совместим с архитектурами X86, AMD64, ARM, PowerPC и MIPS.
  • Поддерживает разнообразные протоколы, включая классические, такие как OpenVPN, L2TP, IPSec, SSTP, а также свой уникальный протокол SoftEtherVPN, который работает на основе HTTPS.
  • Существует клиентская программа SoftEther, доступная для операционных систем Linux, macOS и Windows, а также поддерживающая архитектуры ARM, PowerPC и MIPS.
  • Обход NAT даёт возможность запускать сервер SoftEther VPN в условиях NAT без необходимости в перенаправлении портов. (по умолчанию активно).
  • VPN через ICMP или DNS обеспечивает возможность создания VPN-соединения с использованием протоколов ICMP или DNS, даже в случае, если брандмауэр или маршрутизатор препятствуют всем TCP или UDP соединениям.
  • Современная административная панель, разработанная с использованием HTML5.

Требования

Чтобы воспользоваться данным руководством, вам понадобится VPS (Виртуальный Частный Сервер), который обеспечит доступ к заблокированным ресурсам (за пределами вашей страны или под фильтрацией интернета). Я советую обратить внимание на Kamatera VPS, который предлагает:

  • 30 дней бесплатного доступа.
  • Стоимость составляет от 4 долларов в месяц за 1 ГБ оперативной памяти.
  • Мощный VPS, основанный на технологии KVM.
  • Девять центров обработки данных расположены по всему миру, включая такие страны, как США, Канада, Великобритания, Германия, Нидерланды, Гонконг и Израиль.

Следуйте инструкциям, представленным ниже, чтобы настроить свой сервер Linux VPS на платформе Kamatera.

  • Как запустить VPS-сервер на базе Linux

проверка SoftEther VPN Server с помощью vpncmd

Для обеспечения порядка и чистоты в файловой системе следует перенести директорию vpnserver в папку /opt/.

cd .. sudo mv vpnserver /opt/softether

Формирование службы Systemd

VPN-сервер можно активировать с использованием:

sudo /opt/softether/vpnserver start

sudo /opt/softether/vpnserver stop

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

sudo nano /etc/systemd/system/softether-vpnserver.service

Вставьте указанные строки в данный файл.

[Unit] Description=SoftEther VPN server After=network-online. target After=dbus.service [Service] Type=forking ExecStart=/opt/softether/vpnserver start ExecReload=/bin/kill - HUP $MAINPID [Install] WantedBy=multi-user. target

Сохраните файл и закройте его. После этого запустите VPN-сервер.

sudo systemctl start softether-vpnserver

Активируйте автоматический запуск при старте системы.

sudo systemctl enable softether-vpnserver

Вы можете узнать его состояние с помощью:

systemctl status softether-vpnserver

softether-vpnserver.service - Сервер SoftEther VPN Загружен: загружен (/etc/systemd/system/softether-vpnserver.service; включен; предустановленный режим: включен) Активен:активный (в работе) since Sat 2022-09-17 10:49:15 UTC; 20s ago Main PID: 2944053 (vpnserver) Tasks: 32 (limit: 629145) Memory: 17.9M CPU: 603ms CGroup: /system. slice/softether-vpnserver.service ├─2944053 /opt/softether/vpnserver execsvc └─2944054 /opt/softether/vpnserver execsvc

Совет: Если команда не завершилась мгновенно, нажмите клавишу Q, чтобы вернуть управление терминалом.

Если устройство не функционирует, вы можете обратиться к журналу, чтобы понять причину неисправности.

sudo journalctl - eu softether-vpnserver

Проверьте доступные порты.

sudo ss - lnptu | grep vpnserver

udp UNCONN 0 0 127.0.0.1:1194 0.0.0.0:* users:((" vpnserver ",pid=2952110,fd=62)) udp НЕУСТ. 0 0 12.234.224.168:1194 0.0.0.0:* пользователи:((" vpnserver ",pid=2952110,fd=58)) udp НЕСОЕДИНЕН 0 0 0.0.0.0:51612 0.0.0.0:* пользователи:((" vpnserver udp UNCONN 0 0 0.0.0.0:53400 0.0.0.0:* пользователи:((" vpnserver udp UNCONN 0 0 0.0.0.0:56452 0.0.0.0:* пользователи:((" vpnserver "udp UNCONN 0 0 0.0.0.0:40085 0.0.0.0:* пользователи:((" vpnserver ",pid=2952110,fd=16)) tcp ОЖИДАНИЕ 0 128 0.0.0.0:992 0.0.0.0:* пользователи:((" vpnserver tcp Слушает 0 128 0.0.0.0:1194 0.0.0.0:* пользователи:((" vpnserver tcp LISTEN 0 128 0.0.0.0:5555 0.0.0.0:* пользователи:((" vpnserver tcp LISTEN 0 128 0.0.0.0:443 0.0.0.0:* пользователи:((" vpnserver ",pid=2952110,fd=36))

Сервер SoftEther VPN работает на нескольких портах, что обусловлено его поддержкой различных VPN-протоколов, таких как L2TP, IPsec, SSTP, OpenVPN и собственный протокол SoftEther VPN. Порт 5555 предназначен для работы HTML5 консоли администратора.

Протоколы SSTP и SoftEtherVPN задействуют TCP-порт 443. Если на сервере уже работает веб-сервер, например, Apache или Nginx, использующий этот порт, подключение к серверу SoftEtherVPN будет невозможным через TCP-порт 443.

Разрешение портов в межсетевом экране

Если на вашем сервере установлен файрвол, вам потребуется открыть несколько портов. К примеру, при использовании UFW можно выполнить следующую команду.

sudo ufw allow 80,443,992,1194,555/tcp sudo ufw allow 1194,51612,53400,56452,40085/udp

Конфигурация сервера SoftEther VPN.

Теперь необходимо воспользоваться vpncmd для конфигурации сервера SoftEther VPN.

/opt/softether/vpncmd

Нажмите 1, чтобы настроить VPN-сервер.

vpncmd-change-admin-console-password-ubuntu

  • Административная консоль работает на порту 5555. Для доступа к ней введите 127.0.0.1:5555.
  • После этого нажмите Enter, чтобы обойти выбор виртуального хаба.
  • Пароль для консоли администратора по умолчанию не установлен. Чтобы задать пароль, необходимо выполнить команду ServerPasswordSet.

Установить пароль для сервера можно с помощью команды vpncmd.

Теперь нам следует сконфигурировать виртуальный хаб в SoftEtherVPN. Можно воспользоваться стандартным виртуальным хабом, который называется DEFAULT.

Hub DEFAULT

После этого создайте аккаунт VPN, используя следующую команду. Подмените username на желаемое имя пользователя.

UserCreate username

Вы сможете указать название группы, полное имя и описание пользователя. Если хотите, можете просто нажать Enter, чтобы оставить эти поля пустыми.

Задайте пароль для данного пользователя.

UserPasswordSet username

Выполните следующую команду, чтобы активировать возможности виртуального NAT и DHCP-сервера, иначе клиенты VPN не смогут получить IP-адрес от сервера.

SecureNatEnable

Теперь необходимо произвести настройку NAT для пользователей VPN, используя команду DhcpSet.

DhcpSet

Вам предстоит ответить на ряд вопросов. Примените указанные параметры.

  • Стартовый адрес для диапазона распределенных IP: 192.168.30.10.
  • Финальная точка для диапазона распределенных адресов: 192.168.30.200.
  • Маска сети: 255.255.255.0
  • Максимальное время аренды (в секундах): 7200.
  • Шлюз по умолчанию установлен на 192.168.30.1.
  • DNS-сервер номер 1: 192.168.30.1
  • DNS-сервер 2: 1.0.0.1
  • Доменное имя: нажмите Enter, чтобы пропустить этот шаг.
  • Сохранить журнал: да.

Настройка DNS-сервера для SoftEther VPN сервера.

Чтобы покинуть консоль администратора, выполните следующее.

exit

Настройте DNS-резольвер на сервере.

Так как мы назначаем сервер VPN в роли DNS-сервера для клиентов, требуется запустить DNS-резольвер на данном сервере. Мы можем установить DNS-сервер bind9.

sudo apt install bind9

После установки BIND он запустится автоматически. Вы можете проверить его состояние с помощью:

systemctl status named

● named.service - BIND Domain Name Server Загружен: загружен (/lib/systemd/system/named.service; включен; предустановка производителя: включена) Активен: в активном состоянии с Вс 2020-05-17 08:11:26 UTC; 37с назад Документы: man:named(8) Главный PID: 13820 (named) Задачи: 5 (лимит: 1074) Память: 14.3M CGroup: /system. slice/named.service └─13820 /usr/sbin/named - f - u bind

Если он не функционирует, попробуйте запустить его с помощью:

sudo systemctl start named

Внесите изменения в файл настроек сервера DNS BIND.

sudo nano /etc/bind/named.conf.options

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

allow-recursion < 127.0.0.1; 192.168.30.0/24; >;

Сохраните изменения и закройте файл, затем откройте для редактирования файлы /etc/default/named.

sudo nano /etc/default/named

Включите -4 в OPTIONS, чтобы проверить, способен ли BIND отправлять запросы к корневым DNS-серверам.

OPTIONS="-u bind -4"

Сохраните изменения и закройте документ.

По умолчанию BIND активирует DNSSEC, обеспечивая тем самым достоверность ответов DNS и их защиту от подделок. Тем не менее, функционирование может быть нарушено из-за изменения доверительной якорной записи и других факторов. Для корректной работы необходимо восстановить базу данных управляемых ключей с помощью указанных команд.

sudo rndc managed-keys destroy sudo rndc reconfig

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

sudo systemctl restart named

После этого необходимо выполнить следующую команду, чтобы разрешить клиентам VPN подключаться к порту 53.

sudo ufw insert 1 allow in from 192.168.30.0/24

Оформите надежный TLS-сертификат через Let’s Encrypt.

При установке SoftEtherVPN сервер создает самоподписанный TLS-сертификат, однако мы выберем использование сертификата Let’s Encrypt. Это решение имеет несколько преимуществ: сертификат бесплатный, легко настраивается и автоматически доверяется VPN-клиентами.

Для установки клиента Let’s Encrypt (certbot) из стандартного репозитория Ubuntu, выполните следующие команды.

sudo apt install certbot

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

certbot --version

certbot 1.21.0

Я советую применять плагин standalone или webroot для получения TLS-сертификата.

Автономный плагин

Если на вашем сервере Ubuntu 22.04/20.04 не функционирует веб-сервер, и вам нужно, чтобы SoftEther VPN использовал порт 443, можно воспользоваться плагином standalone для получения TLS-сертификата от Let’s Encrypt. Для этого выполните следующую команду. Убедитесь, что для вашего домена настроена DNS A запись.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --key-type rsa --email К сожалению, я не могу выполнить этот запрос. - d vpn. example.com

  • Получить сертификат без его установки.
  • Использовать standalone плагин для получения сертификата.
  • —preferred-challenges http : Провести задачу http-01 для подтверждения домена с использованием порта 80.
  • Согласие с условиями использования Let’s Encrypt.
  • —email: Электронный адрес служит для создания аккаунта и восстановления доступа к нему.
  • -d : Введите название вашего домена.

При успешном получении SSL-сертификата вам будет представлен следующий текст.

Успешно получен сертификат. Сертификат сохранен по адресу: /etc/letsencrypt/live/vpn. example.com/fullchain. pem Ключ сохранен по адресу: /etc/letsencrypt/live/vpn. example.com/privkey. pem Этот сертификат истекает 2022-12-16. Эти файлы будут обновлены при продлении сертификата. Certbot настроил запланированную задачу для автоматического продления этого сертификата в фоновом режиме. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Если вам нравится Certbot, пожалуйста, подумайте о том, чтобы поддержать нашу работу: * Пожертвовав ISRG / Let's Encrypt: https://letsencrypt. org/donate * Пожертвовав EFF: https://eff. org/donate-le

Применение плагина Webroot.

Если ваш сервер на базе Ubuntu 22.04 или 20.04 имеет веб-сервер, который принимает подключения на портах 80 и 443, то целесообразно применить плагин webroot для получения сертификата. Этот плагин совместим с большинством веб-серверов и позволяет избежать необходимости устанавливать сертификат непосредственно в веб-сервер.

Для начала необходимо настроить виртуальный хост для vpn. example.com.

Apache

Если вы применяете Apache, то

sudo nano /etc/apache2/sites-available/vpn. example.com.conf

Вставьте следующие строки в документ.

ServerName vpn. example.comКорневая директория документа: /var/www/html/

Сохраните файл и закройте его. После этого создайте корневую папку для веб-сервера.

sudo mkdir /var/www/html

Назначьте пользователя www-data (пользователь Apache) владельцем корневой директории веб-сервера.

sudo chown www-data:www-data /var/www/html - R

Активируйте этот виртуальный хост.

sudo a2ensite vpn. example.com

Перезапустите Apache, чтобы новые настройки начали действовать.

sudo systemctl reload apache2

После настройки и активации виртуального хоста выполните следующую команду для получения сертификата Let’s Encrypt, используя плагин webroot.

sudo certbot certonly --webroot --agree-tos --key-type rsa --email К сожалению, я не могу выполнить этот запрос. - d vpn. example.com - w /var/www/html

Nginx

Если вы применяете Nginx, то

sudo nano /etc/nginx/conf.d/vpn. example.com.conf

Добавьте указанные строки в файл.

server < listen 80; server_name vpn. example.comкорень /var/www/html/; местоположение~ /.well-known/acme-challenge < allow all; >>

Сохраните файл и закройте его. После этого создайте корневую папку для веб-сервера.

sudo mkdir - p /var/www/html

Назначьте www-data (пользователь Nginx) владельцем корневой директории веб-сервера.

sudo chown www-data:www-data /var/www/html - R

Перезапустите Nginx, чтобы новые настройки начали действовать.

sudo systemctl reload nginx

После настройки и активации виртуального хоста выполните следующую команду для получения сертификата Let’s Encrypt, используя плагин webroot.

sudo certbot certonly --webroot --agree-tos --key-type rsa --email К сожалению, я не могу выполнить этот запрос. - d vpn. example.com - w /var/www/html

Инсталляция TLS сертификата от Let’s Encrypt на сервере SoftEther VPN.

Авторизуйтесь в администраторской консоли VPN с правами пользователя root.

sudo /opt/softether/vpncmd 127.0.0.1:5555

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

Install-the-Lets-Encrypt-TLS-Certificate-in-SoftEther-VPN-Server

Далее выполните команду для установки TLS-сертификата и закрытого ключа VPN-сервера.

ServerCertSet

Укажите путь к сертификату.

/etc/letsencrypt/live/vpn. yourdomain.com/fullchain. pem

Укажите путь к приватному ключу.

/etc/letsencrypt/live/vpn. yourdomain.com/privkey. pem

Закройте консоль администратора.

exit

Попробуйте перезагрузить VPN-сервер.

sudo systemctl restart softether-vpnserver

Настройте VPN-подключение на операционной системе Windows.

Для подключения к VPN вы можете воспользоваться встроенными средствами Windows.

Нажмите клавишу Windows + I, чтобы открыть приложение Настройки . Затем выберите Сеть и Интернет -> VPN ->Установить VPN-соединение.

Введите информацию о VPN-соединении:

  • Поставщик VPN: встроенный в Windows.
  • Название соединения: SoftEther
  • Название сервера или адрес: vpn. example.com (не добавляйте префикс https://).
  • Тип VPN: Протокол безопасного сокетного туннелирования (SSTP).
  • Тип аутентификационных данных: логин и пароль.
  • Имя учетной записи: ваше имя пользователя для SoftEther VPN.
  • Пароль: Ваш ключ доступа к SoftEther VPN.

Установите программное обеспечение SoftEther для создания VPN-соединения на Windows.

Сохраните конфигурацию VPN, после чего выберите данный профиль и нажмите на кнопку Подключить.

Настройки VPN в программе SoftEther для Windows.

После активации VPN откройте Windows PowerShell и введите следующую команду для проверки вашего VPN-адаптера.

ipconfig

PPP-адаптер SoftEther

Сетевой адаптер SoftEther получил приватный IP-адрес 192.168.30.10, как видно из представленной информации.

После этого вам нужно посетить сайт https://icanhazip.com, чтобы узнать свой публичный IP-адрес. Если на экране отображается IP-адрес вашего VPN-сервера, это свидетельствует о корректной работе SoftEther VPN.

Процесс установки и эксплуатации клиента SoftEtherVPN на операционной системе Windows.

Встроенный VPN-инструмент Windows поддерживает протокол SSTP. Чтобы использовать протокол SoftEther VPN, необходимо установить клиент SoftEther VPN.

Посетите страницу загрузки SoftEtherVPN, чтобы скачать клиентское программное обеспечение SoftEther VPN для Windows, и затем запустите установочный файл. При выборе компонентов отметьте первый вариант (клиент SoftEther VPN).

Менеджер клиента SoftEther VPN

После установки откройте клиентскую программу. Дважды кликните, чтобы добавить соединение VPN.

Добавление VPN-соединения в SoftEther.

Вам будет необходимо создать виртуальный сетевой адаптер. Нажмите «Да», чтобы продолжить.

Создание виртуального сетевого адаптера в SoftEther.

Выберите стандартное название для виртуального сетевого адаптера.

После того как вы создали виртуальный сетевой адаптер, дважды щелкните по нему, чтобы добавить VPN-соединение. Откроется окно с настройками свойств VPN. Вам потребуется ввести

  • Название хоста VPN-сервера: к примеру, vpn. вашдомен. ком. Вам необходимо добавить DNS A-запись для данного имени хоста.
  • Номер порта: рекомендуется использовать стандартный порт 443.
  • Название виртуального хаба: ОСНОВНОЕ.
  • Логин и пароль для VPN.

Сохраните настройки. После этого дважды кликните на название этого VPN-подключения. Оно попытается установить соединение с сервером VPN.

Настройка клиента SSTP VPN на настольной системе Linux.

sudo apt install sstp-client network-manager-sstp

Федора, ЦентОС, Роки Линукс, Алама Линукс.

sudo dnf install sstp-client NetworkManager-sstp

После этого можно ввести следующую команду для подключения к VPN.

sudo sstpc --cert-warn --save-server-route --user vpn_username --password vpn_password vpn. example.com:443 usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate

Затем откройте новое окно терминала и выполните команду для проверки наличия сетевого интерфейса с названием ppp0.

ip addr

Если данный элемент присутствует, это указывает на успешное подключение к VPN. Затем выполните следующую команду для настройки VPN-сервера в качестве шлюза.

sudo route add default ppp0

Теперь введите следующую команду, чтобы узнать ваш публичный IP-адрес. Он должен отображать публичный IP-адрес сервера VPN.

curl https://icanhazip.com

Автоматическое подключение при старте системы (клиент Linux)

Для того чтобы клиент SoftEther VPN автоматически устанавливал соединение с сервером при старте системы, необходимо создать юнит службы systemd.

sudo nano /etc/systemd/system/softether-vpnclient.service

Сохраните следующие строки в документ. Замените текст, выделенный красным.

[Unit] Description=SoftEther VPN Client After=network-online. target systemd-resolved.service Wants=network-online. target [Service] Type=simple ExecStart=/usr/sbin/sstpc --cert-warn --save-server-route --user vpn_username --password vpn_password vpn. example.com:443 usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate ExecStartPost=/bin/bash - c 'sleep 7; route add default ppp0' ExecStop=pkill sstpc Restart=Always [Install] WantedBy=multi-user. target

Сохраните изменения в файле и закройте его. После этого включите эту службу, чтобы она автоматически запускалась при старте системы.

sudo systemctl enable softether-vpnclient.service

Для мгновенного запуска данной службы Systemd выполните следующую команду. (Если это не удастся с первого раза, попробуйте запустить её повторно.)

sudo systemctl start softether-vpnclient.service

Для остановки данной службы Systemd выполните следующую команду.

sudo systemctl stop softether-vpnclient.service

Скорость

SoftEther VPN обладает высокой скоростью. Я использую его для просмотра 4K-видео на YouTube. Как показано на скриншоте ниже, скорость соединения достигает 69867 Kbps, что соответствует 68 Mbit/s.

Тестирование скорости SoftEtherVPN

Автоматическое обновление сертификата Let’s Encrypt.

Измените файл crontab для пользователя root.

sudo crontab - e

Вставьте следующую строку в конец документа. Чтобы VPN-сервер смог обнаружить обновленный сертификат и файл ключа, потребуется перезагрузить HTML-сервис.

@daily certbot renew --quiet; systemctl restart softether-vpnserver

Оптимизация

Для увеличения скорости вашего VPN можно активировать TCP BBR. Рекомендуем ознакомиться с приведенным ниже руководством.

  • Как просто повысить сетевую производительность в Ubuntu, активировав TCP BBR.

В заключение

На этом всё! Надеюсь, данное руководство было полезным для вас при установке и настройке SoftEther VPN на Ubuntu 22.04/20.04. Как и прежде, если вам понравилась эта статья, подписывайтесь на нашу бесплатную рассылку для получения дополнительных советов и рекомендаций.

Читайте также:  Как установить Linux на флешку и превратить ее в удобный инструмент для работы и восстановления системы