WireGuard na OPNsense

Wstęp

WireGuard to bardzo szybki, ale jednocześnie bezpieczny protokół VPN. Zdobył uznanie za szybkość i bezpieczeństwo co może oznaczać, że będzie lepszą opcją niż IPsec/IKEv2 czy OpenVPN.

Został napisany z użyciem 4 000 wierszy kodu, w porównaniu do 100 000, jakie ma OpenVPN. Mniej wierszy kodu sprawia, że protokół WireGuard jest łatwiejszy w obsłudze, zapewnia lepsze prędkości i większą wydajność oraz jest mniej podatny na ataki.

Utworzenie instancji WireGuard

Od wersji 24.1 OPNsense ma zaimplementowany WireGuard w jądrze systemu i nie musisz go instalować jako plugin. Znajdziesz go w menu VPN -> WireGuard.

Powołaj nową instancję WireGuarda klikając na plusik w kolumnie Commands.

Podczas tworzenia nowej instancji podaj jej nazwę, kliknij w przycisk z trybikiem żeby wygenerować klucz publiczny i prywatny. Następnie podaj port na którym będzie nasłuchiwał serwer VPN WG, ten port będzie trzeba otworzyć na firewallu. Kolejno ustaw adresację tunelu pamiętając, aby nie pokrywała się z wykorzystywaną już w innych sieciach. Wystarczy teraz zapisać konfigurację nowo powołanej instancji.

Instancja gotowa, możesz teraz dodawać Peery czyli zakończenia tunelu.

Peer generator

OPNsense od wydań po 24.1 ma bardzo fajny generator konfiguracji, który znakomicie ułatwia utworzenie i skonfigurowanie na stacji roboczej WireGuarda.

Tu kilka słów komentarza. Zacznij od wyboru Instancji WG do której przypiszesz nowo tworzony punk końcowy. Jeśli masz tylko jedną to wybór jest oczywisty, w polu Endpoint podaj adres IP od strony WAN swojego OPNsensa oraz po dwukropku port na którym nasłuchuje wybrana instancja. Klucz publiczny i prywatny oraz adres zostaną wygenerowanie automatycznie. Jeżeli chcesz dodatkowo zwiększyć bezpieczeństwo możesz dodatkowo wygenerować klucz PSK przez naciśnięcie przycisku z trybikiem. W polu Allowed IPs zostanie podstawiona wartość domyślna 0.0.0.0/0. Jeżeli pozostawisz to bez zmian to cały ruch do Internetu z tego Peera/komputera zostanie skierowany przez tunel WireGuarda. Dodatkowo jeśli ustawisz na kliencie WG poniższą opcję to Twój komputer będzie tylko komunikował się poprzez tunel WG, odcinając się tym samym od sieci lokalnej w której się znajdował.

Może to być bardzo przydatne w sytuacji gdy znajdujesz się ze swoim laptopem w nieznanej sieci WiFi (np. hotelowym HotSpocie lub innej publicznie dostępnej sieci bezprzewodowej). Natomiast jeżeli chcesz mieć dostęp tylko do sieci LAN za swoim OPNsense to podaj w polu Allowed IPs adres swojej sieci lokalnej. Jeżeli zależy Ci aby tunel był zawsze aktywny możesz ustawić opcję Keepalive interval w sekundach. W polu DNS Servers wpisz adresy IP serwerów DNS, oddzielając je przecinkiem i spacją. Możesz podać publiczne lub w swojej sieci lokalnej.

W polu Config została wygenerowana konfiguracja dla klienta WireGuarda. teraz ją skopiuj. Zwróć uwagę na kod QR, który wystarczy umieścić przed aparatem Twojego smartphona z zainstalowaną aplikacją WireGuard, aby zaimportować parametry tunelu do telefonu.

Nie zapomnij kliknąć Store and generate next aby ta konfiguracja została zapisana. Nowa konfiguracja powinna się pojawić w zakładce Peers.

Konfiguracja klienta WireGuard

Pobierz klienta dla swojego systemu Installation – WireGuard . Następnie wybierz Dodaj pusty tunel… i wklej skopiowaną konfigurację.

Konfiguracja Interfejsu i Firewalla dla WireGuarda.

Podobnie jak przy OpenVPN tak i przy WireGuardzie należy dodać nowy interfejs sieciowy. Interfaces -> Assigments

Po dodaniu i zapisaniu konfiguracji interfejsu włącz go i zaznacz opcję Prevent interface removal . Po za tym nie jest wymagana konfiguracja tego interfejsu.

Potem koniecznie ją zastosuj przyciskiem Apply … . Jak już masz ten interfejs to będziesz miał w Firewall -> Rules dwa nowe zestawy reguł. WireGuard (Group) i w zależności od nazwy nowego interfejsu WG. W moim przypadku jest to WG_netadminpro_pl . Analogicznie jak to odbywało się dla OpenVPN zobaczysz regułę dotyczącą grup interfejsów WG i reguły powiązane z konkretną instancją.

Od strony WAN dodaj regułę przepuszczającą ruch na określony w instancji port UDP.

Normalizacja pakietów czyli to o czym warto pamiętać.

Ustaw właściwą wartość MSS czyli wartość maksymalną segmentu TCP. Jeżeli korzystasz ze stałego łącza bez protokołu PPPoE ustaw na 1380 . W sytuacji gdy używasz u dostawcy Internetu PPPoE ustaw na 1372 dla protokołu IPv4. Przy IPv6 odpowiednio 1360 i 1352 dla PPPoE. Odpowiednią regułę utworzysz klikając na Firewall -> Settings -> Normalization . Wybierz WireGuard (Group).