Configurăm un VPN simplu cu WireGuard și Raspberry Pi ca server

Deoarece WireGuard va deveni parte din viitorul kernel-ului Linux 5.6, am decis să văd cum să integrez cel mai bine acest VPN cu router-ul LTE/punctul de acces pe Raspberry Pi.

Echipament

  • Raspberry Pi 3 cu modul LTE și adresa IP publică. Aici va fi serverul VPN (denumit în continuare edgewalker)
  • Telefonul Android, care trebuie să folosească VPN-ul pentru toate comunicațiile
  • Laptop Linux, care trebuie să folosească VPN-ul doar în rețea

Fiecare dispozitiv care se conectează la VPN ar trebui să aibă capacitatea de a se conecta la toate celelalte dispozitive. De exemplu, telefonul ar trebui să poată accesa serverul web de pe laptop, dacă ambele dispozitive fac parte din rețeaua VPN. Dacă configurarea va fi suficient de simplă, putem lua în considerare conectarea unui desktop la VPN (prin Ethernet).

Ținând cont că conexiunile prin cablu și wireless devin din ce în ce mai puțin sigure (atacuri direcționate, atacul KRACK care vizează WPA2 și atacul Dragonblood împotriva WPA3), iau în serios utilizarea WireGuard pentru toate dispozitivele mele, indiferent de mediul în care funcționează.

Instalarea software-ului

WireGuard oferă pachete precompilate pentru cele mai multe distribuții Linux, Windows și macOS. Aplicațiile pentru Android și iOS sunt disponibile prin intermediul magazinelor de aplicații.

Am ultima versiune Fedora Linux 31, iar înainte de instalare mi-am găsit prea multă lene să citesc manualul. Pur și simplu am găsit pachetele wireguard-tools, le-am instalat și apoi nu am putut înțelege de ce nimic nu funcționează. O cercetare ulterioară a arătat că nu am instalat pachetul wireguard-dkms (cu driverul rețelei), iar acesta nu era în depozitul distribuției mele.

Dacă aș fi citit instrucțiunile, aș fi făcut pașii corecți:

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

Pe Raspberry Pi am instalat distribuția Raspbian Buster, acolo este deja pachetul wireguard, îl instalăm:

$ sudo apt install wireguard

Pe telefonul Android am instalat aplicația WireGuard VPN din magazinul oficial Google App Store.

Instalarea cheilor

Pentru autentificarea nodurilor, WireGuard utilizează o schemă simplă de chei private/publice pentru a autentifica nodurile VPN. Puteți crea cu ușurință chei VPN folosind următoarea comandă:

$ 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

Acesta ne oferă trei perechi de chei (șase fișiere). Nu vom face referire la fișiere în configurații, ci vom copia aici conținutul: fiecare cheie este un singur rând în base64.

Crearea fișierului de configurare pentru serverul VPN (Raspberry Pi)

Configurația este destul de simplă, am creat următorul fișier /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]
# mobile phone
PublicKey = 
AllowedIPs = 10.200.200.3/32

Câteva observații:

  • Trebuie să inserați liniile din fișierele cu chei în locurile corespunzătoare
  • Rețeaua mea VPN folosește o gamă interioară 10.200.200.0/24
  • Pentru comenzile PostUp/PostDown am specificat interfața de rețea externă wwan0, a dumneavoastră poate fi diferită (de exemplu, eth0)

Rețeaua VPN poate fi activată cu următoarea comandă:

$ sudo wg-quick up wg0

Un mic detaliu: ca server DNS am folosit dnsmasq legat de interfața de rețea br0, de asemenea, am adăugat dispozitive wg0 în lista dispozitivelor permise. În dnsmasq, acest lucru se face prin adăugarea unei noi linii cu interfața de rețea în fișierul de configurare /etc/dnsmasq.conf, de exemplu:

interface=br0
interface=wg0

De asemenea, am adăugat o regulă iptable pentru a permite traficul pe portul UDP de ascultare (51280):

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

Acum, când totul funcționează, putem configura pornirea automată a tunelului VPN:

$ sudo systemctl enable wg-quick@wg0.service

Configurația clientului pe laptop

Pe laptop creăm un fișier de configurare /etc/wireguard/wg0.conf cu aceleași setări:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

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

Observații:

  • În loc de edgewalker, trebuie să specificați IP-ul public sau host-ul serverului VPN
  • După ce am instalat AllowedIPs pe 10.200.200.0/24, folosim VPN-ul doar pentru acces la rețeaua internă. Traficul pentru toate celelalte IP-uri/servere va continua să circule prin canale deschise "obișnuite". De asemenea, se va folosi serverul DNS pre-configurat pe laptop.

Pentru testare și pornire automată folosim aceleași comenzi wg-quick și systemd:

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

Configurarea clientului pe telefonul Android

Pentru telefonul Android, creăm un fișier de configurare foarte similar (îl vom numi 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

Spre deosebire de configurația de pe laptop, telefonul trebuie să folosească serverul nostru VPN ca server DNS (linia DNS), precum și să permită trecerea întregului trafic prin tunelul VPN (AllowedIPs = 0.0.0.0/0).

În loc să copiați fișierul pe dispozitivul mobil, îl puteți transforma într-un cod QR:

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

Codul QR va apărea în consolă ca ASCII. Poate fi scanat din aplicația VPN Android și va configura automat tunelul VPN.

Ieșire

Configurarea WireGuard este pur și simplu magică în comparație cu OpenVPN.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster