Własny VPN na VPS: WireGuard krok po kroku

Własny VPN na VPS: WireGuard krok po kroku (grafika wygenerowana przez AI)

Własny VPN na VPS: WireGuard krok po kroku

WireGuard zmienił sytuację na rynku tuneli szyfrowanych z jednego powodu: jest prosty. Cała konfiguracja serwera mieści się w kilkunastu liniach, połączenie zestawia się niemal natychmiast, a kod jest na tyle zwięzły, że daje się go realnie przeanalizować. Do postawienia własnego VPN-a nie potrzebujesz mocnej maszyny ani specjalistycznej wiedzy. Poniżej przechodzimy przez całość, od instalacji po dodanie telefonu.

Po co własny VPN, skoro są komercyjne

To dwa różne narzędzia, mimo wspólnej nazwy.

Usługa komercyjna służy głównie ukryciu własnego adresu i zmianie lokalizacji. Własny tunel na serwerze służy czemuś innemu: bezpiecznemu dostaniu się do zasobów, które nie powinny być publiczne. Cztery zastosowania, które w firmach pojawiają się najczęściej:

  • dostęp do bazy danych albo panelu administracyjnego bez wystawiania ich na świat,
  • stały adres wyjściowy, dzięki czemu systemy klientów mogą przepuszczać ruch tylko z jednego znanego adresu,
  • bezpieczna praca z sieci publicznych, w hotelu albo na konferencji,
  • połączenie biura z serwerami tak, jakby stały w tej samej sieci lokalnej.

Drugi punkt bywa decydujący przy współpracy z większymi organizacjami, gdzie dostęp do systemu bywa ograniczony listą dozwolonych adresów.

Czego potrzebujesz

Niewiele. WireGuard jest na tyle oszczędny, że najtańszy plan z jednym rdzeniem i gigabajtem pamięci obsłuży kilkanaście urządzeń bez zadyszki. W serwerach VPS RapidDC dostajesz dedykowany adres IPv4, dostęp root i wybór systemu spośród Debiana, Ubuntu, CentOS i Fedory, czyli dokładnie to, czego wymaga ta konfiguracja. Przepustowość portu wynosi 1 Gbit/s, więc wąskim gardłem będzie raczej Twoje łącze niż serwer.

Przyda się też podstawowa znajomość pracy w terminalu. Jeśli to Twoje pierwsze spotkanie z własną maszyną, zacznij od wpisu o łączeniu się z serwerem VPS przez SSH.

Instalacja i klucze

Na Debianie lub Ubuntu:

apt update && apt install wireguard

Generowanie pary kluczy dla serwera:

wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key

Zasada jest identyczna jak przy kluczach SSH: klucz prywatny nie opuszcza maszyny, klucz publiczny możesz przekazywać swobodnie. Ustawienie uprawnień na 600 jest tu obowiązkowe, bo plik z kluczem prywatnym czytelny dla innych użytkowników przekreśla całe zabezpieczenie.

Konfiguracja serwera

Plik /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <zawartość server_private.key>
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <klucz publiczny pierwszego urządzenia>
AllowedIPs = 10.8.0.2/32

Kilka uwag. Adresacja 10.8.0.0/24 to sieć wewnętrzna tunelu, niezależna od Twojej sieci domowej, więc dobierz zakres, który nigdzie się nie powtarza. Nazwa eth0 bywa inna na różnych systemach, sprawdź ją poleceniem ip a. Linie PostUp i PostDown odpowiadają za przepuszczanie ruchu do internetu i nie są potrzebne, jeśli tunel ma służyć wyłącznie dostępowi do samego serwera.

Trzeba jeszcze włączyć przekazywanie pakietów, dopisując net.ipv4.ip_forward=1 do /etc/sysctl.conf i zatwierdzając poleceniem sysctl -p. Uruchomienie i włączenie usługi przy starcie systemu:

systemctl enable --now wg-quick@wg0

Konfiguracja urządzenia

Po stronie komputera albo telefonu generujesz własną parę kluczy i tworzysz plik:

[Interface]
Address = 10.8.0.2/24
PrivateKey = <klucz prywatny urządzenia>
DNS = 1.1.1.1

[Peer]
PublicKey = <klucz publiczny serwera>
Endpoint = <adres IP serwera>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Parametr AllowedIPs decyduje o tym, co idzie tunelem. Wartość 0.0.0.0/0 kieruje tam cały ruch, co ma sens przy pracy z sieci publicznej. Jeśli chcesz tunelować wyłącznie dostęp do firmowych zasobów, a resztą internetu obciążać zwykłe łącze, wpisz tam konkretną podsieć, na przykład 10.8.0.0/24.

PersistentKeepalive przydaje się, gdy urządzenie siedzi za routerem domowym: podtrzymuje połączenie, które inaczej zostałoby zamknięte po chwili bezczynności.

Na telefonie najwygodniej wygenerować z tej konfiguracji kod QR narzędziem qrencode i zeskanować go aplikacją WireGuard. Zajmuje to kilkanaście sekund i eliminuje literówki przy przepisywaniu kluczy.

Zapora i porządek

Otwórz na zaporze wyłącznie port 51820 dla protokołu UDP. Po zestawieniu tunelu możesz iść dalej i ograniczyć dostęp do SSH tylko z adresów wewnątrz tunelu, co jest jednym z najskuteczniejszych zabezpieczeń serwera, jakie da się wprowadzić jednym wpisem. Zanim to zrobisz, upewnij się, że tunel działa stabilnie, bo błąd w tej kolejności odetnie Cię od maszyny. O regułach zapory pisaliśmy we wpisie o zaporze sieciowej.

Każde kolejne urządzenie to nowa sekcja [Peer] w konfiguracji serwera i kolejny adres z puli. Odebranie dostępu sprowadza się do usunięcia jednej sekcji i przeładowania usługi.

Kiedy nie stawiać własnego VPN-a

Są sytuacje, w których to zły pomysł. Jeśli w firmie nie ma nikogo, kto zaktualizuje system na tym serwerze, tunel zamieni się z czasem w niepilnowaną furtkę. Jeśli potrzebujesz zmiennych lokalizacji wyjściowych w wielu krajach, usługa komercyjna zrobi to taniej. A jeśli chodzi wyłącznie o dostęp jednej osoby do jednego serwera, wystarczy dobrze skonfigurowane SSH, opisane we wpisie o protokole SSH.

Podsumowanie

WireGuard jest jednym z tych narzędzi, gdzie czas wdrożenia liczy się w kwadransach, a korzyść zostaje na lata. Wygeneruj klucze, opisz serwer i pierwsze urządzenie, otwórz jeden port, przetestuj, a dopiero potem domykaj zaporę.

Do uruchomienia wystarczy najmniejszy serwer VPS z pełną wirtualizacją KVM i własnym adresem IP, a nielimitowane reinstalacje sprawiają, że można spokojnie poćwiczyć konfigurację od zera. Co jeszcze da się na takiej maszynie uruchomić, zebraliśmy we wpisie o najważniejszych funkcjach serwera VPS.

FAQ – najczęściej zadawane pytania o WireGuard

Czy WireGuard jest szybszy od starszych rozwiązań VPN?

Zwykle tak, przy tym samym sprzęcie. Wynika to z prostszej budowy i działania w jądrze systemu. Różnica jest najbardziej widoczna przy zestawianiu połączenia i przy przełączaniu się między sieciami na telefonie.

Ile urządzeń obsłuży najmniejszy VPS?

Przy typowym użyciu biurowym kilkanaście bez problemu. Ograniczeniem jest raczej przepustowość łącza niż procesor, bo samo szyfrowanie jest w WireGuard bardzo oszczędne.

Czy własny VPN ukryje mój ruch przed dostawcą internetu?

Przed dostawcą tak, ale ruch staje się widoczny dla operatora serwera, na którym stoi tunel. Własny VPN przenosi zaufanie w inne miejsce, a nie usuwa je całkowicie.

Czy muszę mieć stały adres IP na serwerze?

Tak, i właśnie dlatego VPS sprawdza się tu lepiej niż komputer domowy. Urządzenia klienckie mogą mieć adresy zmienne, ale punkt docelowy tunelu musi być stały.

Co zrobić, gdy tunel łączy się, ale nie ma internetu?

Najczęściej brakuje włączonego przekazywania pakietów albo reguły maskarady w PostUp. Sprawdź wartość net.ipv4.ip_forward oraz nazwę interfejsu sieciowego, bo eth0 nie na każdym systemie jest tą właściwą.


Artykuł powstał z wykorzystaniem narzędzi sztucznej inteligencji (AI) pod nadzorem zespołu RapidDC. Grafika ilustracyjna została wygenerowana przez AI.