Budući da će WireGuard buduće jezgre Linux 5.6, odlučio sam istražiti kako najbolje integrirati ovaj VPN s mojim .
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 (, i ), 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 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 wireguardNa telefonu s Androidom instalirao sam aplikaciju 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.keyOvo 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/32Par 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/PostDownimam 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=wg0Osim toga, dodao sam pravilo iptable da dozvolim promet na slušnom UDP portu (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTSada, kada sve radi, možemo postaviti automatsko pokretanje VPN tunela:
$ sudo systemctl enable wg-quick@wg0.serviceKonfiguracija 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:51820Napomene:
- Umjesto edgewalker treba navesti javni IP ili naziv VPN poslužitelja
- Instaliramo
AllowedIPsna10.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.servicePostavljanje 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.confQR 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
