ProHoster > WireGuard «прыйдзе» ў ядро Linux – чаму?
WireGuard «прыйдзе» ў ядро Linux – чаму?
У канцы ліпеня распрацоўшчыкі VPN-тунэля WireGuard прапанавалі набор патчаў, якія зробяць іх ПА для арганізацыі VPN-тунэляў часткай ядра Linux. Аднак дакладная дата рэалізацыі "задумкі" пакуль застаецца невядомай. Пад катом пагаворым аб гэтай прыладзе падрабязней.
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-прылад. Прыкладанне пакуль недапрацавана, аднак паспрабаваць яго ў справе можна ўжо зараз. Для гэтага трэба стаць адным з тэстараў.
В афіцыйнай дакументацыі (стр.18) адзначана, што прапускная здольнасць у WireGuard у чатыры разы вышэй, чым у OpenVPN: 1011 Мбіт/з супраць 258 Мбіт/з адпаведна. WireGuard апярэджвае і стандартнае рашэнне для Linux IPsec у таго 881 Мбіт/с. Пераўзыходзіць ён яго і па прастаце налады.
Пасля абмену ключамі (VPN-падлучэнне ініцыялізуецца амаль як у SSH) і ўсталяванні злучэння WireGuard самастойна вырашае ўсе астатнія задачы: няма неабходнасці турбавацца маршрутызацыі, кантролі стану і інш. Дадатковыя высілкі на наладу спатрэбіцца прыкласці толькі ў тым выпадку, калі жадаецца задзейнічаць сіметрычнае шыфраванне.
Як адзначаюць рэдактары xakep.ru, самастойная зборка з зыходных тэкстаў таксама нескладаная. Досыць падняць інтэрфейс і згенераваць адчынены і зачынены ключы:
$ sudo ip link add dev wg0 type wireguard
$ wg genkey | tee privatekey | wg pubkey > publickey
WireGuard не выкарыстоўвае інтэрфейс для працы з крыптаправайдэрам CryptoAPI. Замест яго выкарыстоўваецца струменевы шыфр. ChaCha20, крыптаграфічная імітаўстаўка Poly1305 і ўласныя крыптаграфічныя хэш-функцыі.
Пры гэтым WireGuard задзейнічае функцыю ioctl для кантролю ўводу/высновы (раней выкарыстоўваўся сеткавая спасылка), што робіць код чысцей і прасцей. Пераканацца ў гэтым можна, зазірнуўшы ў код канфігурацыі.
Планы распрацоўшчыкаў
Пакуль што WireGuard – гэта out-of-tree модуль ядра. Але аўтар праекта Джэйсан Даненфельд кажа, што ўжо надышоў час для паўнавартаснай рэалізацыі ў ядры Linux. Бо ён прасцей і надзейней іншых рашэнняў. Джэйсана ў гэтым плане падтрымлівае нават сам Лінус Торвальдс - ён назваў код WireGuard "творам мастацтва".
Але аб дакладных датах укаранення WireGuard у ядро пакуль ніхто не кажа. І наўрад ці гэта здарыцца з выхадам жнівеньскага Linux kernel 4.18. Аднак ёсць верагоднасць, што гэта адбудзецца ў найбліжэйшай будучыні: у версіі 4.19 ці 5.0.
Калі WireGuard будзе дададзены ў ядро, распрацоўшчыкі хочуць дапрацаваць прыкладанне для Android-прылад і пачаць пісаць прыкладанне пад iOS. Акрамя таго, плануецца завяршыць рэалізацыі на Go і Rust і партаваць іх на macOS, Windows і BSD. Таксама плануецца рэалізацыя WireGuard для больш "экзатычных сістэм": ДПДК, FPGA, а таксама мноства іншых забаўных рэчаў. Усе яны пералічаны ў to-do-спісе аўтараў праекту.
PS Яшчэ некалькі артыкулаў з нашага карпаратыўнага блога: