Главная » Хабрахабр » 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 Интересное!

9 кругов автоматизации склада Lamoda

Наш склад размером с две Красные площади и высотой в 5 этажей работает круглый год и никогда не спит — 24/7 364 дня в году (единственный выходной — 1 января). У нас хранится и обслуживается более 8 000 000 товаров, ...

[Перевод] Каскадные SFU: улучшаем масштабируемость и качество медиа в WebRTC-приложениях

В развертывании медиасерверов для WebRTC есть две сложности: масштабирование, т.е. выход за рамки использования одного сервера и оптимизация задержек для всех пользователей конференции. В то время как простой шардинг в духе «отправить всех юзеров конференции X на сервер Y» легко ...