Postavljanje jednostavnog VPN-a sa WireGuard i Raspberry Pi kao server

Od WireGuard postati dio buduće jezgro Linux 5.6, odlučio sam vidjeti kako najbolje integrirati ovaj VPN s mojim LTE ruter/pristupna tačka na Raspberry Pi.

Oprema

  • Raspberry Pi 3 sa LTE modulom i javnim IP-om. Postojaće VPN server (u daljem tekstu edgewalker)
  • Telefon uključen Android, koji mora koristiti VPN za svu komunikaciju
  • Laptop Linux, koji bi trebao koristiti VPN samo unutar mreže

Svaki uređaj koji se povezuje na VPN mora biti u mogućnosti da se poveže sa svakim drugim uređajem. Na primjer, telefon bi trebao biti u mogućnosti da se poveže na web server na laptopu ako su oba uređaja dio VPN mreže. Ako je podešavanje dovoljno jednostavno, onda možete razmišljati o povezivanju na VPN i desktop (preko Etherneta).

S obzirom da žičane i bežične veze vremenom postaju sve manje sigurne (ciljanih napada, KRACK WPA2 hakerski napad и Dragonblood napad na WPA3), ozbiljno razmišljam o korištenju WireGuard za sve moje uređaje, bez obzira u kakvom okruženju rade.

Instalacija softvera

WireGuard pruža unapred kompajlirani paketi za većinu distribucija Linux, Windows и macOSPrijave za Android i iOS se isporučuju putem prodavnica aplikacija.

Imam najnoviju Fedoru Linux 31, i prije instalacije bio sam previše lijen da pročitam uputstvo. Samo sam pronašao pakete. wireguard-tools, instalirao ih, a onda nisam mogao shvatiti zašto ništa ne radi. Dalja istraga je pokazala da nisam instalirao paket wireguard-dkms (sa mrežnim drajverom), a nije ga bilo u spremištu moje distribucije.

Da sam pročitao uputstva, preduzeo bih prave korake:

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

Imam instaliranu Raspbian Buster distribuciju na svom Raspberry Pi, već postoji paket wireguard, instalirajte ga:

$ sudo apt install wireguard

Na telefonu Android Instalirao/la sam aplikaciju WireGuard VPN iz zvaničnog kataloga Google App Store-a.

Instaliranje ključeva

Za autentifikaciju čvorova Wireguard Koristi jednostavnu shemu privatnog/javnog ključa za autentifikaciju VPN čvorova. VPN ključeve možete jednostavno 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 fajlova). Nećemo se pozivati ​​na datoteke u konfiguracijama, ali kopirajte sadržaj ovdje: svaki ključ je jedan red u base64.

Kreiranje konfiguracijske datoteke za VPN server (Raspberry Pi)

Konfiguracija je prilično jednostavna, kreirao sam sljedeći fajl /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
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 = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Par napomena:

  • Na odgovarajuća mjesta trebate umetnuti linije iz datoteka sa ključevima
  • Moj VPN koristi interni domet 10.200.200.0/24
  • Za timove PostUp/PostDown Imam eksterno mrežno sučelje wwan0, vi možda imate drugi (na primjer, eth0)

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

$ sudo wg-quick up wg0

Jedan mali detalj: koristio sam kao DNS server dnsmasq povezan na mrežni interfejs br0, dodao sam i uređaje wg0 na listu dozvoljenih uređaja. U dnsmasq-u, ovo se radi dodavanjem nove linije sa mrežnim interfejsom u konfiguracioni fajl /etc/dnsmasq.conf, na primjer:

interface=br0
interface=wg0

Takođe, dodao sam iptable pravilo da dozvoli saobraćaj na UDP port za slušanje (51280):

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

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

$ sudo systemctl enable wg-quick@wg0.service

Konfiguracija klijenta za laptop

Na laptopu kreirajte konfiguracionu datoteku /etc/wireguard/wg0.conf sa istim postavkama:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Napomene:

  • Umjesto edgewalker-a, trebate navesti javni IP ili VPN server host
  • Postavljanjem AllowedIPs na 10.200.200.0/24, koristimo samo VPN za pristup internoj mreži. Saobraćaj ka svim ostalim IP adresama/serverima će i dalje ići kroz "obične" otvorene kanale. Koristiće se i unapred konfigurisani DNS server na laptopu.

Za testiranje i automatsko pokretanje koristimo iste komande wg-quick и systemd:

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

Podešavanje klijenta za Android-telefon

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

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Za razliku od konfiguracije laptopa, telefon bi trebao koristiti naš VPN server kao svoj DNS server (string DNS), kao i proći sav promet kroz VPN tunel (AllowedIPs = 0.0.0.0/0).

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

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

QR kod će biti ispisan na konzoli kao ASCII. Može se skenirati iz aplikacije. Android VPN i automatski konfigurirajte VPN tunel.

zaključak

podešavanje WireGuard jednostavno magično u poređenju sa OpenVPN.

izvor: www.habr.com

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster