fakessh.eu
fakessh.eu
Modrý sieťový kábel vchádza do krátkej oceľovej rúrky medzi dvoma tmavými serverovými skriňami, zo stavových diód servera naň dopadá studené modré svetlo.

WireGuard VPN na vlastnom VPS: inštalácia a nastavenie krok za krokom

aktualizované 16. októbra 2026

ZHRNUTIEWireGuard VPN na vlastnom VPS postavíte v štyroch krokoch: nainštalujte balík wireguard, vygenerujte pár kľúčov na serveri aj klientovi, vytvorte /etc/wireguard/wg0.conf s pravidlom MASQUERADE, zapnite net.ipv4.ip_forward a otvorte UDP port 51820. Spustíte ho príkazom systemctl enable --now wg-quick@wg0. Anonymitu nedáva.

WireGuard VPN je šifrovaný tunel medzi vaším zariadením a serverom, ktorý beží v jadre Linuxu a nastavuje sa jedným konfiguračným súborom na každej strane. Na vlastnom VPS ho použijete ako súkromnú bránu do internetu: notebook alebo telefón cez ňu pošle všetku prevádzku a sieť, v ktorej sedíte, neuvidí jej obsah. Anonymitu to nedáva: weby uvidia adresu vášho servera, ktorý je prenajatý na váš účet. Postup má päť krokov: inštalácia, kľúče, server so smerovaním, klient a test.

Protokol opísal Jason Donenfeld v odbornej štúdii z konferencie NDSS 2017. Podľa jej abstraktu ide o tunel na tretej vrstve, vytvorený ako virtuálne sieťové rozhranie jadra Linuxu, ktorý sa pre Linux dá napísať v menej než 4 000 riadkoch kódu. Do jadra sa dostal vo verzii 5.6, vydanej 29. marca 2020. Spojenie vzniká výmenou verejných kľúčov, podobne ako pri SSH kľúčoch.

Kedy má vlastná VPN zmysel a kedy nie

Zmysel má pri ochrane prevádzky v cudzej sieti. Dokumentácia Ubuntu Server opisuje práve tento prípad: letisko, kaviareň, konferencia alebo hotel, teda sieť, ktorej nedôverujete. Lokálna sieť potom nevidí obsah prevádzky, lebo je zašifrovaná. Druhým dôvodom je prístup k službám na serveri, ktoré nechcete vystavovať do internetu.

Nehodí sa, ak chcete anonymitu. Dôvera sa len presúva z prevádzkovateľa Wi-Fi na poskytovateľa servera a cieľové weby vidia adresu servera, ktorý patrí vám. Projekt WireGuard sám uvádza dve obmedzenia: nezameriava sa na obfuskáciu, teda na skrytie prevádzky pred hĺbkovou inšpekciou paketov, a nepodporuje tunelovanie cez TCP. Kde je UDP zablokované, tunel preto nenabehne.

Inštalácia a kľúče

Na serveri aj na klientovi s Debianom alebo Ubuntu nainštalujte balík wireguard. Podľa stránky projektu majú používatelia Debianu staršieho než Bullseye zapnúť backports. Pre Windows, macOS, Android a iOS existuje oficiálna aplikácia.

sudo apt install wireguard

Kľúče vygenerujte na každom zariadení zvlášť. Súkromný kľúč nikdy neopúšťa svoje zariadenie, druhej strane dáte len verejný.

umask 077
wg genkey > server.key
wg pubkey < server.key > server.pub
sudo mv server.key server.pub /etc/wireguard/

Príkaz umask 077 zaistí, že nový súbor prečíta len jeho vlastník. Na klientovi urobte to isté s názvom client.

Server: konfigurácia, smerovanie a firewall

Najprv zistite názov sieťového rozhrania, ktorým server komunikuje s internetom:

ip route show default

V riadku default via ... dev eth0 je to slovo za dev. Potom vytvorte súbor /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <obsah server.key>
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

