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 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.
В 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.
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.
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: