2020. július 12., vasárnap

Gyorskeresés

EdgeRouter : WireGuard VPN

Írta: | Kulcsszavak: edgerouter . wireguard . vpn . edgeos

[ ÚJ BEJEGYZÉS ]

Ez a bejegyzés elsősorban azoknak szól, akik WireGuard VPN-t szeretnének használni, hogy mobil eszközről elérjék az otthoni hálózatukat, illetve idegen WiFi hálózathoz csatlakozva is biztonságban szeretnék tudni személyes adataikat, amiket a böngészés során esetleg megadnak.

De mi is az a WireGuard, és miért ezt válasszam? A honlapjuk szerint: "...A WireGuard egy rendkívül egyszerű, mégis gyors és modern VPN, amely a legkorszerűbb kriptográfiát használja. Jelentősen jobban teljesít, mint az OpenVPN. Eredetileg a Linux kernelhez készült, de mostanra már sokféle platformra (Windows, macOS, BSD, iOS, Android) és széles körben telepíthető. Jelenleg még fejlesztés alatt áll, de már a legbiztonságosabb, legkönnyebben használható és legegyszerűbb VPN-megoldásnak tekinthető az iparágban..."

Nem hangzik rosszul! De lássuk hogyan teljesít a gyakorlatban.
Én eddig az Edgerouter Lite-on(ami egy 1/1Gbps optika mögött van) L2TP/IPsec VPN-t használtam, elsősorban a sebessége miatt, ami a gyakorlatban ~50Mbps-t jelentett. Ez nagyjából ötszöröse amit OpenVPN-el sikerült elérnem AES-256-CBC/SHA256 párossal. Ami viszont mindig problémás volt nálam(iOS készülékeken) mindkét VPN esetén, az alvó módból visszatérés utáni automatikus újracsatlakozás sebessége, illetve annak hiánya. Az eddig olvasottak alapján bizakodóan vágtam bele a konfigurálásba.

Első lépésként töltsük le a legfrissebb verziót a routerünkre a github-ról, majd telepítjük a csomagkezelővel.
cd /tmp
curl -qLs https://github.com/Lochnair/vyatta-wireguard/releases/download/0.0.20191219-2/wireguard-v2.0-e100-0.0.20191219-2.deb -o wireguard.deb
sudo dpkg -i wireguard.deb

Elkészítjük a kulcspárokat a szerverhez. Ezeknek a fájloknak létrehozunk egy könyvtárat:
sudo -i
cd /config/auth
umask 077 && mkdir wireguard && cd wireguard

Jöhet a private.key és public.key létrehozása:
wg genkey | tee wg_private.key | wg pubkey > wg_public.key

Majd hasonlóan járunk el a kliensek esetében is. Érdemes könnyen azonosítható fájlneveket adni:
wg genkey | tee iphone8_private.key | wg pubkey > iphone8_public.key

Wireguard interfész beállítása a routeren:
configure
set interfaces wireguard wg0 address 192.168.33.1/24
set interfaces wireguard wg0 listen-port 51820
set interfaces wireguard wg0 route-allowed-ips true
set interfaces wireguard wg0 private-key /config/auth/wireguard/wg_private.key
commit
save
exit

A szerver részével egyelőre meg is vagyunk. Térjünk át a klienshez, ahol az alábbi adatok megadása szükséges ebben a formátumban:

[Interface]
PrivateKey = <az iphone8_private.key tartalma>
Address = 192.168.33.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <a szerver wg_public.key tartalma>
Endpoint = <sajat dyndns >:51820
AllowedIPs = 0.0.0.0/0

Amit még használtam a konfiguráció elkészítéséhez az EdgeRouteren kívül, az egy VM-ben futó Ubuntu szerver (nálam ezen van az Unifi Controller). Mivel az EdgeOS is Debian alapú ezért kézenfekvő lenne, hogy azt használjuk, de figyelembe véve hogy a csomagok telepíthetősége azért korlátozott, és egy elhibázott apt paranccsal akár komolyabb kárt is okozhatunk, ezért én nem ezt választottam. (Természetesen enélkül is megoldható, de erről majd később.)

A telefonos Wireguard applikáció tartalmaz egy QR-kód olvasót, ezért talán a legegyszerűbb módja a kliensünk beállításnak, ha a saját konfigurációs fájljából ezt a kódot elkészítjük.
Ehhez szükségünk lesz egy linux rendszerre, amire telepítjük a qrencode nevű csomagot. Ez Debian/Ubuntu esetén:

