#Wireguard je extrémne jednoduchá a rýchla služba VPN. Začiatok vývoja rok 2015. S nadsázkou môžem napisať, že v sebe obsahuje to najdôležitejšie z IPsec a OpenVPN protokolov. Jeho zdrojový kód ma 4000 riadkov (oproti okolo 500.00 pri OpenVPN + OpenSSL). Kratší kód je lepšie auditovateľný, má menej problematických miest a je rýchlejší.
Medzi jeho základné vlastnosti patrí:
- používa najmodernejšiu kryptografiu (protokol Noise)
- komunikuje pomocou UDP, je nenáročný na sieť (keď sa dáta neprenášajú, na linke je „ticho“ ), beží na L3 vrstve OSI modelu
- podporuje roaming
- napevno zviazuje IP adresy, či rozsahy v rámci VPN s konkrétnými verejnými kľúčmi. Teda klient vie, že daný verejný kľúč určite patrí protistrane. Nevalidnú „podvrhnutú“ komunikáciu zavrhne.
- multiplatformový. Klientov nájdete pre Mac, iOS, Android, Windows, Linux (priamo v kerneli ako network modul).
Od verzie Router OS 7.xx podporujú wireguard aj zariadenia #Mikrotik. Vstavaný OpenVPN server v RouterOS je typický svojou pomalosťou (asi 7-20Mbit). To z dôvodu, že jeho komunikácia (šifrovanie) prebieha na úrovni CPU routera. Nie na inom dedikovanom čipe alebo priamo podporou v CPU navrhnutým len pre encrypt/decrypt (HW accelerated). Protokol IPSec (IKEv2) HW accelerated podporu vo väčšine modelov má, preto tento problém u IPSec nie je (úpravou MTU sa performance dá ešte zlepšiť).
Ako teda prebieha konfigurácia Wireguard spojenia #Linux (server) + Mikrotik (klient)?
Na Linuxe – server – inštalujeme balíčky wireguard a resolvconf. Vygenerujeme verejný a privátny kľúč servera – wg genkey. Nezabudneme predtým zadefinovať masku nových súborov umask 077 , čo vlastne znamená, že súbory s privátnym a verejným kľúčom budú editovateľné len vlastníkom, čitatelné každým. Následne vytvárame textový .conf s názvom a umiestnením v /etc/wireguard/wg0.conf. wg0 je štandardný virtuálny sieťový interface.
štruktúra wg0.conf má vyzerať takto:

V prvom riadku je IP adresa Wiregurad servera (z pohľadu privátnej siete). Pod ním riadky s úpravou FW pravidiel – ipv4 forward packetov a NATovanie, v tomto prípade aj riadok s úpravou pre UFW firewall). ListenPort číslo portu, na ktorom Wireguard server počúva (poznámka: pri pokuse o telnet na tento port wireguard odpovedať nebude!). Konečne PrivateKey je privátny kľúč, ktorý je vygenerovany príkazom wg genkey uložený v súbore private.key
Ďalšia časť konfigu wg0.conf pozostáva so zápisu nastavení jednotlivých Peerov (klientov). Teda [Peer] robíme pre každého wireguard klienta zvlášť.

PublicKey je kľúč, ktorý bol vygenerovaný na strane klienta., AllowedIPs definuje povolené IP adresy (rozsahy) sietí, na ktoré po spojení možme medzi klientom a serverom pristupovať. Napr. prvý riadok ma pridanú aj sieť v kancelárii (192.168.0.0/24) Endpoint určuje z ktorej IP adresy:port sa klient na Wireguard server pripája. Táto položka je nepovinná, no aspoň jedna strana ju zapísanú mať musí. Odporúčam na strane klienta.
Wireguard na linuxe spúštame príkazom sudo wg-quick up wg0 (zastavenie down). Kontrola bežiaceho interface sudo wg show wg0
Na strane Mikrotiku Router OS 7.xx – teda klient to vyzerá takto:
Wireguard -> záložka WireGuard. Vytvoríme wireguard interface, tým sa nam v Mikrotiku vygenerujú aj jeho (klientské) kľúče, private a public. Následne rozhraniu wireguard0 priradíme IP adresu. 2x príkaz do Terminálu:
/interface wireguard add listen-port=19123 name=wireguard1 /ip address add address=10.8.0.2/24 interface=wireguard1 |
Otvoríme Wireguard -> záložka Wireguard -> interface wireguard1. Skopírujeme do schránky PublicKey a ten následne vložíme na stranu servera do wg0.conf v sekcii [Peer] ako PublicKey vid. obrázok 2.
Wireguard -> záložka Peers, v prvom riadku je virtuálny wireguard interface. V druhom je serverový Public Key viď. obrázok vyššie. Endpoint a Endpoint Port je verejná IP adresa wireguard servera:port viď. prvý obrázok ListenPort . AllowedIP je povolenie IP adresy alebo rozsahu v rámci VPN siete.

Zhrnutie: wg0.conf pozostáva z dvoch častí. Prvá časť [Interface] sa týka servera a hovorí, akú adresu bude používať na rozhraní VPN. Ďalšiu sekciu [Peer] budeme opakovať pre každého klienta, uvedieme pre neho povolený rozsah IP adries, jeho verejný klúč a skutočnú IP adresu (endpoint – voliteľný parameter), na ktorú sa pripojujeme.
Princíp konfigurácie výmeny kľúčov spočíva v tom, že serverový Public kľúč na klientskej časti zapisujem do Wireguard -> záložka Peers -> Public Key. Na serverovej strane tase zapíšem klientský PublicKey rozhrania wireguard1 (záložka WireGuard) do wg0.conf -> [Peer] do časti PublicKey.
ps. IP adresy a kľúče v obrázkoch su len ilustračné, podobnosť čisto náhodná.