[Peer]
# notebook
PublicKey = <obsah client.pub>
AllowedIPs = 10.8.0.2/32

Podsieť 10.8.0.0/24 je len príklad, zvoľte takú, ktorá sa nekryje so sieťou klienta. Port 51820 je v dokumentácii obvyklý, môže byť iný. Ak sa eth0 líši od predošlého kroku, opravte ho v oboch pravidlách. Na serveri musí byť nainštalovaný balík iptables. Pravidlo MASQUERADE prepisuje adresy klientov na adresu servera a wg-quick ho pridá po vytvorení rozhrania a odstráni pri jeho zrušení. Konfigurácia obsahuje súkromný kľúč, preto ju zamknite príkazom sudo chmod 600 /etc/wireguard/wg0.conf.

Aby server posielal pakety klienta ďalej, musí fungovať ako smerovač. Zapnite forwarding trvalo cez súbor v /etc/sysctl.d:

echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/70-wireguard-routing.conf
sudo sysctl --system

Hodnotu overíte príkazom cat /proc/sys/net/ipv4/ip_forward, má vypísať 1. Ak používate ufw podľa článku Prvých tridsať minút na novom VPS, otvorte UDP port tunela a povoľte presmerovanú prevádzku. Druhé pravidlo je potrebné preto, že ufw má po inštalácii predvolenú politiku pre presmerovanú prevádzku nastavenú na zamietnutie:

sudo ufw allow 51820/udp
sudo ufw route allow in on wg0 out on eth0

Ak po zapnutí ufw vypíše ip_forward opäť 0, zapnite forwarding aj v /etc/ufw/sysctl.conf, ako uvádza manuál ufw. Tunel spustíte a zapnete pri štarte jedným príkazom:

sudo systemctl enable --now wg-quick@wg0

Názov služby kopíruje názov rozhrania. Nové zariadenia načítate bez prerušenia spojení príkazom sudo systemctl reload wg-quick@wg0, po zmene Address alebo PostUp treba restart.

Klient a test

Na klientovi vytvorte /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.2/24
PrivateKey = <obsah client.key>

[Peer]
PublicKey = <obsah server.pub>
Endpoint = <verejná IP servera>:51820
AllowedIPs = 0.0.0.0/0

AllowedIPs je jadro konfigurácie: pri odosielaní funguje ako smerovacia tabuľka a pri prijímaní ako zoznam povolených zdrojových adries. Hodnota 0.0.0.0/0 pošle cez tunel všetku IPv4 prevádzku a wg-quick sám prepíše predvolenú trasu. IPv6 pokrýva ::/0, bez neho pôjde IPv6 prevádzka klienta mimo tunela. Ak chcete len prístup k službám na serveri, stačí v AllowedIPs podsieť 10.8.0.0/24. Tunel zapnete príkazom sudo wg-quick up wg0 a vypnete príkazom sudo wg-quick down wg0. Overenie:

  1. Na serveri spustite sudo wg show. Pri peerovi musí byť riadok latest handshake, bez neho sa klient k serveru nedostal.
  2. Na klientovi tunel overíte príkazom ping -c 3 10.8.0.1.
  3. Príkaz curl https://ifconfig.me musí vypísať verejnú adresu servera, nie vašu.

Typické chyby

PríznakPríčina a oprava
Chýba latest handshakeZamenené kľúče, zlý Endpoint alebo blokovaný UDP port. V [Peer] musí byť verejný kľúč druhej strany.
Handshake je, stránky sa nenačítajúZabudnutý forwarding, pravidlo MASQUERADE alebo pri ufw pravidlo route allow.
Required key not availableCieľová adresa nie je v AllowedIPs žiadneho peera, doplňte ju.
Ping ide, veľké stránky a scp visiaMTU je vyššie, než unesie cesta.
Weby idú, DNS ide mimo tunelaKlient používa DNS lokálnej siete. Riadok DNS = v [Interface] vyžaduje resolvconf, na Ubuntu so systemd-resolved ho nahradí resolvectl v PostUp.

