WireGuard „ще дойде“ в ядрото на Linux — защо?

В края на юли разработчиците на VPN тунела WireGuard предложиха набор от пачове, които ще направят техния софтуер за организиране на VPN тунели част от ядрото на Linux. Обаче точната дата за реализиране на "замисъла" все още остава неизвестна. Под кат ще говорим за този инструмент по-подробно.

WireGuard „ще дойде“ в ядрото на Linux — защо?
/ фото Tambako The Jaguar CC

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

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

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

Въпреки че WireGuard първоначално е проектиран за ядро на Linux, разработчиците помислиха и за портативна версия на инструмента за Android устройства. Приложението все още не е завършено, но вече може да се опита в действие. За целта е необходимо да станете един от тестерите..

Като цяло WireGuard е доста популярен и дори е е реализиран приет от няколко VPN доставчици, например Mullvad и AzireVPN. В интернет е публикувано голямо количество ръководства за настройка на това решение. Например, има гайдове,, които създават потребителите, а има и гайдове, приготвени от авторите на проекта..

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

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

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

WireGuard „ще дойде“ в ядрото на Linux — защо?
/ фото Андес Хойбйерг CC

За инсталиране ще е необходима дистрибуция с ядро на Linux „по-стара“ от 4.1. Можете да я намерите в хранилищата на основните дистрибуции на 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 и собствени криптографски хеш-функции.

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

При това WireGuard използва функцията ioctl за контрол на входа/изхода (по-рано се използваше Netlink), което прави кода по-чист и прост. Можете да се уверите в това, като погледнете конфигурационния код.

Плановете на разработчиците

Засега WireGuard е out-of-tree модул на ядрото. Но авторът на проекта Джейсън Доненфелд казва, вярва, че времето е дошло за пълна реализация в ядрото на Linux. Тъй като е по-просто и надеждно от другите решения. Джейсън в това отношение поддържа дори самият Линус Торвалдс — той нарече кода на WireGuard "произведение на изкуството".

Но за точните дати на внедряване на WireGuard в ядрото за сега никой не говори. И едва ли това ще се случи с излизането на августовското ядро на Linux 4.18. Въпреки това, вероятността това да се случи в най-близко бъдеще: в версия 4.19 или 5.0.

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

P.S. Още няколко статии от нашия корпоративен блог:

Основната насока на нашата дейност е предоставянето на облачни услуги:

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

Източник: habr.com

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster