Co to jest WireGuard?

WireGuard to nowoczesny, wydajny protokół VPN zaprojektowany z myślą o prostocie i szybkości. W przeciwieństwie do starszych protokołów, takich jak OpenVPN czy IPsec, WireGuard wykorzystuje najnowocześniejszą kryptografię (Curve25519 do wymiany kluczy, ChaCha20 do szyfrowania i Poly1305 do uwierzytelniania) i działa z minimalnym kodem — około 4000 linii w porównaniu do setek tysięcy w rozwiązaniach przestarzałych. Ten oszczędny projekt ułatwia audyt, przyspieszą nawiązywanie połączeń i jest bardziej niezawodny w przypadku zmian sieci, takich jak przełączanie się między Wi-Fi a danymi mobilnymi.

WireGuard działa poprzez tworzenie zaszyfrowanych tuneli punkt-punkt między serwerem a jednym lub większą liczbą klientów. Każda strona posiada klucz prywatny i zna klucz publiczny swoich partnerów. Po skonfigurowaniu ruch przepływa przez tunel bezproblemowo, a protokół automatycznie obsługuje uścisk dłoni, rotację kluczy i pakiety keepalive.

Opis narzędzia

To narzędzie generuje gotowe do użytku pliki konfiguracyjne WireGuard zarówno po stronie serwera, jak i klienta. Automatycznie tworzy kryptograficznie ważne pary kluczy X25519, buduje prawidłowo sformatowane pliki .conf i umożliwia zarządzanie wieloma klientami z jednego interfejsu. Możesz pobrać każdy plik konfiguracyjny bezpośrednio lub zeskanować kod QR w celu szybkiej konfiguracji urządzenia mobilnego.

Przykłady

Wyjście konfiguracji serwera:

[Interface]
PrivateKey = aGVsbG93b3JsZC4uLi4uLi4uLi4uLi4uLi4uLi4=
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
SaveConfig = true

[Peer]
PublicKey = Y2xpZW50cHVibGlja2V5Li4uLi4uLi4uLi4uLi4=
AllowedIPs = 10.0.0.2/32

Wyjście konfiguracji klienta:

[Interface]
PrivateKey = Y2xpZW50cHJpdmF0ZWtleS4uLi4uLi4uLi4uLi4=
Address = 10.0.0.2/32
DNS = 1.1.1.1, 1.0.0.1

[Peer]
PublicKey = c2VydmVycHVibGlja2V5Li4uLi4uLi4uLi4uLi4=
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Funkcje

  • Generuje kryptograficznie ważne pary kluczy X25519 bezpośrednio w przeglądarce przy użyciu Curve25519
  • Tworzy pliki .conf do pobrania zarówno dla serwera, jak i wszystkich klientów
  • Wyświetla kody QR dla konfiguracji klientów, umożliwiając natychmiastową konfigurację urządzeń mobilnych
  • Obsługuje wielu klientów z automatycznym przydzielaniem adresów IP
  • Konfigurowalne MTU, hooki PostUp/PostDown, DNS i PersistentKeepalive dla każdego klienta

Wyjaśnienie opcji

  • Nazwa serwera — etykieta używana w komentarzu pliku konfiguracyjnego i nazwie pliku do pobrania
  • Port serwera — port UDP, na którym WireGuard nasłuchuje (domyślnie: 51820)
  • Adres IP serwera — adres podsieci VPN dla interfejsu serwera (np. 10.0.0.1/24)
  • Endpoint serwera — publiczna nazwa hosta lub IP oraz port, z którymi łączą się klienci
  • MTU — rozmiar maksymalnej jednostki transmisji; pozostaw puste, aby użyć domyślnego systemu (zwykle 1420)
  • PostUp / PostDown — polecenia shell wykonywane po włączeniu lub wyłączeniu interfejsu (powszechnie używane dla reguł NAT iptables)
  • Allowed IPs — zakresy IP, które klient kieruje przez tunel; 0.0.0.0/0, ::/0 kieruje cały ruch
  • DNS — serwery DNS, które klient używa podczas połączenia
  • PersistentKeepalive — interwał w sekundach dla pakietów keepalive, przydatny dla klientów za NAT (domyślnie: 25)

Przypadki użycia

  • Konfiguracja samodzielnie hostowanego serwera VPN na instancji w chmurze w celu szyfrowania całego ruchu z laptopów i telefonów
  • Łączenie zdalnych sieci biurowych poprzez bezpieczny tunel WireGuard typu site-to-site
  • Generowanie konfiguracji klientów z kodami QR w celu szybkiego wdrażania członków zespołu lub urządzeń mobilnych