Главная » Хабрахабр » WireGuard «придет» в ядро Linux — почему?

WireGuard «придет» в ядро Linux — почему?

В конце июля разработчики VPN-туннеля WireGuard предложили набор патчей, которые сделают их ПО для организации VPN-туннелей частью ядра Linux. Однако точная дата реализации «задумки» пока остается неизвестной. Под катом поговорим об этом инструменте подробнее.


/ фото Tambako The Jaguar CC

Кратко о проекте

WireGuard — VPN-туннель нового поколения, созданный Джейсоном Доненфельдом (Jason A. Donenfeld), главой компании Edge Security. Проект разрабатывался как упрощенная и шустрая альтернатива OpenVPN и IPsec. Первая версия продукта содержала всего 4 тыс. строк кода. Для сравнения, в OpenVPN порядка 120 тыс. строк, а в IPSec — 420 тыс.

При смене сети: Wi-Fi, LTE или Ethernet нужно каждый раз переподключаться к VPN-серверу. По словам разработчиков, WireGuard несложно настроить, а безопасность протокола достигается за счет проверенных криптографических алгоритмов. Серверы WireGuard же не разрывают соединение, даже если пользователь получил новый IP-адрес.

Приложение пока недоработано, однако попробовать его в деле можно уже сейчас. Несмотря на то что WireGuard изначально заточен под Linux-ядро, разработчики позаботились и о портативной версии инструмента для Android-устройств. Для этого нужно стать одним из тестеров.

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

Технические подробности

В официальной документации (стр.18) отмечено, что пропускная способность у WireGuard в четыре раза выше, чем у OpenVPN: 1011 Мбит/с против 258 Мбит/с соответственно. WireGuard опережает и стандартное решение для Linux IPsec ― у того 881 Мбит/с. Превосходит он его и по простоте настройки.

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


/ фото Anders Hojbjerg CC

1. Для установки понадобится дистрибутив с ядром Linux «старше» 4. Его можно найти в репозиториях основных дистрибутивов Linux.

$ sudo add-apt-repository ppa:hda-me/wireguard
$ sudo apt update
$ sudo apt install wireguard-dkms wireguard-tools

Как отмечают редакторы xakep.ru, самостоятельная сборка из исходных текстов также несложна. Достаточно поднять интерфейс и сгенерировать открытый и закрытый ключи:

$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey

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

При хешировании задействуются хеш-функции BLAKE2 и SipHash. Секретный ключ генерируется с применением протокола Диффи — Хеллмана на базе эллиптической кривой Curve25519. За счет формата меток времени TAI64N протокол отбрасывает пакеты с меньшим значением timestamp, тем самым предотвращая DoS- и replay-атаки.

Убедиться в этом можно, заглянув в код конфигурации. При этом WireGuard задействует функцию ioctl для контроля ввода/вывода (раньше использовался Netlink), что делает код чище и проще.

Планы разработчиков

Пока что WireGuard — это out-of-tree модуль ядра. Но автор проекта Джейсон Доненфельд говорит, что уже настало время для полноценной реализации в ядре Linux. Так как он проще и надежнее других решений. Джейсона в этом плане поддерживает даже сам Линус Торвальдс — он назвал код WireGuard «произведением искусства».

И едва ли это случится с выходом августовского Linux kernel 4. Но о точных датах внедрения WireGuard в ядро пока никто не говорит. Однако есть вероятность, что это произойдет в самом ближайшем будущем: в версии 4. 18. 0. 19 или 5.

Кроме того, планируется завершить реализации на Go и Rust и портировать их на macOS, Windows и BSD. Когда WireGuard будет добавлен в ядро, разработчики хотят доработать приложение для Android-устройств и начать писать приложение под iOS. Все они перечислены в to-do-списке авторов проекта. Также планируется реализация WireGuard для более «экзотических систем»: DPDK, FPGA, а также множество других занятных вещей.

P.S. Ещё несколько статей из нашего корпоративного блога:

Основное направление нашей деятельности — предоставление облачных сервисов:

Виртуальная инфраструктура (IaaS) | PCI DSS хостинг | Облако ФЗ-152 | SAP-хостинг | Виртуальная СХД | Шифрование данных в облаке | Облачное хранилище


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Кеширование данных — Java Spring

Многократно вычитывая одни и те же данные, встает вопрос оптимизации, данные не меняются или редко меняются, это различные справочники и др. информация, т.е. функция получения данных по ключу — детерминирована. Тут наверно все понимают — нужен Кеш! Зачем всякий раз ...

Что умеет СХД — или старые песни о главном

Пару дней назад позвонили мне коллеги с вопросом — старая дисковая полка совсем умирает (у них старый еще IBM), чего делать? Дисков нет, поддержки нет, денег нет зовут Олег. Что покупать, куда бежать, как дальше жить? На хабре же, кроме ...