sudo apt install qrencode

Létrehozzuk a konfigurációs fájl-t a klienshez:
sudo -i
mkdir wireguard && cd wireguard
nano wg_iphone8.conf

Itt már szükségünk lesz a két kulcsra melyek a routerben vannak elmentve, ezért visszalépünk és kimásoljuk őket, itt pedig beillesztjük.

Valahogy így fognak majd kinézni a kulcsok:
root@ubnt:/config/auth/wireguard# cat iphone8_private.key
kMcuP4nBMxvMqJ3Z3u4wM5q3+5uzfK5QVA5H47VY=

root@ubnt:/config/auth/wireguard# cat wg_public.key
dPDsEufMZsthpso3RKdjgH2xA2b82y67RTGkoJAA=

Tehát a wg_ihphone8.conf fájlunk tartalma a következő lesz a fenti kulcsokat használva:
[Interface]
PrivateKey = kMcuP4nBMxvMqJ3Z3u4wM5q3+5uzfK5QVA5H47VY=
Address = 192.168.33.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = dPDsEufMZsthpso3RKdjgH2xA2b82y67RTGkoJAA=
Endpoint = otthoni.dyndns.com:51820
AllowedIPs = 0.0.0.0/0

Ezután elkészítjük a QR kódot az alábbi paranccsal:
root@unifi:~/wireguard# qrencode -t ansiutf8 < wg_iphone8.conf

Hasonló eredményt kell kapjunk, és ha mindent jól csináltunk a telefonunk ez alapján betölti a helyes konfigurációt:

Felmerülhet a kérdés, ha nincs Ubuntu/Debian rendszerünk, hogyan kerülnek a beállítások a telefonra?
Szerencsére nem kell kézzel beírogatnunk ezeket a kulcsokat, van egyszerűbb megoldás is.
Létrehozzuk a wg_iphone8.conf nevű fájlt a fenti módon egy szövegszerkesztőben (pl. Notepad++), amit rátöltünk a telefonunkra, ott pedig az alkalmazásból már betallózhatjuk.

Ezzel gyakorlatilag a kliensünk beállítása elkészült. Visszatérhetünk ismét a routerhez, ahol meg kell adnunk a kliensünk publikus kulcsát és az IP címét.

Ehhez le kell kérdeznünk a kulcsot:
root@ubnt# cat iphone8_public.key
6qpFVZAzCx11/FN5h99d7Dz+Hfh6sFaIiYxHHheQ3gQ=

Majd hozzáadjuk az interfészhez:
set interfaces wireguard wg0 peer 6qpFVZAzCx11/FN5h99d7Dz+Hfh6sFaIiYxHHheQ3gQ= allowed-ips 192.168.33.2/32

Nincs más hátra, minthogy engedélyezzük a tűzfalunkon a 51820-as portot(ez az alapértelmezett, de eltérhetünk tőle) a bejövő udp kapcsolatokhoz:

set firewall name WAN_LOCAL rule 80 action accept
set firewall name WAN_LOCAL rule 80 description WireGuard
set firewall name WAN_LOCAL rule 80 destination port 51820
set firewall name WAN_LOCAL rule 80 protocol udp
commit; save; exit

Ezzel készen is vagyunk! Nekem eddig nagyon jók a tapasztalataim, sebességben hozza az L2TP/IPsec szintjét, és nincsenek újracsatlakozási problémák amiket a bejegyzés elején említettem.
Ami számomra még pozitívum, hogy az alkalmazásban beállítható, hogy amint nem a megadott SSID-hez(vagy akár többhöz) csatlakozik a telefon, egyből indítja a VPN kapcsolatot. Tehát például amint a munkahelyi wifi hálózathoz csatlakozom, automatikusan, gyakorlatilag észrevétlenül indul a VPN.
A pozitívumok mellett meg kell említeni a hátrányát is, mivel egy utólag telepített csomagról van szó a routeren, ezért egy firmware frissítés alkalmával sajnos ez törlődik. De talán van rá esély, hogy amint megjelenik a végleges verzió, bekerül majd az EdgeOS-be is.

  • Nem lehet hozzászólni
Copyright © 2000-2020 PROHARDVER Informatikai Kft.