Unifi VPN WireGuard
How Can We Help?
Síťové řešení od Unifi, resp. přesněji Security Gateway VPN nativně podporuje pouze
- dnes už prolomené PPTP a
- už také zastaralé L2TP (např. s novým Androidem 12 už mohou být problémy)
Možnou náhradou může být OpenVPN nebo právě WireGuard o jehož zprovnoznění je tento článek.
WireGuard
Wireguard je jednoduchá a rychlá VPN (náhrada IPSecu a OpenVPN v jednom), běží všude (v kernelu jako network modul) a má klienta pro všechny platformy (Mac, iOS, Android, Windows …). Používá moderní kryptografii (jako SSH) a stačí vám veřejné a privátní klíče.
I pro nesíťaře je její nastavení jednoduché a intuitivní.
Instalace
Dost teorie, pojďme na instalaci.
I. Instalace do SGW
- Pomocí SSH se přihlásit přímo do Unifi Security Gateway
- Stáhnout aktální verzi WireGuard balíčku (pro SecurityGateway (ugw3) naleznete verze zde https://github.com/WireGuard/wireguard-vyatta-ubnt/releases) takto:
- curl -OL https://github.com/WireGuard/wireguard-vyatta-ubnt/releases/download/1.0.20211208-1/ugw3-v1-v1.0.20211208-v1.0.20210914.deb
- Všechny ostatní kroky jako root:
- su
- Nainstalovat WireGuard build:
- dpkg -i ugw3-v1-v1.0.20211208-v1.0.20210914.deb
- Vygenerovat public a private key pro Gateway
-
cd /config/auth
-
umask 077
-
mkdir wireguard
-
cd wireguard
-
wg genkey > wg_private.key
-
wg pubkey < wg_private.key > wg_public.key
-
-
Rovnou si můžeme vygenerovat klíče pro klienty:
- wg genkey | tee tata_ntb_private.key | wg pubkey > tata_ntb_public.key
-
wg genkey | tee mama_mobil_private.key | wg pubkey > mama_mobil_public.key
-
atd …
-
Vygenerované klíče pro klienty si stahnout do lokálního počítače (třeba pomocí WinSCP)
II. Instalace do Unifi Controlleru
- Pomocí SSH se přihlásit přímo do Unifi Controlleru (nejspíše Cloud Key)
- V adresáři /srv/unifi/data/sites/<nazev_site> (nejspíše tedy /srv/unifi/data/sites/default) vytvořit soubor config.gateway.json podle předlohy
- config.gateway.json
- (pokud už jste si dříve z nějakého důvodu config.gateway.json vytvořili, editujte stávající)
- v sekci peer nezapomeňte správně doplnit dříve vygenerované public klíče klientů
III. Konfigurace přes webové UI Controlleru
- Ve webovém prohlížeči otevřít Controller Web UI
- Zajistit distribuci změn
-
Controller Web UI > Devices > kliknout na USG > v Properties okně záložka Config > Manage Device > a zde klinout na Provision
- Pokud Provision běží déle než cca 3 minuty, je chyba (typo) v json konfiguráku. Takže json zvalidovat a opravit pomocí nějakého online json formatteru
-
- Povolit vzdálený přístup na firewallu:
- Controller Web UI : Settings > Routing & Firewall > Firewall > WAN LOCAL a vytvořit nové pravidlo pro UDP traffic na portu 51820
- Během vytváření pravidla je nutné vytvořit Port Group v sekci Source a přidat port 51820.
- Controller Web UI : Settings > Routing & Firewall > Firewall > WAN LOCAL a vytvořit nové pravidlo pro UDP traffic na portu 51820
A máme hotovo nastavení Unifi
Nastavení klienta
- Na klienta (telefon, pc atp.) nainstalujeme WireGuard
- V klientovy vytvoříme nový tunel, jehož konfigurace pro náš případ “tata_ntb” bude vypadat takto:
- [Interface]
PrivateKey = <tata_ntb_private_key>
Address = 10.222.1.10/32
DNS = 1.1.1.1
[Peer]
PublicKey = <gw_public_key>
AllowedIPs = 0.0.0.0/0
Endpoint = <veřejná IP>:51820
PersistentKeepalive = 21
- [Interface]
- Poznámky
- v konfiguraci klienta nezapomeňte správně změnit
- privátní klíč klienta
- public klíč gateway
- vaši veřejnou IP
- Na příkladu je pěkně vidět, že konfigurace klienta nese privátní klíč klienta a public klíč gateway
- naopak Gateway má v nastavení private klíč gateway a public klíče klientů
- AllowedIPs
- 0.0.0.0/0 znamená, že přes tunel vám jde veškerá komunikace, což nemusí být žádoucí
- pokud tedy máte vnitřní sítě třeba 10.100.1.0 až 10.100.10.0, můžete je do AllowedIPs přímo vyjmenovat, nebo použít wildcard 10.100.0.0/16. Díky tomu můžete být přes WireGuard připojeni neustále, protože přes tunel pujde jen komunikace s vyjmenovanými sítěmi.
- v konfiguraci klienta nezapomeňte správně změnit
Toť vše, díky za pozornost
l.adamek