Postavite jednostavan VPN s WireGuardom i Raspberry Pi kao poslužiteljem

Od WireGuarda postati dio buduće jezgre Linuxa 5.6, odlučio sam vidjeti kako najbolje integrirati ovaj VPN sa svojim 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)
  • Android telefon koji mora koristiti VPN za svu komunikaciju
  • Linux prijenosno računalo koje treba 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 WireGuarda za sve svoje uređaje, bez obzira na okruženje u kojem se nalaze.

Instalacija softvera

WireGuard pruža unaprijed kompajlirani paketi za većinu Linux, Windows i macOS distribucija. Aplikacije za Android i iOS isporučuju se putem kataloga aplikacija.

Imam najnoviji Fedora Linux 31 i bio sam previše lijen da pročitam priručnik prije instalacije. Upravo 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

Instalirao sam aplikaciju na svom android telefonu WireGuardVPN iz službenog kataloga Google App Storea.

Ugradnja ključeva

Za provjeru autentičnosti čvorova, Wireguard koristi jednostavnu shemu privatnog/javnog ključa za provjeru autentičnosti VPN čvorova. Možete jednostavno izraditi VPN ključeve 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 [email protected]

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 [email protected]

Postavljanje klijenta na Android telefonu

Za Android telefon stvaramo 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 biti ispisan na konzoli kao ASCII. Može se skenirati iz Android VPN aplikacije i automatski postaviti VPN tunel.

Izlaz

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

Izvor: www.habr.com

Dodajte komentar