Configurate una VPN simplice cù WireGuard è Raspberry Pi cum'è servitore

Dapoi WireGuard diventa parte di di u futuru kernel Linux 5.6, decisu di vede cumu megliu integrà sta VPN cù u mo Router LTE / Puntu di Accessu nantu à Raspberry Pi.

Equipment

  • Raspberry Pi 3 cù modulu LTE è IP publicu. Ci sarà un servitore VPN (in seguitu chjamatu camminatore di bordu)
  • Un telefunu Android chì deve aduprà una VPN per tutte e cumunicazioni
  • Laptop Linux chì deve aduprà VPN solu in a reta

Ogni dispositivu chì si cunnetta à una VPN deve esse capace di cunnette à ogni altru dispositivu. Per esempiu, un telefunu deve esse capace di cunnette à un servitore web in un laptop se i dui dispositi sò parti di una rete VPN. Se a configurazione hè abbastanza simplice, pudete pensà à cunnette à una VPN è un desktop (via Ethernet).

Considérant que les connexions filaires et sans fil deviennent moins sécurisées au fil du temps (attacchi mirati, Attaccu di pirate di KRACK WPA2 и Attaccu Dragonblood contru WPA3), Pensu seriamente à aduprà WireGuard per tutti i mo dispusitivi, ùn importa micca l'ambiente in quale si stanu.

Stallazione di u software

WireGuard furnisce pacchetti precompilati per a maiò parte di e distribuzioni Linux, Windows è macOS. L'applicazioni per Android è iOS sò furnite attraversu cataloghi di app.

Aghju l'ultime Fedora Linux 31 è era troppu pigra per leghje u manuale prima di stallà. Solu trovu i pacchetti wireguard-tools, installati, è dopu ùn pudia capisce perchè nunda ùn funzionava. Ulteriori investigazioni anu revelatu chì ùn aghju micca u pacchettu installatu wireguard-dkms (cù un driver di rete), è ùn era micca in u repository di a mo distribuzione.

Se avessi lettu l'istruzzioni, avissi pigliatu i passi ghjusti:

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

Aghju a distribuzione Raspbian Buster installata nantu à u mo Raspberry Pi, ci hè digià un pacchettu wireguard, stallà lu:

$ sudo apt install wireguard

Aghju installatu l'app nantu à u mo telefunu Android WireGuardVPN da u catalogu ufficiale di Google App Store.

Installazione di chjave

Per autentificà i nodi, Wireguard usa un schema simplice di chjave privata / publica per autentificà i nodi VPN. Pudete facilmente generà chjave VPN cù u cumandimu seguitu:

$ 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

Questu ci dà trè coppie chjave (sei schedari). Ùn avemu micca riferitu à i schedari in cunfigurazione, ma copià u cuntenutu quì: ogni chjave hè una linea in base64.

Creazione di un schedariu di cunfigurazione per un servitore VPN (Raspberry Pi)

A cunfigurazione hè abbastanza simplice, aghju creatu u schedariu seguente /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

Un paru di note:

  • In i lochi apprupriati, avete bisognu di inserisce e linee da i schedari cù i chjavi
  • A mo VPN usa una gamma interna 10.200.200.0/24
  • Per squadre PostUp/PostDown Aghju una interfaccia di rete esterna wwan0, pudete avè una diversa (per esempiu, eth0)

A reta VPN hè facilmente criata cù u cumandimu seguente:

$ sudo wg-quick up wg0

Un picculu dettagliu: cum'è un servitore DNS, aghju utilizatu dnsmasq cunnessu à l'interfaccia di rete br0, Aghju aghjustatu ancu i dispositi wg0 à a lista di i dispusitivi permessi. In dnsmasq, questu hè fattu aghjunghjendu una nova linea cù l'interfaccia di rete à u schedariu di cunfigurazione /etc/dnsmasq.conf, per esempiu:

interface=br0
interface=wg0

Inoltre, aghju aghjustatu una regula iptable per permette u trafficu à u portu UDP d'ascolta (51280):

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

Avà chì tuttu funziona, pudemu registrà u lanciamentu automaticu di u tunnel VPN:

$ sudo systemctl enable [email protected]

Cunfigurazione di u clientu laptop

In u laptop, crea un schedariu di cunfigurazione /etc/wireguard/wg0.conf cù i stessi paràmetri:

[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

Noti:

  • Invece di edgewalker, avete bisognu di specificà un òspite di u servitore IP publicu o VPN
  • Mettendu AllowedIPs nantu 10.200.200.0/24, usemu solu a VPN per accede à a reta interna. U trafficu à tutti l'altri indirizzi IP / servitori continuarà à passà per i canali aperti "regulari". U servitore DNS pre-configuratu nantu à u laptop serà ancu usatu.

Per teste è lanciamentu automaticu, usemu i stessi cumandamenti wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Configurazione di un cliente in un telefunu Android

Per un telefunu Android, creemu un schedariu di cunfigurazione assai simili (chiamemu 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

A cuntrariu di a cunfigurazione di u laptop, u telefunu deve aduprà u nostru servitore VPN cum'è u so servitore DNS (string DNS), è ancu passà tuttu u trafficu attraversu u tunnel VPN (AllowedIPs = 0.0.0.0/0).

Invece di cupià u schedariu à u vostru dispositivu mobile, pudete cunvertisce in un codice QR:

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

U codice QR serà uscita à a cunsola cum'è ASCII. Pò esse scansatu da l'app Android VPN è stabilisce un tunnel VPN automaticamente.

cunchiusioni

L'installazione di WireGuard hè solu magica paragunata à OpenVPN.

Source: www.habr.com

Add a comment