K MTU: wg-quick ho určí automaticky z cesty k endpointu alebo z predvolenej trasy a na linke s MTU 1500 vychádza 1420, teda o 80 menej. Ak je cesta užšia, napríklad pri PPPoE, pridajte na oboch stranách do [Interface] riadok MTU = s hodnotou o 80 nižšou, než je MTU cesty. Tú zistíte z klienta pri vypnutom tuneli príkazom ping -M do -s 1472 <IP servera>: veľkosť znižujte, kým odpovede neprídu, a k najväčšej úspešnej pripočítajte 28 bajtov hlavičiek.

Ďalší klient a bezpečnosť

Ďalšie zariadenie dostane vlastný pár kľúčov, vlastnú adresu, napríklad 10.8.0.3/32, a nový blok [Peer] na serveri. Voliteľný PresharedKey z príkazu wg genpsk, rovnaký v oboch blokoch [Peer], pridáva podľa manuálu wg(8) vrstvu symetrického šifrovania pre odolnosť voči kvantovým počítačom. Na fórach nikdy nevkladajte konfiguráciu so súkromným kľúčom. Dokumentácia Ubuntu radí kľúč uložiť do samostatného súboru a načítať ho riadkom PostUp = wg set %i private-key /etc/wireguard/%i.key, v konfigurácii potom PrivateKey chýba.

Časté otázky

Je WireGuard VPN na vlastnom serveri anonymný?

Nie. Prevádzku zašifruje medzi vami a serverom, takže lokálna sieť nevidí obsah, ale cieľové weby vidia adresu servera, ktorý je prenajatý na váš účet. Dôvera sa presúva z prevádzkovateľa siete na poskytovateľa VPS.

Čo znamená AllowedIPs a 0.0.0.0/0?

Pri odosielaní funguje AllowedIPs ako smerovacia tabuľka, pri prijímaní ako zoznam povolených zdrojových adries. Hodnota 0.0.0.0/0 pošle cez tunel všetku IPv4 prevádzku, IPv6 pokrýva ::/0.

Prečo sa po pripojení nenačítajú stránky?

Najčastejšie chýba forwarding (net.ipv4.ip_forward musí byť 1), pravidlo MASQUERADE alebo pri ufw pravidlo route allow. Ďalšou príčinou je vysoké MTU: ping prejde, ale veľké prenosy visia.

Aké MTU nastaviť pre WireGuard?

wg-quick ho určí automaticky z cesty k endpointu alebo z predvolenej trasy. Pri linke s MTU 1500 vychádza 1420, teda o 80 menej. Ak je cesta užšia, nastavte MTU v sekcii Interface ručne.

Aký port a protokol WireGuard používa?

Používa UDP, v príkladoch dokumentácie je port 51820 a zmeníte ho cez ListenPort. Tunelovanie cez TCP WireGuard nepodporuje, takže v sieti blokujúcej UDP nenabehne.

Ďalšie návody

Vajcia na mäkko: ako dlho variť podľa veľkosti a prečo praskajú

Vajcia na mäkko: 4½ minúty pri veľkosti M, 5 minút pri L. Časy podľa stupňa uvarenia, vajce z chladničky, praskanie škrupiny a salmonela.

Raspberry Pi ako domáci server: čo zvládne a kde narazí

Raspberry Pi 5 so 4 až 8 GB pamäte a SSD diskom utiahne zdieľanie súborov, VPN, blokovanie reklám aj Nextcloud pre rodinu. Spotreba, napájanie, SD karta a prístup zvonka.

Čo je VPS a kedy sa oplatí prejsť zo zdieľaného hostingu

VPS je virtuálny server s vlastnými zdrojmi a plným prístupom. Vysvetľujeme rozdiel oproti zdieľanému hostingu, kedy má prechod zmysel a koľko to reálne stojí.