Postavljanje jednostavnog VPN-a s WireGuard i Raspberry Pi kao poslužitelj

Od WireGuard postati dio buduća jezgra Linux 5.6, odlučio sam vidjeti kako najbolje integrirati ovaj VPN s mojim LTE usmjerivač/pristupna točka na Raspberry Pi.

Оборудование

  • Raspberry Pi 3 s LTE modulom i javnim IP-om. Postojat će VPN poslužitelj (u daljnjem tekstu hodač po rubu)
  • Telefon uključen Android, koji mora koristiti VPN za svu komunikaciju
  • bilježnica Linux, koji bi trebao koristiti VPN samo unutar mreže

Svaki uređaj koji se spaja na VPN mora se moći povezati sa svim drugim uređajima. Na primjer, telefon bi se trebao moći povezati s web poslužiteljem na prijenosnom računalu ako su oba uređaja dio VPN mreže. Ako je postavljanje dovoljno jednostavno, možete razmisliti o povezivanju na VPN i radnu površinu (preko Etherneta).

Uzimajući u obzir da žičane i bežične veze s vremenom postaju manje sigurne (ciljane napade, 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 unaprijed kompajlirani paketi za većinu distribucija Linux, Windows и macOSPrijave za Android i iOS se isporučuju putem trgovina aplikacija.

Imam najnoviju Fedoru Linux 31, a prije instalacije bio sam previše lijen da pročitam priručnik. Samo sam pronašao pakete. wireguard-tools, instalirao ih, a zatim nisam mogao shvatiti zašto ništa ne radi. Daljnja istraga otkrila je da nisam imao instaliran paket wireguard-dkms (s mrežnim upravljačkim programom), a nije ga bilo u repozitoriju moje distribucije.

Da sam pročitao upute, poduzeo bih prave korake:

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

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

$ sudo apt install wireguard

Na telefonu Android Instalirao/la sam aplikaciju WireGuard VPN iz službenog kataloga Google App Storea.

Ugradnja 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

To nam daje tri para ključeva (šest datoteka). Nećemo se pozivati ​​na datoteke u konfiguracijama, ali kopirajte sadržaj ovdje: svaki ključ je jedan redak u base64.

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

Konfiguracija je vrlo jednostavna, stvorio sam sljedeću datoteku /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 morate umetnuti retke iz datoteka s ključevima
  • Moj VPN koristi interni domet 10.200.200.0/24
  • Za timove PostUp/PostDown Imam vanjsko mrežno sučelje wwan0, vi možda imate neko drugo (na primjer, eth0)

VPN mreža se lako otvara sljedećom naredbom:

$ sudo wg-quick up wg0

Jedan mali detalj: kao DNS poslužitelj koristio sam dnsmasq spojen na mrežno sučelje br0, dodao sam i uređaje wg0 na popis dopuštenih uređaja. U dnsmasqu se to radi dodavanjem novog retka s mrežnim sučeljem konfiguracijskoj datoteci /etc/dnsmasq.conf, na primjer:

interface=br0
interface=wg0

Također, dodao sam iptable pravilo za dopuštanje prometa na slušajući UDP port (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 prijenosnog računala

Na prijenosnom računalu izradite konfiguracijsku datoteku /etc/wireguard/wg0.conf s 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

Bilješke:

  • Umjesto edgewalkera morate navesti javni IP ili VPN poslužitelj
  • Postavljanjem AllowedIPs na 10.200.200.0/24, koristimo samo VPN za pristup internoj mreži. Promet prema svim ostalim IP adresama/poslužiteljima nastavit će ići kroz "redovne" otvorene kanale. Također će se koristiti unaprijed konfigurirani DNS poslužitelj na prijenosnom računalu.

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

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

Postavljanje klijenta za Android-telefon

Za telefon Android Izrađujemo 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 prijenosnog računala, telefon bi trebao koristiti naš VPN poslužitelj kao DNS poslužitelj (string DNS), kao i 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 na konzoli kao ASCII. Može se skenirati iz aplikacije. Android VPN i automatski konfigurirati VPN tunel.

Izlaz

podešavanje WireGuard jednostavno čarobno u usporedbi s OpenVPN.

Izvor: www.habr.com

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