Wireguard VPN server klient Debian 10 Buster + Android. Instalace a konfigurace.

Jistě znáte Hamachi, IPsec, OpenVPN, PPP či PPTP. Popularita VPN tunelování (Virtual Private Network) rok od roku roste. A to až do te míry, že již existují desítky společností, které podobně jako web hostingové firmy, nabízí hosting VPN serveru. Pokud máte zájem o privátní tunel 1. můžete sáhnou po placené verzi, u jedné z mnoha společností které VPN server nabízí. Zde ale nevíte kdo a kdy (třeba na základě soudního příkazu) obdrží váš privátní šifrovací klíč. 2. Můžete (pokud existuje) využívat VPN nebo proxy služeb svého poskytovatele internetu nebo datového okruhu.
3. Můžete si nainstalovat a provozovat VPN server vlastní. Bez měsíčního paušálu a dalších omezení plynoucích z předplaceného tarifu (pokud existují).

Wireguard VPN je realitvně nové řešení pro zabezpečený přenos. Vyniká jednoduchostí, rychlostí, konfigurovatelným (na rozdíl od Microsoft VPN protokolů) portem a nenáročností na čas CPU. V tomto textu se dočtete jak VPN server (Debian 10 server / Android klient) a aplikaci nainstalovat a nastavit.

Instalace Wireguard VPN serveru na Debian 10

Předpokládá se, že již máte plně funčkní a zabezpečený Linux server (Ubuntu, Debian). Včetně funkčních IP tables. Linux server může byt instalovaný i jako virtuální stroj na VMware ESXi nebo jiném virtuálním stroji. Nezbytností je veřejná IP adresa. Aktualizace a instalace balíčku wireguard

apt update && apt upgrade
apt install wireguard* -y

Konfigurační soubor Wireguard server

Takto má vypadat konfigurační soubor. Vytvoření a vložení konfigurace pomocí editoru nano
nano /etc/wireguard/wg0.conf

[Interface]
Address = 10.10.10.1/24 (zde libovolnou vlastní LAN IP a masku + nezapomenout následně zadat správnou síť v Peer AllowedIPs)
ListenPort = 15015 (volitelný port
PrivateKey = AK1jLO1k3Px4yqBwdO-1369PuiTlabqpKr41Yo91HxD&

PostUp = iptables -t mangle -A POSTROUTING -p tcp –tcp-flags SYN,RST SYN -o ens192 -j TCPMSS –clamp-mss-to-pmtu
PostUp = iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
PostUp = iptables -A FORWARD -i %i -j ACCEPT
PostUp = sysctl -q -w net.ipv4.ip_forward=1

PostDown = sysctl -q -w net.ipv4.ip_forward=0
PostDown = iptables -D FORWARD -i %i -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o ens192 -j MASQUERADE
PostDown = iptables -t mangle -D POSTROUTING -p tcp –tcp-flags SYN,RST SYN -o ens192 -j TCPMSS –clamp-mss-to-pmtu

[Peer]
PublicKey = bqpKr41YeLikKfyqBwd+kezD+p8C1jLO1AWwdO-13
AllowedIPs = 10.10.0.0/24

Vysvětlivky ke konfiguračnímu souboru Wireguard serveru /etc/wireguard/wg0.conf

[Interface]
Adresa je IP adresa Wireguard sítě
Port je port na kterém Wireguard server naslouchá
PrivateKey je privátní klíč. Stejný klíč vložíme do Interface / Private Key konfigurace Android Wireguard klienta
PostUp pravidla pro routování příchozího provozu
PostDown pravidla pro routování odchozího provozu
[Peer]
PublicKey je veřejný klíč. Stejný klíč vložíme do Interface / Public Key konfigurace Android Wireguard klienta
AllowedIPs jsou povolené IP adresy v rozsahu Wireguard sítě

Příkazy pro ovládání Wireguard VPN serveru

wg-quick up wg0                 # spustí Wireguard VPN server
wg-quick down wg0               # zastaví Wireguard VPN server
systemctl enable wg-quick@wg0   # nastaví autostart Wireguard VPN serveru pri startu systému
systemctl start wg-quick@wg0    # spustí Wireguard VPN server pomocí systemctl
systemctl stop wg-quick@wg0     # zastaví Wireguard VPN server pomocí systemctl
systemctl status wg-quick@wg0   # zobrazí statv Wireguard VPN serveru

Konfigurační soubor Wireguard klient

Android Wireguard klient se nastavuje pomocí grafického rozhraní. Konfigurační soubor lze ale i importovat. Nejprv tedy konfigurační soubor a následně screenshot konfigurace.

[Interface]
Name = Můj Wireguard server
PrivateKey = AK1jLO1k3Px4yqBwdO-1369PuiTlabqpKr41Yo91HxD&
PublicKey = bqpKr41YeLikKfyqBwd+kezD+p8C1jLO1AWwdO-13
Addresses = 10.10.0.100/32
DNS servers = 1.1.1.1 (lze použít vlastní DNS)

[Peer]
PublicKey = AKlO3TwQd+kezDZp1jLO1WwdO=yA
Persistent keepalive = 25
Endpoint = Veřejná IP adresa serveru:port
Allowed IPs = 0.0.0.0/0

Vysvětlivky ke konfiguraci Wireguard klienta (Android)

[Interface]
Name = vlastní název
PrivateKey = je v Android Wireguard aplikaci vygenerovaný privátní klíč. Stejný klíč vložíme je v Interface / Private Key konfiguraci Wireguard serveru
PublicKey = je v Android Wireguard aplikaci veřejný klíč. Stejný klíč vložíme do Interface / Public Key konfigurace Wireguard serveru.
Addresses = je adresa z adresního rozsahu nastaveného na Wireguard serveru
DNS servers = je DNS server (vlastní nebo externí)
[Peer]
PublicKey = je veřejný klíč vygenerovaný v Android Wireguard aplikaci a automaticky vyplněný.
Persistent keepalive = konfigurovatelný interval v sekundách pro udržovaní spojení.
AllowedIPs = volitelné. IP adresy kterým je povolené používat Wireguard tunel.
Endpoint = IP adresa (name) Wireguard serveru v našem případě instalovaného na Debian 10 Linuxu.

Konfiguraci lze vygenerovat pomocí github burghardt skriptu easy wg-quick. V odkazu je podrobně popsané nastavení Wireguard VPN serveru, včetně IPv6.