Skip to main content

Руководство пользователя

WireGuard VPN

WireGuard — бесплатное программное приложение с открытым исходным кодом, протокол виртуальной частной сети (VPN) для передачи данных в зашифрованном виде и создания безопасных соединений точка-точка.

Важно

Поддержка WireGuard VPN реализована для актуальных моделей Keenetic, начиная с выпусков KeeneticOS версии 3.3.

Отличия и преимущества протокола WireGuard в использовании современных, узкоспециализированных алгоритмов обработки данных. Кодовая база проекта написана с нуля и отличается компактностью исполнения.

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

Интернет-центр Keenetic может работать как VPN-сервер, так и VPN-клиент. В силу специфики протокола понятия "клиент" и "сервер" являются условными. Но обычно сервером называют устройство, которое ожидает подключения, а клиентом — устройство, которое инициирует подключение.

При подключении к VPN-серверу WireGuard на Keenetic в качестве VPN-клиента можно использовать: компьютер (на базе Windows, Linux, macOS), мобильное устройство (на базе Android и iOS) или интернет-центр Keenetic.

Используя VPN-клиент WireGuard на Keenetic можно подключиться к VPN-провайдеру, который предоставляет услугу VPN-подключения по протоколу WireGuard или к интернет-центру Keenetic, который работает в роли VPN-сервера и получить удаленный доступ к его локальной сети.

Важно

Если вы планируете настроить Keenetic в качестве VPN-сервера, начать необходимо с проверки того, что он имеет публичный "белый" IP-адрес, а при использовании сервиса KeenDNS, что он работает в режиме "Прямой доступ", для которого также требуется публичный IP-адрес. При несоблюдении любого из этих условий подключение к такому серверу из Интернета будет невозможно.

Для настройки защищенных туннелей по протоколу WireGuard в интернет-центре Keenetic нужно установить компонент системы "WireGuard VPN". Сделать это можно в веб-конфигураторе на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".

wireguard1-en.png

После этого раздел "WireGuard" появится на странице "Другие подключения".

wireguard2-en.png

Для самостоятельной настройки WireGuard-интерфейса нажмите на кнопку "Добавить подключение". В данной статье мы не будем рассматривать параметры настройки подключения,  они подробно показаны в инструкции:

Помимо самостоятельной настройки подключения, вы можете импортировать настройки WireGuard-интерфейса из предварительно созданного файла конфигурации. Для этого нажмите на кнопку "Загрузить из файла" и затем укажите путь к предварительно сконфигурированному файлу на компьютере.

