WireGuard VPN

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

NOTE: Важно! Поддержка 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 можно подключиться к интернет-центру Keenetic, который работает в роли VPN-сервера и получить удаленный доступ к его локальной сети.

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

Адреса объединяемых сетей должны принадлежать разным подсетям!

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

wg-comp.png

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

wg.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 секунд между проверками.

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

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-клиента для объединения двух локальных сетей:

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

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

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

 

Была ли эта статья полезной?

Пользователи, считающие этот материал полезным: 98 из 128