Přejít na hlavní obsah
Sleva 50% všechny plány, omezený čas. Od $2.48/mo
12 min left
Zabezpečení a sítě

Jak nastavit WireGuard VPN na VPS

Pius Bodenmann Autor: Pius Bodenmann 12 min čtení Aktualizoval: Mir 12d ago
WireGuard VPN tunnel active on an Ubuntu VPS terminal and a phone client

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.

  1. Přihlaste se do ovládacího panelu Cloudzy.
  2. V seznamu aplikací vyberte WireGuard.
  3. 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:

Terminal output of cat client.conf on a one-click WireGuard VPS, showing the Interface and Peer blocks with the keys and endpoint redacted

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

Six-step WireGuard setup cycle around a VPS: install, generate keys, configure wg0 with 10.8.0.1/24, enable forwarding between wg0 and eth0, add firewall and NAT rules on UDP 51820, then start and verify the interface

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

A VPS at 10.8.0.1/32 holding separate peer entries for a laptop, tablet, and phone, each with its own keypair and /32 tunnel address, its private key staying on the device, and a QR code marked as containing a private key

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

A VPS hub relaying a roaming laptop and phone to a home gateway over WireGuard, with full-tunnel 0.0.0.0/0 and split-tunnel 192.168.1.0/24 paths, PersistentKeepalive on the home peer, and a warning that two overlapping 192.168.1.0/24 networks cannot route cleanly

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ériumVlastní WireGuardKomerční VPN
Nákladový modelJeden server plus váš čas na správuPředplatné, u delších období často se slevou
Výstupní lokalityJedna lokalita na serverV aplikaci je k dispozici mnoho lokalit
NastaveníKlíče, směrování, pravidla firewallu i klienty si nastavíte samiNainstalovat aplikaci a přihlásit se
ÚdržbaZáplatujete, monitorujete, zálohujete a řešíte problémy samiSlužbu provozuje poskytovatel
Model soukromíServer ovládáte vy, poskytovatel hostingu ale pořád vidí metadataSpoléháte na pravidla poskytovatele a na nezávislé audity, které zveřejní
Nejlepší volbaStabilní osobní výstupní IP, vzdálený přístup a kontrola nad infrastrukturouPř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.

Mohou dvě zařízení sdílet jednu konfiguraci WireGuard?

Ne. Každému zařízení dejte vlastní privátní klíč, veřejný klíč a adresu /32 v tunelu. Opakované použití jedné konfigurace způsobí konflikty endpointů i tras a znemožní vám odvolat ztracené zařízení, aniž byste odpojili to druhé.

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.

Sdílet

Další z blogu

Pokračuj ve čtení.

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.