Основные принципы работы WireGuard VPN
  1. Каждый WireGuard-туннель представляет собой системный интерфейс, работающий на третьем (сетевом) уровне модели OSI. Трафик в него можно маршрутизировать, а также возможны настройки политик доступа IP (сетевой экран).

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

    При создании WireGuard-интерфейса потребуется сформировать пару ключей шифрования — Приватный (Private / Закрытый) и Публичный (Public / Открытый) ключи, а также присвоить внутренний IP-адрес устройства в VPN-туннеле и на стороне VPN-сервера определить номер порта прослушивания.

    Приватный и Публичный ключи используются для защиты подключения. С помощью ключей осуществляется аутентификация участников. Публичный и приватный ключ — это пара ключей, создание (генерация) которых осуществляется одновременно. Криптографические алгоритмы предполагают совместное использование такой пары ключей. Оба ключа должны "подходить" к зашифрованной части информации. Например, если шифрование осуществляется приватным ключом, расшифровка может быть осуществлена только публичным ключом.

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

    Что касается внутреннего адреса интерфейса туннеля, это должен быть любой подходящий адрес из частного диапазона, но чтобы он не пересекался с другими подсетями на самом роутере. Этот IP-адрес указывается в формате IP/bitmask (например, 10.11.12.1/24). На VPN-клиенте и VPN-сервере должны быть установлены разные адреса, но из одной и той же подсети. Например, на сервере 172.16.82.1/24 и на клиенте 172.16.82.2/24

    На стороне VPN-сервера потребуется указать номер порта прослушивания, который будет использоваться для работы входящих подключений на WireGuard-интерфейсе. Номер порта можно указать произвольный (например, 16632), главное чтобы он не блокировался интернет-провайдером и не совпадал с уже открытыми портами других сервисов на роутере.

  2. Затем нужно добавить пир(ы). Пиром (Peer) называют участника или клиента данного соединения. В одном VPN-подключении можно создать несколько пиров, например, для подключения к VPN-серверу с разных компьютеров или мобильных устройств.

    Каждый пир однозначно характеризуется публичным ключем удаленной стороны. В настройках пира нужно будет указать публичный (Public / Открытый) ключ от устройства с другой стороны VPN-туннеля, внутренний IP-адрес туннеля и разрешенные подсети.

    Особенным параметром в настройках пира является набор разрешенных подсетей (Allowed IPs). Это адресные пространства, от которых данный пир может принимать трафик (IP-адреса источников), и к которым может трафик отправлять (IP-адреса назначений). Технологически эти адреса используются для непосредственно зашифровывания и декодирования трафика. Такая методика имеет название Crypto Routing и является фундаментальной особенностью WireGuard. Чтобы разрешить передачу на любые адреса, необходимо добавить подсеть 0.0.0.0/0

    На стороне VPN-клиента обязательно нужно указать публичный "белый" IP-адрес или доменное имя VPN-сервера WireGuard, и порт прослушивания, на который будет устанавливать связь VPN-клиент (например, myrouter01.keenetic.pro:16632). На VPN-клиентах обычно это поле называют Remote Endpoint.

    Также в настройках пира обязательно нужно указать интервал попыток проверки активности пира. Это внутренняя проверка доступности удаленной стороны соединения путем отправки в туннель пакетов keepalive. По умолчанию значение "Проверки активности" в настройках пира на Keenetic составляет 30 секунд, но обычно достаточно 10 или 15 секунд между проверками.

    Важно

    На стороне VPN-сервера параметр Persistent keepalive рекомендуется не использовать (оставьте пустое поле), чтобы после отключения клиента Wireguard-сервер не ожидал handshake'и с удаленным пиром.

    На сторона клиента, параметр Persistent keepalive  должен быть заполнен выбранным значением для корректной работы WireGuard VPN!

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

    Ключи шифрования назначаются списку IP-адресов VPN, разрешенных в туннеле. В сетевом интерфейсе разрешен доступ к списку IP-адресов. Когда сервер принимает и расшифровывает аутентифицированный пакет, проверяется его поле источника. Если оно соответствует тому, что указано в поле "Разрешенные подсети" (Allowed IPs) аутентифицированного пира, пакет принимается WireGuard-интерфейсом. При отправке исходящего пакета происходит проверка IP-адреса назначения, чтобы определить его легитимность, и на основании его выбирается соответствующий пир. Далее пакет подписывается своим ключом, шифруется ключом пира и отправляется на публичный адрес и порт пира (на Remote Endpoint). Все IP пакеты, приходящие на WireGuard-интерфейс инкапсулируются в UDP и безопасно доставляются другим пирам.

    В WireGuard пользовательские данные защищены при помощи современных типов криптографии: Curve25519 для обмена ключами, ChaCha20 для шифрования, Poly1305 для аутентификации данных, SipHash для хеш-ключей и BLAKE2 для хеширования.

    Процесс криптомаршрутизации (Crypto Routing) позволяет предоставить пользователю на выходе из интерфейса трафик, степень доверия к которому может достигать 100%, а также обеспечивает высокую безопасность и производительность.

Примеры настроек WireGuard-подключений

Подробная инструкция, в которой показаны настройки интернет-центра в роли VPN-сервера и VPN-клиента для объединения двух локальных сетей:

Для настройки подключения к VPN-провайдерам, которые предоставляют возможность работы с WireGuard, обратитесь к инструкции:

Для подключения к роутеру Keenetic по протоколу WireGuard можно использовать мобильные устройства на базе ОС Android и iOS:

Или компьютеры на базе ОС WindowsLinuxmacOS:

В некоторых случаях нужно, чтобы клиенты, подключенные к роутеру Keenetic по WireGuard, получали через данный VPN-туннель доступ в Интернет. Для этого потребуется на роутере выполнить дополнительную настройку из статьи: