Postavljamo jednostavan VPN s WireGuard i Raspberry Pi kao serverom

Budući da će WireGuard postati dio buduće jezgre Linux 5.6, odlučio sam istražiti kako najbolje integrirati ovaj VPN s mojim LTE usmjerivačem/ pristupnom točkom na Raspberry Pi.

Oprema

  • Raspberry Pi 3 s LTE modulom i javnom IP adresom. Ovdje će biti VPN server (dalje u tekstu nazvan edgewalker)
  • Telefon s Androidom koji treba koristiti VPN za sve komunikacije
  • Laptop s Linuxom koji treba koristiti VPN samo unutar mreže

Svaki uređaj koji se povezuje na VPN trebao bi imati mogućnost povezivanja sa svim drugim uređajima. Na primjer, telefon bi trebao imati mogućnost povezivanja na web server na laptopu, ako su oba uređaja dio VPN mreže. Ako postavka bude dovoljno jednostavna, možemo razmisliti o povezivanju s VPN-om i desktop računala (putem Ethernet-a).

S obzirom da su žičana i bežična povezivanja s vremenom sve manje sigurna (ciljane napade, KRACK napad na WPA2 i Dragonblood napad protiv WPA3), ozbiljno razmišljam o korištenju WireGuarda za sve moje uređaje, bez obzira na to u kojem okruženju rade.

Instalacija softvera

WireGuard pruža prethodno kompajlirane pakete za većinu distribucija Linuxa, Windows i macOS. Aplikacije za Android i iOS dostupne su preko aplikacijskih katalogâ.

Imam najnoviju Fedora Linux 31, a prije instalacije nisam se trudio pročitati uputstvo. Jednostavno sam pronašao pakete wireguard-tools, instalirao ih, a zatim nisam mogao shvatiti zašto ništa ne radi. Daljnje istraživanje pokazalo je da nemam instaliran paket wireguard-dkms (s mrežnim drajverom), a njega nije bilo u repozitoriju moje distribucije.

Da sam pročitao uputstvo, učinio bih ispravne korake:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Na Raspberry Pi imam instaliranu distribuciju Raspbian Buster, već postoji paket wireguard, instaliramo ga:

$ sudo apt install wireguard

Na telefonu s Androidom instalirao sam aplikaciju WireGuard VPN iz službenog kataloga Google App Store.

Instalacija ključeva

Za autentifikaciju nodova Wireguard koristi jednostavnu shemu privatnog/javnog ključa za autentifikaciju nodova VPN-a. Ključeve VPN-a možete lako generirati sljedećom naredbom:

$ wg genkey | tee wg-laptop-private.key | wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key | wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key | wg pubkey > wg-mobile-public.key

Ovo nam daje tri para ključeva (šest datoteka). Nećemo se pozivati na datoteke u konfiguracijama, već ćemo ovdje kopirati sadržaj: svaki ključ je jedna linija u base64.

Izrada konfiguracijske datoteke za VPN poslužitelj (Raspberry Pi)

Konfiguracija je prilično jednostavna, stvorio sam sljedeću datoteku /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = 
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = 
AllowedIPs = 10.200.200.2/32

[Peer]
# mobilni telefon
PublicKey = 
AllowedIPs = 10.200.200.3/32

Par zapažanja:

  • U odgovarajuće dijelove treba umetnuti linije iz datoteka s ključevima
  • Moja VPN mreža koristi unutarnji raspon 10.200.200.0/24
  • Za naredbe PostUp/PostDown imam navedeno vanjsko mrežno sučelje wwan0, vi možete imati drugo (na primjer, eth0)

VPN mreža se lako pokreće sljedećom naredbom:

$ sudo wg-quick up wg0

Jedna mala pojedinost: kao DNS poslužitelj koristio sam dnsmasq s vezom na mrežno sučelje br0, također sam dodao uređaje wg0 na popis dopuštenih uređaja. U dnsmasq se to radi dodavanjem nove linije s mrežnim sučeljem u datoteku konfiguracije /etc/dnsmasq.conf, na primjer:

interface=br0
interface=wg0

Osim toga, dodao sam pravilo iptable da dozvolim promet na slušnom UDP portu (51280):

$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Sada, kada sve radi, možemo postaviti automatsko pokretanje VPN tunela:

$ sudo systemctl enable wg-quick@wg0.service

Konfiguracija klijenta na prijenosnom računalu

Na prijenosnom računalu izradite konfiguracijsku datoteku /etc/wireguard/wg0.conf s istim postavkama:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

[Peer]
PublicKey = 
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Napomene:

  • Umjesto edgewalker treba navesti javni IP ili naziv VPN poslužitelja
  • Instaliramo AllowedIPs na 10.200.200.0/24, koristimo VPN samo za pristup unutarnjoj mreži. Promet prema svim drugim IP adresama/poslužiteljima i dalje će prolaziti kroz "obične" otvorene kanale. Također će se koristiti unaprijed konfigurirani DNS poslužitelj na prijenosnom računalu.

Za testiranje i automatsko pokretanje upotrebljavamo iste naredbe wg-quick i systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.service

Postavljanje klijenta na Android telefonu

Za Android telefon kreiramo vrlo sličnu konfiguracijsku datoteku (nazovimo je mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = 
DNS = 10.200.200.1
        
[Peer]
PublicKey = 
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Za razliku od konfiguracije na prijenosnom računalu, telefon mora koristiti naš VPN poslužitelj kao DNS poslužitelj (redak DNS), a također propuštati sav promet kroz VPN tunel (AllowedIPs = 0.0.0.0/0).

Umjesto kopiranja datoteke na mobilni uređaj, možete je pretvoriti u QR kod:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR kod će se prikazati u konzoli kao ASCII. Može se skenirati iz aplikacije Android VPN i automatski postaviti VPN tunel.

Izvještaj

Postavljanje WireGuarda je jednostavno čarobno u usporedbi s OpenVPN-om.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster