Руководство по настройке WireGuard на сервере SoftEther VPN

SoftEther – это продвинутое VPN-решение с поддержкой нескольких протоколов, включая WireGuard, OpenVPN, L2TP/IPsec, SSTP и другие. В этом руководстве мы сосредоточимся на настройке протокола WireGuard на сервере SoftEther VPN с помощью утилиты vpncmd, которая в данный момент является единственным поддерживаемым способом настройки WireGuard в SoftEther.

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

Предварительные требования

Перед началом убедитесь, что:

  • У вас запущен и обновлен сервер SoftEther VPN на ОС Linux. В данном руководстве используется SoftEther Version 5.02 Build 5185 на Ubuntu.
  • Сервер работает в standalone-режиме (то есть не является ни контроллером кластера, ни участником кластера), так как подключения WireGuard могут устанавливаться только на автономном сервере.
  • У вас есть административный доступ к серверу SoftEther и утилита vpncmd установлена локально или удалённо.
  • Существуют полностью настроенный виртуальный hub, который будет использоваться для подключения клиентов WireGuard.

Шаг 1: Настройка UDP-порта для WireGuard

Убедитесь, что вы обладаете правами администратора на VPN-сервере перед настройкой подключения WireGuard. Запустите утилиту vpncmd, выберите вариант №1 и войдите как Администратор:

./vpncmd

Чтобы проверить, ожидает ли ваш сервер SoftEther подключение на каком-либо UDP-порту, выполните следующую команду:

PortsUDPGet

Если ни один UDP-порт не активен, добавьте его с помощью команды ниже. Вы можете указать любой номер порта, при условии, что он не конфликтует с другими портами на вашем сервере Linux:

PortsUDPSet 51820

Примечание: Вы можете указать несколько портов, разделяя их запятыми. Убедитесь, что эти порты не блокируются брандмауэром или iptables вашего сервера.

Шаг 2: Установка шлюза и подсети для WireGuard

Поскольку WireGuard не поддерживает DHCP (использующий широковещательные сообщения, которые не работают в VPN-туннеле «точка-точка»), каждому клиенту (peer) необходимо вручную назначить статический IP-адрес для правильного шифрования и маршрутизации. Перейдите к вашему виртуальному хабу и задайте основной шлюз и маску подсети, которые будут использоваться вашими клиентами WireGuard со статическими адресами IP:

Hub myhub
SetStaticNetwork /GATEWAY=192.168.1.1 /SUBNET=255.255.255.0

Замените 192.168.1.1 и 255.255.255.0 на соответствующие IP-адрес шлюза и маску подсети — используйте те же значения, что и DHCP-сервер вашего хаба, выдаваемые подключенным клиентам. Проверьте правильность настройки хаба, выполнив команду:

OptionsGet myhub

Шаг 3: Включение протокола WireGuard

Хотя поддержка WireGuard обычно включена по умолчанию, убедитесь, что она активна, выполнив команду:

ProtoOptionsSet wireguard /NAME=enabled /VALUE=true

Шаг 4: Генерация и назначение ключей пользователей

WireGuard использует пары ключей X25519 для безопасной коммуникации. Вы можете сгенерировать их с помощью утилиты vpncmd или при помощи любого другого генератора ключей. В примере ниже ключи генерируются через vpncmd.

Выйдите из vpncmd и запустите его вновь, выбрав опцию №3, чтобы перейти в режим Tools. Затем выполните следующую команду для генерации пары ключей:

GenX25519

Утилита сгенерирует пару ключей – Private Key и Public Key. Скопируйте их и храните в безопасности. Если у вас несколько виртуальных хабов или пользователей, требующих подключения по WireGuard, сгенерируйте отдельную пару ключей для каждого пользователя на каждом хабе.

После генерации ключей войдите в vpncmd снова как администратор и назначьте Публичный ключ X25519 каждого пользователя соответствующему хабу:

WgkAdd "WFPFO/s8UXD6HNH+2P2UjfbkUP8BFITa7TXKculvDUk=" /HUB=myhub /USER=myuser

Замените WFPFO/s…ulvDUk=, myhub и myuser на вашу реальную строку публичного ключа пользователя, имя хаба и имя пользователя соответственно. Убедитесь, что такой пользователь существует в указанном хабе.

Теперь вы можете проверить, что ключи WireGuard добавлены корректно, выполнив команду:

WgkEnum

Шаг 5: Создание конфигурации клиента WireGuard

Ниже приведен пример конфигурационного файла. Скопируйте его в текстовый редактор и замените значения из примера на ваши реальные значения, о которых мы расскажем далее:

[Interface]
PrivateKey = WFPFO/s8UXD6HNH+2P2UjfbkUP8BFITa7TXKculvDUk=
Address = 192.168.1.15/32
DNS = 9.9.9.9,149.112.112.112

[Peer]
PublicKey = pbnWflgIl4CUqYkgZKrtQg/jMAyytyS/AufEt4OAq3Y=
PresharedKey = s/8eDb4r6BUtAMZEY8a+VC4Qs4HYzUJVqD8YzSNFzuk=
AllowedIPs = 0.0.0.0/0
Endpoint = 150.151.152.153:51820
PersistentKeepalive = 21

[Interface]

  • PrivateKey: Укажите private key (приватный ключ) из сгенерированной в Шаге 4 пары ключей X25519.
  • Address: Назначьте этому пользователю статический IP-адрес в вашем хабе. Убедитесь, что IP-адрес входит в диапазон статической сети и подсети, заданные на Шаге 2. WireGuard требует, чтобы IP-адрес оканчивался на /32 для обозначения одного хоста.
    Примечание: Если ваш виртуальный hub управляется DHCP-сервером, рекомендуется зарезервировать отдельный пул статических IP-адресов специально для подключений WireGuard, чтобы избежать конфликтов IP-адресов.
  • DNS: Укажите DNS-серверы, используемые в вашей сети. В этом примере используются серверы Quad9.

[Peer]

  • PublicKey: Введите public key (публичный ключ) вашего сервера. Сначала получите приватный ключ сервера командой:
    ProtoOptionsGet wireguard
    Скопируйте его и затем выполните следующую команду в режиме Tools утилиты vpncmd:
    GetPublicX25519 YourServerPrivateKey
    Замените YourServerPrivateKey на фактический приватный ключ вашего сервера.
  • PresharedKey: Получите preshared key, выполнив:
    ProtoOptionsGet wireguard
  • AllowedIPs: Установив AllowedIPs = 0.0.0.0/0, вы направляете весь IPv4-трафик через VPN-туннель, делая узел VPN (peer) шлюзом по умолчанию.
  • Endpoint: Укажите IP-адрес вашего сервера и UDP-порт (заданный на Шаге 1) вместо 150.151.152.153:51820.
  • PersistentKeepalive: Значение 21 заставляет клиента отправлять keepalive-пакеты каждые 21 секунду, что помогает сохранить соединение активным, особенно если клиент находится за NAT-ом или файрволом.

Настроив UDP-порт, шлюз и подсеть, включив протокол WireGuard, сгенерировав и назначив ключи, а также создав файл конфигурации клиента, вы сможете установить безопасное подключение к вашему виртуальному хабу SoftEther через WireGuard. После подключения проверьте, действительно ли ваш трафик направляется через туннель WireGuard к серверу SoftEther.

FAQ

SoftEther VPN – это бесплатное VPN с открытым исходным кодом, поддерживающее несколько протоколов (SSL-VPN, L2TP/IPsec, OpenVPN, SSTP, WireGuard) для безопасного подключения на разных платформах. Благодаря своей эффективной архитектуре и надёжному шифрованию оно обеспечивает высокую производительность и стабильный удалённый доступ как для частных пользователей, так и для организаций.
WireGuard – это современный высокопроизводительный VPN-протокол с сильным шифрованием. SoftEther позволяет настраивать подключения WireGuard через утилиту vpncmd на автономных (standalone) серверах.
Запустите vpncmd в режиме администратора, проверьте UDP-порты с помощью команды ‘PortsUDPGet’ и установите порт (например, ‘PortsUDPSet 51820’), чтобы включить соединения WireGuard.
Из-за того, что WireGuard не поддерживает DHCP (зависящий от широковещательных сообщений), каждому клиенту нужно задавать IP вручную. Использование /32 обеспечивает точную и безопасную маршрутизацию.
Используйте режим Tools в vpncmd, запустив команду ‘GenX25519’, чтобы сгенерировать пару ключей X25519; затем назначьте публичный ключ hub’у с помощью ‘WgkAdd’.
Сначала получите приватный ключ сервера командой ‘ProtoOptionsGet wireguard’, затем создайте соответствующий публичный ключ, выполнив ‘GetPublicX25519’ в режиме Tools утилиты vpncmd.
Убедитесь, что правильно задан UDP-порт, статические IP-адреса соответствуют настройкам вашего hub SoftEther, ключи корректно сгенерированы/назначены и сервер работает в режиме standalone.
Избегайте неправильной конфигурации UDP-портов, игнорирования требований статической сети для WireGuard, использования некорректных пар ключей и запуска сервера в режиме кластера вместо standalone.