WireGuard „przyjdzie” do jądra Linuksa - dlaczego?

Pod koniec lipca zaproponowali twórcy tunelu WireGuard VPN zestaw łatek, co uczyni ich oprogramowanie do tunelowania VPN częścią jądra Linuksa. Dokładna data realizacji „pomysłu” pozostaje jednak nieznana. Poniżej cięcia omówimy to narzędzie bardziej szczegółowo.

WireGuard „przyjdzie” do jądra Linuksa - dlaczego?
/ zdjęcie Tambako Jaguar CC

Krótko o projekcie

WireGuard to tunel VPN nowej generacji stworzony przez Jasona A. Donenfelda, dyrektora generalnego Edge Security. Projekt został opracowany jako uproszczony i szybka alternatywa dla OpenVPN i IPsec. Pierwsza wersja produktu zawierała zaledwie 4 tysiące linii kodu. Dla porównania OpenVPN ma około 120 tys. linii, a IPSec – 420 tys.

Na zgodnie z programistów, WireGuard jest łatwy w konfiguracji i zapewnia bezpieczeństwo protokołu poprzez sprawdzone algorytmy kryptograficzne. Podczas zmiany sieci: Wi-Fi, LTE lub Ethernet muszą za każdym razem ponownie łączyć się z serwerem VPN. Serwery WireGuard nie przerywają połączenia, nawet jeśli użytkownik otrzymał nowy adres IP.

Pomimo faktu, że WireGuard został pierwotnie zaprojektowany dla jądra Linuksa, twórcy pod opieką oraz o przenośnej wersji narzędzia na urządzenia z systemem Android. Aplikacja nie jest jeszcze w pełni rozwinięta, ale możesz ją wypróbować już teraz. Do tego potrzebujesz zostań jednym z testerów.

Ogólnie rzecz biorąc, WireGuard jest dość popularny, a nawet był wdrożone kilku dostawców VPN, takich jak Mullvad i AzireVPN. Opublikowano w Internecie duża liczba przewodniki konfiguracji ta decyzja. Na przykład, są przewodniki, które są tworzone przez użytkowników i istnieją przewodniki, przygotowane przez autorów projektu.

Dane techniczne

В oficjalna dokumentacja (s. 18) zauważono, że przepustowość WireGuard jest czterokrotnie większa niż OpenVPN: odpowiednio 1011 Mbit/s w porównaniu do 258 Mbit/s. WireGuard wyprzedził także standardowe rozwiązanie dla Linux IPsec - ma 881 Mbit/s. Przewyższa go także pod względem łatwości konfiguracji.

Po wymianie kluczy (inicjowanie połączenia VPN podobnie jak SSH) i nawiązaniu połączenia WireGuard samodzielnie radzi sobie ze wszystkimi innymi zadaniami: nie ma potrzeby martwić się o routing, kontrolę stanu itp. Dodatkowe wysiłki konfiguracyjne zostaną jedynie wymagane, jeśli chcesz używać szyfrowania symetrycznego.

WireGuard „przyjdzie” do jądra Linuksa - dlaczego?
/ zdjęcie Andersa Hojbjerg’a CC

Do instalacji potrzebna będzie dystrybucja z jądrem Linux starszym niż 4.1. Można go znaleźć w repozytoriach głównych dystrybucji Linuksa.

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

Jak zauważają redaktorzy xakep.ru, samodzielne składanie z tekstów źródłowych jest również łatwe. Wystarczy otworzyć interfejs i wygenerować klucze publiczne i prywatne:

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

WireGuard nie używa interfejs do współpracy z dostawcą kryptowalut KryptoAPI. Zamiast tego używany jest szyfr strumieniowy ChaCha20, kryptograficzne imitująca wstawka Poly1305 i zastrzeżone funkcje skrótu kryptograficznego.

Tajny klucz jest generowany za pomocą Protokół Diffiego-Hellmana w oparciu o krzywą eliptyczną Curve25519. Podczas mieszania używają funkcje skrótu BLAKE2 и SipHash. Ze względu na format znacznika czasu TAI64N protokół odrzuca w ten sposób pakiety z mniejszą wartością znacznika czasu zapobieganie DoS- и powtarzanie ataków.

W tym przypadku WireGuard używa funkcji ioctl do sterowania wejściami/wyjściami (wcześniej używana netlink), co sprawia, że ​​kod jest czystszy i prostszy. Możesz to sprawdzić, patrząc kod konfiguracyjny.

Plany deweloperskie

Na razie WireGuard jest modułem jądra spoza drzewa. Ale autorem projektu jest Jason Donenfeld mówi, że przyszedł czas na pełną implementację w jądrze Linuksa. Ponieważ jest prostsze i bardziej niezawodne niż inne rozwiązania. Jasona pod tym względem obsługuje nawet sam Linus Torvalds nazwał kod WireGuard „dziełem sztuki”.

Ale nikt nie mówi o dokładnych datach wprowadzenia WireGuarda do jądra. I ledwie stanie się to wraz z wydaniem sierpniowego jądra Linuksa 4.18. Istnieje jednak możliwość, że stanie się to w najbliższej przyszłości: w wersji 4.19 lub 5.0.

Po dodaniu WireGuard do jądra programiści chcę sfinalizuj aplikację na urządzenia z systemem Android i rozpocznij pisanie aplikacji na iOS. W planach jest także dokończenie wdrożeń w Go i Rust oraz przeniesienie ich na macOS, Windows i BSD. Planowane jest także wdrożenie WireGuard dla bardziej „egzotycznych systemów”: DPDK, FPGAoraz wiele innych ciekawych rzeczy. Wszystkie są wymienione w Lista rzeczy do zrobienia autorzy projektu.

PS Jeszcze kilka artykułów z naszego firmowego bloga:

Głównym kierunkiem naszej działalności jest świadczenie usług chmurowych:

Infrastruktura wirtualna (IaaS) | Hosting PCI DSS | Chmura FZ-152 | Hosting SAP | Wirtualny magazyn | Szyfrowanie danych w chmurze | Magazyn w chmurze

Źródło: www.habr.com

Dodaj komentarz