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". Сделать это можно в веб-конфигураторе на странице "Общие настройки" в разделе "Обновления и компоненты", нажав на "Изменить набор компонентов".
После этого раздел "WireGuard" появится на странице "Другие подключения".
Для самостоятельной настройки WireGuard-интерфейса нажмите на кнопку "Добавить подключение". В данной статье мы не будем рассматривать параметры настройки подключения, они подробно показаны в инструкции:
Настройка WireGuard VPN между двумя роутерами Keenetic (в этой статье представлен пример настройки VPN-сервера)
Помимо самостоятельной настройки подключения, вы можете импортировать настройки WireGuard-интерфейса из предварительно созданного файла конфигурации. Для этого нажмите на кнопку "Загрузить из файла" и затем укажите путь к предварительно сконфигурированному файлу на компьютере.
Основные принципы работы WireGuard VPN
Каждый 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
), главное чтобы он не блокировался интернет-провайдером и не совпадал с уже открытыми портами других сервисов на роутере.Затем нужно добавить пир(ы). Пиром (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!
В 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:
Или компьютеры на базе ОС Windows, Linux, macOS:
В некоторых случаях нужно, чтобы клиенты, подключенные к роутеру Keenetic по WireGuard, получали через данный VPN-туннель доступ в Интернет. Для этого потребуется на роутере выполнить дополнительную настройку из статьи: