Этот справочник научит вас запускать личный VPN-сервер, устанавливая SoftEther VPN на Ubuntu 22.04/20.04. SoftEther VPN — это программа с открытым исходным кодом, поддерживающая различные протоколы, которая предоставляет возможность пользователям подключаться к удаленной сети.
Содержание статьи
- 1 Зачем настраивать собственный VPN-сервер?
- 2 Характерные черты SoftEther VPN
- 3 Требования
- 4 Формирование службы Systemd
- 5 Разрешение портов в межсетевом экране
- 6 Конфигурация сервера SoftEther VPN.
- 7 Настройте DNS-резольвер на сервере.
- 8 Оформите надежный TLS-сертификат через Let’s Encrypt.
- 9 Инсталляция TLS сертификата от Let’s Encrypt на сервере SoftEther VPN.
- 10 Настройте VPN-подключение на операционной системе Windows.
- 11 Процесс установки и эксплуатации клиента SoftEtherVPN на операционной системе Windows.
- 12 Настройка клиента SSTP VPN на настольной системе Linux.
- 13 Автоматическое подключение при старте системы (клиент Linux)
- 14 Скорость
- 15 Автоматическое обновление сертификата Let’s Encrypt.
- 16 Оптимизация
- 17 В заключение
Зачем настраивать собственный VPN-сервер?
- Возможно, вы являетесь поставщиком VPN-услуг или системным администратором и вам требуется настроить свой собственный VPN-сервер.
- Вы не доверяете заявленной политике VPN-провайдеров о неведении логов и предпочитаете вариант с самостоятелным хостингом.
- VPN может быть применен для реализации сетевых мер безопасности. Например, при управлении собственным почтовым сервером можно настроить политику, требующую входа пользователей исключительно с IP-адреса VPN, добавив его в белый список в настройках брандмауэра. Это обеспечит дополнительную защиту вашего почтового сервера от несанкционированного доступа.
- Возможно, вам любопытно разобраться, как функционирует VPN-сервер.

Характерные черты 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

Для обеспечения порядка и чистоты в файловой системе следует перенести директорию 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-сервер.

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

Теперь нам следует сконфигурировать виртуальный хаб в 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, чтобы пропустить этот шаг.
- Сохранить журнал: да.

Чтобы покинуть консоль администратора, выполните следующее.
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
Вставьте следующие строки в документ.
Сохраните файл и закройте его. После этого создайте корневую папку для веб-сервера.
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-сервером. Для этого потребуется ввести пароль, который был установлен на втором этапе.

Далее выполните команду для установки 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.

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

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

Сетевой адаптер 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).

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

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

Выберите стандартное название для виртуального сетевого адаптера.
После того как вы создали виртуальный сетевой адаптер, дважды щелкните по нему, чтобы добавить 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.

Автоматическое обновление сертификата 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. Как и прежде, если вам понравилась эта статья, подписывайтесь на нашу бесплатную рассылку для получения дополнительных советов и рекомендаций.

