WireGuard je moderní, jednoduchý a bezpečný nástroj pro realizaci virtuální privátní sítě (VPN). My si v tomto článku ukážeme, jak WireGuard nainstalovat na VPS, nakonfigurujeme a spustíme. Pro ukázku použijeme VPS ON a instalovat budeme na serveru s operačním systémem Ubuntu 20.04.3 LTS.
Začneme tím, že si upgradujeme instalované balíčky na svém OS příkazem:
sudo apt update && sudo apt upgrade
Instalace WireGuard
sudo apt install wireguard
Pokračovat budeme sadou příkazů, kde si vygenerujeme klíče jak pro server tak pro klienta.
Vygenerování klíčů pro server
wg genkey | tee server_private_key | wg pubkey > server_public_key
Vygenerování klíčů pro klienta
wg genkey | tee client_private_key | wg pubkey > client_public_key
Jednotlivé klíče pak přečteme těmito příkazy (doporučujeme si klíče uložit, budeme je později v konfiguraci potřebovat):
cat server_public_key
cat server_private_key
cat client_public_key
cat client_private_key
Konfigurace serveru
Pokračovat budeme konfigurací serveru. Zadáme příkaz (zde použijeme editor Vim):
sudo vim /etc/wireguard/wg0.conf
Vložíme do něj následují konfiguraci. Vysvětlení položek je v kódu v komentářích. Tam, kde je <klíč>, vložíme příslušný klíč serveru nebo klienta.
[Interface]
# serverová část
Address = 10.100.100.1/24 # IP rozsah na novém rozhraní
SaveConfig = true
PrivateKey = <klíč> #server_private_key - privátní serverový klíč
ListenPort = 51820 # port, na kterém bude poslouchat WireGuard
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
# klientská část
PublicKey = <klíč> #client_public_key - klinetský veřejný klíč
AllowedIPs = 10.100.100.2/32 # povolené IP adresy v rozhraní
Upozornění! Za příkazem POSTROUTING je označení rozhraní serveru iPv4, doplňte tam své, pokud se liší!
Pokračujeme přesměrováním iPv4 datového toku:
sudo vim /etc/sysctl.conf
Najdeme řádek který obsahuje text
# net.ipv4.ip_forward=1
O odkomentujeme jej (odstraníme znak #). Soubor uložíme (Vim – :wq)
Pokračujeme příkazy pro reaktivaci
sysctl -p
echo 1 > /proc/sys/net/ipv4/ip_forward
Spouštění WireGuard serveru
Postupně zadáme tyto příkazy:
chown -v root:root /etc/wireguard/wg0.conf
chmod -v 600 /etc/wireguard/wg0.conf
wg-quick up wg0
systemctl enable wg-quick@wg0.service
Nyní nám vznikne v konfiguraci serveru nové síťové rozhraní wg0.
Nastavení klienta
Nyní si nainstalujeme klienta pro svůj operační systém, jednotlivé klienty si stáhneme ze stránek WireGuard.
Konfigurace klienta
Do konfigurace klienta přidáme následující kód:
[Interface]
Address = 10.100.100.2/32
PrivateKey = <klíč> # client_private_key - klinetský privátní klíč
[Peer]
PublicKey = <klíč> # server_public_key - serverový veřejný klíč
Endpoint = <IP adresa>:51820 # IP adresa a port serveru
AllowedIPs = 0.0.0.0/0 # povolené IP adresy
PersistentKeepalive = 21
Upozornění: Endpoint = :51820 – před dvojtečku nezapomeňte přidat IP adresu serveru, na kterém jede WireGuard.
Pokud byste chtěli na server napojit více zařízení, můžete vygenerovat nové klientské klíče a přidat je včetně ip adres do souboru /etc/wireguard/wg0.conf.
Možné problémy
Firewall
Pokud máte na serveru nastavený firewall, musíte port, na kterém klient poslouchá, povolit příkazem:
sudo ufw allow <port>
<port> nahradíme číslem portu. Port, na kterém klient poslouchá, se ukáže v příkazu info o stavu WireGuardu:
wg show
Jak takový výstup vypadá, vidíte z následujícího screenshotu:
MacOs klient
U klienta pro operační systém MacOS je potřeba ještě po přidání konfigurace zatrhnout v levém dolním rohu (editační okno) Exclude private IPs.
Restart WireGuard rozhraní
Pokud potřebujeme z nějakého důvodu restartovat rozhraní, provedete to příkazy:
wg-quick down wg0
wg-quick up wg0