Uživatelské nástroje

Nástroje pro tento web


navody:server:wireguard

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
navody:server:wireguard [2023/07/31 15:03] – smazan lsmod Aithernavody:server:wireguard [2026/08/16 18:56] (aktuální) – Přirozenější znění návodů, lokalizace ukázek a doplnění týdenního vyzkoušení VPS aither
Řádek 1: Řádek 1:
 +<page>manuals:server:wireguard</page>
 +
 ====== WireGuard ====== ====== WireGuard ======
  
-WireGuard je nová linuxová VPN, která vyniká svou jednoduchostí a výkonem. Najdete ho v linuxovém jádře, naše [[navody:vps:vpsadmin|virtualizační platforma vpsAdminOS]] ho podporuje má příslušný modul zavedenýStačí jen nainstalovat do operačního systému správné utility.+WireGuard je VPN zabudovaná v linuxovém jádře. Potřebný modul poskytuje 
 +vpsAdminOStakžve VPS stačí nainstalovat uživatelské nástroje. 
 + 
 +Tento příklad propojí dvě zařízení: 
 + 
 +  * server ve vpsFree.cz má veřejnou adresu ''185.8.164.10/32'', UDP port ''51820'' a adresu ve VPN ''10.77.0.1''; 
 +  * klient má adresu ve VPN ''10.77.0.2''
 + 
 +''185.8.164.10/32'' je příklad z rozsahu playground VPS. V konfiguraci jej 
 +nahraď skutečnou veřejnou IPv4 nebo IPv6 adresou serveru. Samotnou IPv6 adresu 
 +uzavři v ''Endpoint'' do hranatých závorek, například 
 +''Endpoint = [2001:db8::10]:51820''
 + 
 +===== Instalace nástrojů ===== 
 + 
 +Nainstaluj balíček ''wireguard-tools'' ze své distribuce. Například: 
 + 
 +<code bash> 
 +# Debian a Ubuntu 
 +apt update 
 +apt install wireguard-tools 
 + 
 +# Fedora 
 +dnf install wireguard-tools 
 + 
 +# Alpine Linux 
 +apk add wireguard-tools 
 + 
 +# Arch Linux 
 +pacman -S wireguard-tools 
 +</code> 
 + 
 +Aktuální odkazy pro další systémy najdeš na 
 +[[https://www.wireguard.com/install/|webu projektu WireGuard]]
 + 
 +===== Klíče ===== 
 + 
 +Na serveru i klientovi vytvoř samostatný pár klíčů. Soukromý klíč nikomu 
 +neposílej nevkládej ho do tiketů ani veřejných repozitářů. 
 + 
 +<code bash> 
 +install -d -m 700 /etc/wireguard 
 +umask 077 
 +wg genkey | tee /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key 
 +</code> 
 + 
 +Veřejný klíč vypíšeš příkazem: 
 + 
 +<code bash> 
 +cat /etc/wireguard/public.key 
 +</code> 
 + 
 +V následujících příkladech nahraď ''SERVER_PRIVATE_KEY'', 
 +''SERVER_PUBLIC_KEY'', ''CLIENT_PRIVATE_KEY'' a ''CLIENT_PUBLIC_KEY'' 
 +odpovídajícími hodnotami. Soubor s konfigurací musí zůstat čitelný jen pro 
 +roota. 
 + 
 +===== Konfigurace serveru =====
  
-===== Instalace =====+Na serveru vytvoř ''/etc/wireguard/wg0.conf'':
  
-Balíčky s modulem pro jádro není třeba instalovat, na sdíleném jádře je stejně není možné nainstalovatBudete tedy potřebovat jen balíček ''wireguard-utils''Ten obsahuje potřebné nástroje pro správu naší VPN.+<code ini> 
 +[Interface] 
 +Address = 10.77.0.1/24 
 +ListenPort = 51820 
 +PrivateKey = SERVER_PRIVATE_KEY
  
-Pozor na to, že balíček ještě není součástí aktuálního Debianu 10 BusterJe možné jej ale snadno přidat z Backports, tedy doplňkového repozitáře nových balíků.+[Peer] 
 +PublicKey = CLIENT_PUBLIC_KEY 
 +AllowedIPs = 10.77.0.2/32 
 +</code>
  
-Do souboru ''/etc/apt/sources.list'' přidáme následující řádek:+===== Konfigurace klienta =====
  
-  deb http://deb.debian.org/debian buster-backports main+Na klientovi vytvoř ''/etc/wireguard/wg0.conf'':
  
-Poté už můžeme rovnou instalovat:+<code ini> 
 +[Interface] 
 +Address = 10.77.0.2/24 
 +PrivateKey = CLIENT_PRIVATE_KEY
  
-  # apt update +[Peer] 
-  # apt install wireguard-tools -t buster-backports+PublicKey = SERVER_PUBLIC_KEY 
 +AllowedIPs = 10.77.0.1/32 
 +Endpoint = 185.8.164.10:51820 
 +PersistentKeepalive = 25 
 +</code>
  
-===== Generování klíčů =====+''AllowedIPs'' určuje adresy, které se směrují k danému protějšku, a zároveň 
 +adresy, ze kterých WireGuard od něj přijme pakety. Tento příklad směruje pouze 
 +provoz mezi dvěma adresami VPN. Nedělá z VPS výchozí bránu a nenastavuje NAT.
  
-Ve VPN vytvořené pomocí WireGuardu jsou jednotlivé stroje identifikovány pomocí kombinace veřejného klíče privátní IP adresyNejprve je potřeba na každé straně vytvořit pár klíčů. Použijeme k tomu utilitu ''wg'', která slouží pro konfiguraci VPN.+''PersistentKeepalive = 25'' použij, pokud je klient za NATem nebo stavovým 
 +firewallem má zůstat dosažitelný i bez vlastního provozuPokud jsou oba 
 +protějšky přímo dosažitelné, řádek můžeš vynechat. ''Endpoint'' potřebuje 
 +alespoň strana, která spojení zahajuje; server se v tomto příkladu naučí 
 +adresu klienta z přijatých paketů.
  
-  # wg genkey | tee wg-private.key | wg pubkey > wg-public.key+Na obou strojích povol čtení konfigurace pouze uživateli ''root'':
  
-V aktuálním adresáři vzniknou dva soubory: ''wg-private.key'' se soukromým klíčem a ''wg-public.key'' s klíčem veřejným. Veřejný klíč pak musíme předat všem účastníkům, kteří se s námi budou ve VPN spojovat.+<code bash> 
 +chmod 600 /etc/wireguard/wg0.conf 
 +</code>
  
-===== Konfigurace =====+===== Firewall a spuštění =====
  
-WireGuard má vlastní konfigurační souborve kterém je popsáno nastavení našeho stroje a všech jeho komunikačních partnerůDo tohoto souboru budeme vkládat svůj soukromý klíč a veřejné klíče všech ostatních.+Používáš-li na serveru firewallpovol příchozí UDP port ''51820'' pro IPv4 i 
 +IPv6 podle adresy ''Endpoint''TCP port stejného čísla není potřeba. Více 
 +informací najdeš v článku [[navody:server:firewall|Firewall]].
  
-Konfigurační soubor můžeme uložit kamkoliv, ale výchozí stav je ''/etc/wireguard/''. V tomto adresáři také utility hledají své konfigurace, doporučujeme uložit soubor sem, třeba s názvem ''wg0.conf''. Příklad konfiguračního souboru:+Na distribuci se systemd spusť rozhraní a nastav jeho start po bootu:
  
-  [Interface] +<code bash> 
-  Address = 192.168.100.1/24 +systemctl enable --now wg-quick@wg0 
-  PrivateKey = QD8zBS9nCwzhBrr6W9rEtcegvCwRk1SDFZFjSL3bMGQ= +</code>
-  [Peer] +
-  AllowedIPs = 192.168.100.2/32 +
-  PublicKey = TcCK+JJLHZcH9zdLRqtJ7cHiCJH2a6iBN2TjVi6zIxw= +
-  Endpoint = 192.0.2.123:51820+
  
-První část ''[Interface]'' se týká lokálního stroje a říká, jakou adresu bude používat na rozhraní VPN. Další sekce ''[Peer]'' budeme opakovat pro každého partnera, uvedeme pro něj povolený rozsah IP adres, jeho veřejný klíč a volitelně skutečnou IP adresu, na kterou se ipojujeme.+Na systému bez systemd jej můžeš spustit ímo:
  
-Položka ''Endpoint'' je nepovinná, ale vždy alespoň jedna ze stran ji musí mít nastavenou. Typicky používáme jeden centrální bod (server), ke kterému se budou připojovat cestující klienti. Ti nemusejí mít veřejnou IP, proto u nich nastavíme ''Endpoint'' našeho stabilního serveru.+<code bash> 
 +wg-quick up wg0 
 +</code>
  
-===== Spuštění VPN =====+Konfiguraci ověř příkazy:
  
-Nyní už stačí jen konfiguraci použít. Slouží k tomu utilita ''wg-quick'', která se umí o rozhraní staratPokud jsme soubor s naší VPN nazvali ''wg0.conf'', stačí zavolat následující příkaz:+<code bash> 
 +wg show 
 +ping -c 3 10.77.0.1   # na klientovi 
 +ping -c 3 10.77.0.2   # na serveru 
 +</code>
  
-  # wg-quick up wg0 +Ve výstupu ''wg show'' sleduj zejména čas posledního handshake a počítadla 
-   +přenesených dat. Pokud handshake neproběhne, zkontroluj veřejné klíče, 
-Stav máme vždy možnost zjistit pouhým spuštěním utility ''wg'' bez parametrů.+''Endpoint'' a pravidla firewallu. Podrobnosti ke konfiguraci popisuje 
 +[[https://www.wireguard.com/quickstart/|oficiální rychlý start WireGuardu]].
  
-  # wg 
-  interface: wg0 
-    public key: xcC08j4bC0Z756eokOM1nezhbTU6k25XGSeTmEpVKUQ= 
-    private key: (hidden) 
-    listening port: 51820 
-  peer: TcCK+JJLHZcH9zdLRqtJ7cHiCJH2a6iBN2TjVi6zIxw= 
-    endpoint: 192.0.2.123:51820 
-    allowed ips: 192.168.100.2/32 
navody/server/wireguard.txt · Poslední úprava: autor: aither