Konfiguracja WireGuard serwer Windows

WireGuard jest tunelem prostym i szybkim do skonfigurowania. Nie ma tu pojęć serwer/klient, jest jeden program który można skonfigurować w roli serwera lub w roli klienta. Tu omówimy konfigurację WireGuard w roli serwera w systemie Windows.

Podstawowym warunkiem do zestawienia takiego tunelu jest posiadanie publicznego statycznego adresu IP i możliwości przekierowania jednego portu UDP na komputer na którym będziemy konfigurować WireGuard w roli serwera. Oczywistą oczywistością jest iż komputer na którym będziemy to konfigurować musi mieć zawsze ten sam adres IP w sieci lokalnej, to możemy uzyskać na dwa sposoby… albo w systemie Windows przypisujemy statyczny adres IP, albo na urządzeniu routującym po MAC przypisujemy adres IP który będzie ten komputer otrzymywał. Bez względu jak nadamy adres IP w sieci wewnętrznej dla komputera w sieci lokalnej który będzie pełnił rolę serwera WireGuard musimy dodatkowo na routerze ustawić przekierowanie portu na ten komputer. W rożnych routerach przekierowanie jest różnie konfigurowane więc nie będę się nad tym rozwodził i wyjaśniał, przyjmuję iż osoba która to konfiguruje potrafi przypisać statyczny adres IP komputerowi wewnątrz sieci oraz że potrafi oraz posiada router na którym da się to skonfigurować.

Wiec do rzeczy, pobieramy i instalujemy program WireGuard tak po stronie komputera/serwera jak i komputera/klienta który możemy pobrać ze strony www.wireguard.com.

Po stronie komputera/serwera dodajemy nowy pusty tunel i deklarujemy tunel VPN:

[Interface]
PrivateKey = {PRIVATE_KEY_SERVER}
Address = 10.0.0.1/24
ListenPort = 51820

Oczywiście PrivateKey generowany jest automatycznie przez program WireGuard, w jakiej puli adresów umieszczamy tunel to już zależy od was, ale winna się ona zawierać w jednej z dostępnych pul IP sieci lokalnych a wyróżniamy pule A, B i C. Należy jednak pamiętać by zastosować maskę podsieci 24 = 255.255.255.0 lub właściwej dla zastosowanej klasy adresaci która wybierzemy co da nam to dostęp wszystkim komputerom/klientom do komputera/serwera. Szerzej znajdziecie opis pul adresowych dla sieci lokalnych w artykule ma mojej stornie: link. Co do portu który w moim przypadku jest to port 51820, może on być dowolny z zakresu 1024–65535 choć można też użyć portów które będą mylić potencjalnego włamywacza jeśli tylko nie korzystamy z usług do której są przeznaczone (np.: 53, 80, 21, 123, 443…).

Pora teraz na klienta którego musimy zadeklarować w sekcji [Peer] po stronie komputera/serwera i ta sekcja powtarza się tyle razy ilu klientów będziemy mieli:

[Peer]
PublicKey = {PUBLIC_KEY_CLIENT1}
AllowedIPs = 10.0.0.2/32

[Peer]
PublicKey = {PUBLIC_KEY_CLIENT2}
AllowedIPs = 10.0.0.3/32

Należy zwrócić uwagę że tu ograniczmy się jedynie do PublicKey oraz AllowedIPs pod którym będzie widziany klienta maska podsieci 32 = 255.255.255.255 ogranicza dostęp tylko do komputera/serwera bez komunikacji z innymi klientami VPN WireGuard. Wartość PublicKey otrzymamy przy konfiguracji komputerów/klienta i oczywiście konfigurację klientów możemy robić na komputerze/serwerze i przechowywać je w WireGuard. Przechowywanie konfiguracji w jednym miejscy jest dobra praktyką gdyż możemy upewnić się czy klucz prywatny jest właściwy dla klienta a jest on generowany na podstawie prywatnego klucza.

Co do kluczy publicznych i prywatnych ta sama tyczy się dla konfiguracji klienta i serwera więc do konfiguracji klientów będzie na potrzebny klucz publiczny z dotychczasowej konfiguracji.

Pora na konfigurację klientów i w tej części pozyskamy klucze publiczne klientów tak jak widać na powyższym przykładzie.

Klient 1

[Interface]
Address = 10.0.0.2/24
PrivateKey = {PRIVATE_KEY_CLIENT1}

[Peer]
PublicKey = {PUBLIC_KEY_SERVER}
AllowedIPs = 10.0.0.0/24
Endpoint = {PUBLIC_IP_SERVER}:51820
PersistentKeepalive = 10

Klient 2

[Interface]
Address = 10.0.0.3/24
PrivateKey = {PRIVATE_KEY_CLIENT2}

[Peer]
PublicKey = {PUBLIC_KEY_SERVER}
AllowedIPs = 10.0.0.0/24
Endpoint = {PUBLIC_IP_SERVER}:51820
PersistentKeepalive = 10

To już w zasadzie całość konfiguracji tunelu i po rozpowszechnieniu plików konfiguracji klientów na komputery/klient mamy gotowe tunele do serwera.

Choć zostaje jeszcze jedna ważna uwaga, WireGuard podczas uruchamianie tunelu tworzy usługę o nazwie WireGuardTunel${NAZWA_TUNELU} która uruchamia się wraz z uruchamianiem systemu i tworzy interfejs LAN. Teraz zostaje tylko włączyć routing na tym komputerze między sieciami i mamy już dostępne komputery w sieci wewnętrznej.

Oczywiście że tak skonfigurować można tunel nie tylko w systemie Windows, jest to również możliwe w systemie Linux w rożnych dystrybucjach więc znając już tą konfigurację, możemy to realizować również w przypadku systemu Linux z wykorzystaniem małego urządzenia o małym poborze prądu.

Posted in KONFIGURACJA, VPN, WireGuard.