Vlastní WireGuard VPN dává vašemu notebooku i telefonu šifrovanou cestu k serveru, který ovládáte. Hodí se, když chcete stabilní výstupní IP, bezpečný přístup na nedůvěryhodné Wi-Fi nebo privátní cestu do jiné sítě. Anonymitu vám ale nezajistí: weby stále vidí jedinou adresu VPS a poskytovatel hostingu stále provozuje podkladovou síť.
Tento návod staví na Ubuntu Serveru VPN s plným tunelem přes IPv4. Nainstalujete WireGuard, vygenerujete klíče s omezenými právy, zapnete směrování, přidáte pravidla firewallu a NAT, připojíte desktopové i mobilní klienty a ověříte tunel. Stejný návrh zvládne i IPv6, ale až poté, co má VPS směrovaný IPv6 rozsah a zvlášť nastavíte předávání a pravidla firewallu pro IPv6.
Co je WireGuard?
WireGuard je moderní multiplatformní VPN protokol i jeho implementace, který přenáší šifrované IP pakety přes UDP. Specifikace protokolu WireGuard Specifikace definuje pevnou sadu kryptografických primitiv, mezi nimi ChaCha20-Poly1305, Curve25519, BLAKE2s, SipHash24 a HKDF. Záměrně malý návrh usnadňuje konfiguraci i audit oproti protokolům s mnoha zaměnitelnými šifrovacími sadami.
WireGuard nemá centrální systém účtů ani vestavěný adresář uživatelů. Každé zařízení je protějšek s vlastním párem klíčů, adresou v tunelu a pravidly AllowedIPs. Na VPS obvykle jeden protějšek slouží jako brána směrem k internetu, zatímco notebooky a telefony k němu navazují spojení.
Proč používat WireGuard na VPS?
- Jednoduchý model protějšků: Každé zařízení dostane jeden pár klíčů a jeden záznam protějšku.
- Malý prostor pro útok: WireGuard používá kompaktní protokol a pevnou kryptografickou sadu místo dlouhé nabídky zastaralých voleb.
- Dobrý výkon: Integrace do jádra na Linuxu a efektivní kryptografie dokážou dát vysokou propustnost, výsledek ale pořád závisí na CPU, kapacitě sítě, latenci a velikosti paketů.
- Multiplatformní klienti: Oficiální klienti jsou k dispozici pro Windows 10 a 11, macOS, Android a iOS, zatímco Linux a několik systémů BSD nabízí nativní nástroje nebo balíčky.
- Roaming: Protějšek může měnit sítě i zdrojové IP adresy, aniž by dostal novou identitu WireGuard; server si zapamatuje poslední ověřený endpoint.
- Přehledné řízení směrování: AllowedIPs určuje jak to, které cíle jdou tunelem, tak to, které adresy v tunelu patří jednotlivým protějškům.
Související čtení: průvodce Cloudzy k VPS pro VPN. U starších nasazení viz průvodce Cloudzy nastavením PPTP; pro nové VPN, kde záleží na bezpečnosti, PPTP nevolte.
Přeskočte ruční instalaci: WireGuard na jedno kliknutí
Pokud nemáte technické zázemí nebo se do instalace prostě nechcete pouštět sami, Cloudzy nabízí nasazení WireGuard VPN na jedno kliknutí. Zbytek návodu se věnuje ručnímu postupu, tato část zkratce.
- Přihlaste se do ovládacího panelu Cloudzy.
- V seznamu aplikací vyberte WireGuard.
- Vytvořte VPS v požadované lokalitě s tarifem podle vlastního výběru. Stačí stroj s Ubuntu a základními parametry.
Jakmile je VPS připravený, přihlaste se a spusťte následující příkaz, který vypíše vaši konfiguraci:
cat client.conf
Uvidíte něco podobného:
Pomocí této konfigurace vytvořte nový tunel v klientovi WireGuard na svém PC a spojení je hotové. Pokud chcete raději rozumět každému dílku nebo potřebujete uspořádání, které hotový obraz nepokrývá, pokračujte ručním postupem níže.
Jak nastavit WireGuard na Ubuntu
Následující příkazy cílí na aktuální vydání Ubuntu Serveru. Spouštějte je přes SSH pod uživatelem s právy sudo. Nechte SSH relaci otevřenou, dokud firewall neověříte, a pokud to poskytovatel umožňuje, udělejte si předtím snapshot VPS.
Předpoklady
- Jeden VPS s Ubuntu a veřejnou IPv4 adresou
- Účet mimo root s právy sudo
- Přístup přes SSH a údaje k záchranné konzoli poskytovatele VPS
- Jedno klientské zařízení s oficiální aplikací WireGuard nebo nástroji příkazové řádky
Druhý server s Ubuntu nepotřebujete. Klientem může být počítač s Windows, Mac, notebook s Linuxem, telefon s Androidem nebo iPhone.
Krok 1: Instalace WireGuardu
sudo apt update
sudo apt install wireguard -y
Ověřte, že jsou nástroje dostupné:
wg --version
Krok 2: Bezpečné vygenerování klíčů serveru
Vytvořte adresář WireGuard a vygenerujte pár klíčů s restriktivní umask. Privátní klíč se nikdy nesmí kopírovat na klienta ani objevit v logech.
sudo install -d -m 700 /etc/wireguard
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server.key; wg pubkey < /etc/wireguard/server.key > /etc/wireguard/server.pub'
Klíče si vypište ve chvíli, kdy je potřebujete vložit do konfiguračních souborů:
sudo cat /etc/wireguard/server.key
sudo cat /etc/wireguard/server.pub
Krok 3: Vytvoření konfigurace serveru
Otevřete konfiguraci rozhraní:
sudo nano /etc/wireguard/wg0.conf
Vložte následující blok a nahraďte SERVER_PRIVATE_KEY privátním klíčem z předchozího kroku:
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
Tunelová síť 10.8.0.0/24 je jen příklad. Pokud se překrývá s domácí, firemní nebo cloudovou sítí, na kterou potřebujete dosáhnout, zvolte jiný privátní rozsah. Nepřidávejte SaveConfig = true: při vypnutí rozhraní může soubor přepsat a smazat ruční úpravy.
sudo chmod 600 /etc/wireguard/wg0.conf
Krok 4: Zapnutí předávání IPv4
VPS musí směrovat pakety mezi wg0 a svým veřejným síťovým rozhraním. Nastavení vložte do samostatného souboru sysctl:
sudo nano /etc/sysctl.d/70-wireguard-routing.conf
net.ipv4.ip_forward = 1
Použijte a ověřte:
sudo sysctl -p /etc/sysctl.d/70-wireguard-routing.conf
sysctl net.ipv4.ip_forward
Vychází to ze směrovacího modelu v průvodci Ubuntu bránou WireGuard. IPv6 vyžaduje směrovaný IPv6 prefix, samostatné adresy v tunelu, předávání IPv6 a pravidla firewallu pro IPv6; dokud tato cesta není hotová, neposílejte klientský provoz na ::/0.
Krok 5: Přidání pravidel firewallu a NAT
Zjistěte název veřejného rozhraní VPS. Ve výpisu níže si všimněte hodnoty za dev; běžné názvy jsou eth0, ens3 a enp1s0.
ip route show default
Znovu otevřete wg0.conf a pod [Interface] přidejte následující řádky. Pokud se vaše veřejné rozhraní jmenuje jinak, nahraďte eth0 všude:
PostUp = iptables -I FORWARD 1 -i %i -o eth0 -j ACCEPT; iptables -I FORWARD 1 -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
PreDown = iptables -D FORWARD -i %i -o eth0 -j ACCEPT; iptables -D FORWARD -i eth0 -o %i -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Pokud je UFW aktivní, nejdřív povolte SSH a teprve pak měňte jeho stav a otevřete UDP port WireGuardu:
sudo ufw allow OpenSSH
sudo ufw allow 51820/udp
sudo ufw status
Pokud je UFW momentálně vypnutý a chcete ho zapnout, nejdřív ověřte, že pravidlo OpenSSH existuje. Nevypínejte a nezapínejte UFW přes SSH jen kvůli aplikaci těchto pravidel; zbytečně tím riskujete ztrátu přístupu.
Krok 6: Spuštění rozhraní WireGuard
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0 --no-pager
sudo wg show
Pokud služba selže, spusťte nejdřív journalctl a teprve pak něco měňte:
sudo journalctl -u wg-quick@wg0 -n 50 --no-pager
Přidání klienta WireGuard
Každé zařízení potřebuje vlastní pár klíčů a vlastní IP v tunelu. Nikdy nepoužívejte jednu klientskou konfiguraci na dvou zařízeních: duplicitní klíče a adresy dělají směrování nepředvídatelným a znemožňují čisté odvolání přístupu.
Krok 1: Vygenerování klíčů klienta
Oficiální desktopové i mobilní aplikace umí klíče vygenerovat, když vytvoříte prázdný tunel. Na klientovi s Linuxem použijte:
umask 077
wg genkey | tee client.key | wg pubkey > client.pub
Soubor client.key nechte na daném zařízení. Na server kopírujte pouze client.pub.
Krok 2: Přidání protějšku na server
sudo nano /etc/wireguard/wg0.conf
Připojte jeden blok protějšku. Nahraďte CLIENT_PUBLIC_KEY veřejným klíčem klienta:
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32
Řádek Address = 10.8.0.2/32 přiřazuje adresu v tunelu na straně klienta. V bloku [Peer] na serveru pak AllowedIPs = 10.8.0.2/32 tuto adresu sváže s daným protějškem kvůli směrování a ověření zdroje. Pro další zařízení použijte 10.8.0.3/32 a pokračujte vzestupně bez duplicit.
sudo systemctl restart wg-quick@wg0
Krok 3: Sestavení konfigurace klienta
Na klientovi vytvořte soubor client.conf a nahraďte všechny zástupné hodnoty:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = VPS_PUBLIC_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 z toho dělá plný tunel přes IPv4. Pro přístup jen do sítě VPN použijte AllowedIPs = 10.8.0.0/24. Volba PersistentKeepalive se hodí klientovi za NATem, jehož mapování má zůstat dosažitelné i v nečinnosti; rychlý průvodce WireGuardem uvádí, že většina protějšků ji nepotřebuje.
Krok 4: Import konfigurace
Použijte průvodce instalací klientů WireGuard , kde získáte podporovaného klienta pro vaši platformu.
- Windows: Zvolte Add Tunnel a poté naimportujte client.conf.
- macOS: Zvolte Import tunnel(s) from file a vyberte client.conf.
- Android nebo iOS: Naimportujte soubor nebo naskenujte QR kód z něj vygenerovaný.
Na klientovi s Ubuntu nebo Debianem, kde leží client.conf, nainstalujte qrencode a soubor vykreslete v terminálu tohoto klienta:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client.conf
QR kód obsahuje privátní klíč klienta. Zobrazujte ho jen v důvěryhodném terminálu, neukládejte snímky obrazovky a po importu do telefonu terminál vyčistěte.
Krok 5: Ověření tunelu
Aktivujte tunel, vygenerujte z klienta nějaký provoz a na VPS spusťte tyto kontroly:
sudo wg show
ip -brief address show wg0
Nedávný handshake a rostoucí čítače přenosu potvrzují, že si WireGuard vyměňuje pakety. Poté z klienta ověřte výstup přes plný tunel:
curl -4 https://api.ipify.org; echo
Příkaz by měl vrátit veřejnou IPv4 adresu VPS. Pokud handshake neproběhne, zkontrolujte adresu endpointu, UDP port, cloudový firewall, pravidlo UFW a klíče. Pokud handshake proběhne, ale internet nefunguje, zkontrolujte předávání IP, název veřejného rozhraní, pravidla NAT a DNS.
Dá se WireGuard postavit za Nginx?
Vzdálený dokumentace modulu stream v NGINX vysvětluje, jak může NGINX přeposílat UDP z jednoho portu na druhý, takže dokáže předat UDP/80 nebo UDP/443 WireGuardu na UDP/51820. Je to ale UDP relay, ne HTTP reverzní proxy. WireGuard tím nepřevedete na TCP ani HTTPS a protokol nezačne vypadat jako běžný webový provoz.
Ve většině nasazení je jednodušší změnit u WireGuardu ListenPort a otevřít odpovídající UDP port než přidávat NGINX. Pokud síť blokuje UDP úplně nebo používá hloubkovou inspekci paketů, UDP relay přes NGINX problém nevyřeší. Dokumentace omezení WireGuardu Dokumentace omezení WireGuardu uvádí, že obfuskace je mimo rozsah protokolu.
Připojení VPS k domácí síti
VPS může fungovat jako uzel mezi cestujícím klientem a zařízením u vás doma. Domácí protějšek naváže odchozí spojení WireGuard směrem k VPS, takže doma nepotřebujete veřejnou IP. Pokud je tento domácí protějšek za NATem, nastavte mu PersistentKeepalive.
Dosáhnout na celou domácí síť vyžaduje víc než jen přidat protějšek. Záznam protějšku na VPS pro domácí bránu musí mít v AllowedIPs domácí podsíť, například 192.168.1.0/24. Vzdálený klient s plným tunelem (AllowedIPs = 0.0.0.0/0) už provoz této podsítě přes VPS posílá; hodnotu 192.168.1.0/24 přidávejte na klienta jen při děleném tunelování. Také domácí brána musí předávat provoz mezi WireGuardem a lokální sítí. Přidejte buď routu na domácím routeru, nebo pečlivě omezené NAT pravidlo na domácí bráně. Nejdřív ověřte překryv: klient připojený k jiné síti 192.168.1.0/24 nedokáže obě sítě čistě směrovat bez přečíslování nebo pokročilejšího policy routingu.
Vlastní WireGuard versus komerční VPN
Vlastní provoz mění to, kdo VPN spravuje, ale anonymitu sám o sobě nezlepší. Osobní VPS vám dá jednu stabilní výstupní IP, kterou lze snadno spojit s hostingovou sítí. Komerční služba obvykle nabídne sdílené výstupní adresy a snadné přepínání lokalit, spoléháte se ale na její pravidla, provoz a případné nezávislé audity, které zveřejní.
Samotný WireGuard je nenáročný a malý VPS bývá rozumný start pro jednoho člověka a pár zařízení. Neberte pevné číslo RAM ani vCPU jako záruku propustnosti. Otestujte to se skutečným počtem zařízení, se svým regionem, velikostí paketů a očekávanou šířkou pásma, a pak stroj zvětšete, pokud se limitem stane vytížení CPU, ztrátovost paketů nebo latence.
Vlastní provoz zvolte, když je stabilní osobní výstupní IP, vzdálený přístup nebo kontrola nad serverem důležitější než výběr lokality a pohodlí. Komerční VPN zvolte, když chcete spoustu zemí, sdílené výstupy, širokou podporu spotřebitelských zařízení a někoho, kdo za vás vyřeší výpadky.
| Rozhodovací kritérium | Vlastní WireGuard | Komerční VPN |
|---|---|---|
| Nákladový model | Jeden server plus váš čas na správu | Předplatné, u delších období často se slevou |
| Výstupní lokality | Jedna lokalita na server | V aplikaci je k dispozici mnoho lokalit |
| Nastavení | Klíče, směrování, pravidla firewallu i klienty si nastavíte sami | Nainstalovat aplikaci a přihlásit se |
| Údržba | Záplatujete, monitorujete, zálohujete a řešíte problémy sami | Službu provozuje poskytovatel |
| Model soukromí | Server ovládáte vy, poskytovatel hostingu ale pořád vidí metadata | Spoléháte na pravidla poskytovatele a na nezávislé audity, které zveřejní |
| Nejlepší volba | Stabilní osobní výstupní IP, vzdálený přístup a kontrola nad infrastrukturou | Přepínání lokalit, minimum údržby a široká podpora zařízení |
Závěr
Spolehlivé nasazení WireGuardu stojí na pěti věcech: chráněné privátní klíče, jedinečné adresy protějšků, správné AllowedIPs, funkční předávání a NAT a pravidlo firewallu pro naslouchající UDP port. Než se na tunel spolehnete, ověřte handshake i veřejnou výstupní adresu, a po nasazení VPS dál záplatujte.
Pokud chcete server postavit ručně, začněte s čistým řešení Cloudzy Ubuntu VPS. Pokud raději instalační kroky přeskočíte, využijte nasazení WireGuardu na jedno kliknutí od Cloudzy a rovnou přejděte ke konfiguraci klientů a ověření.
Časté dotazy
Proč WireGuard ukazuje protějšek, ale žádný handshake?
Záznam protějšku dokazuje jen to, že se konfigurace načetla. Chybějící handshake obvykle znamená, že se klient k serveru nedostane nebo že klíče nesedí. Zkontrolujte Endpoint na klientovi, veřejnou IP serveru, port UDP/51820 jak ve firewallu poskytovatele, tak v UFW, a veřejné klíče na obou stranách. Před kontrolou vygenerujte z klienta provoz, protože WireGuard je v nečinnosti tichý.
Proč se tunel připojí, ale internet nefunguje?
Handshake bez internetu obvykle ukazuje na směrování, ne na šifrování. Ověřte net.ipv4.ip_forward, potvrďte název veřejného rozhraní v NAT pravidle, zkontrolujte pravidla FORWARD a otestujte DNS odděleně od čisté IP konektivity. Ujistěte se také, že AllowedIPs na klientovi odpovídá zamýšlenému plnému nebo dělenému tunelu.
Potřebuje PersistentKeepalive každý klient?
Ne. Přidejte ji tehdy, když protějšek za NATem potřebuje mít mapování otevřené i v době nečinnosti, což je běžné u telefonů, domácích bran a některých restriktivních sítí. Vynechte ji, pokud protějšek komunikuje často nebo nepotřebuje, aby na něj protistrana dosáhla v nečinnosti.