Seadistame lihtsa VPN-i WireGuardiga ja Raspberry Pi-ga serverina.

Kuna WireGuard saab osaks tuleviku Linuxi 5.6 tuumast, otsustasin uurida, kuidas parimal viisil integreerida see VPN minu LTE ruuteri/juurdepääsupunktiga Raspberry Pi.

Seadmed

  • Raspberry Pi 3 LTE mooduliga ja avaliku IP-aadressiga. Siin saab olema VPN-server (edaspidi nimetatud edgewalker)
  • Android telefon, mis peab kasutama VPN-i kõigi suhtluste jaoks
  • Linuxi sülearvuti, mis peab kasutama VPN-i ainult võrgu sees

Igal seadmel, mis on ühendatud VPN-iga, peab olema võimalus suhelda kõigi teiste seadmete vahel. Näiteks peab telefon saama ühenduda sülearvuti veebiserveriga, kui mõlemad seadmed kuuluvad VPN-i võrku. Kui seadistamine osutub piisavalt lihtsaks, võib kaaluda ka lauaarvuti ühendamist VPN-iga (Etherneti kaudu).

Arvestades, et kaablite ja traadita ühendused muutuvad ajaga üha vähem turvaliseks (sihtotstarbelised rünnakud, KRACK rünnak WPA2 purustamiseks ja Dragonblood rünnak WPA3 vastu), kaalun tõsiselt WireGuardi kasutamist kõigile oma seadmetele, sõltumata nende töökeskkonnast.

Tarkvara installimine

WireGuard pakub enne kokkupandud paketid enamikule Linuxi, Windowsi ja macOS-i distributsioonidest. Androidi ja iOS-i rakendused on saadaval rakenduste kataloogides.

Mul on viimane Fedora Linux 31, ja enne installimist ei viitsinud ma juhendit lugeda. Lihtsalt leidsin paketid wireguard-tools, installisin need ja siis ei saanud aru, miks miski ei tööta. Edasine uurimine näitas, et mul ei olnud paigaldatud paketti wireguard-dkms (võrgu draiver), ja sellel ei olnud minu distributsiooni kogus.

Kui oleksin juhiseid lugenud, oleksin teinud õiged sammud:

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

Raspberry Pi-l on mul installitud Raspbian Buster, seal on juba pakett wireguard, paigaldame selle:

$ sudo apt install wireguard

Mobiilis olen installinud rakenduse WireGuard VPN ametlikust Google Play Store'i kataloogist.

Võtmete paigaldamine

Wireguard kasutab VPN-i sõlmede autentimiseks lihtsat private/public võtme skeemi. VPN-i võtmeid on lihtne luua järgmise käsuga:

$ 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

See annab meile kolm võtmepaari (kuus faili). Ära viita failidele konfiguratsioonides, vaid kopeeri siia sisu: iga võti on üks rida base64 vormingus.

VPN-serveri konfiguratsioonifaili loomine (Raspberry Pi)

Konfiguratsioon on piisavalt lihtne, koostasin järgmise faili /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

Mõned märkused:

  • Tuleb lisada read failidest võtmetest vastavatesse kohtadesse
  • Minu VPN-võrk kasutab sisemist vahemikku 10.200.200.0/24
  • Käskude jaoks PostUp/PostDown mul on määratud väline võrguliides wwan0, teil võib olla teine (näiteks eth0)

VPN-võrk käivitub lihtsalt järgmise käsuga:

$ sudo wg-quick up wg0

Üks väike detail: DNS-serverina kasutasin dnsmasq mis on seotud võrgu liidesega br0, lisasin ka seadmed wg0 lubatud seadmete loendisse. dnsmasq'is tehakse seda, lisades konfiguratsioonifaili uue rea võrguühenduse kohta /etc/dnsmasq.conf, näiteks:

interface=br0
interface=wg0

Lisaks olen lisanud iptable'i reegli, et lubada liiklus UDP-pordile (51280):

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

Nüüd, kui kõik töötab, saame seadistada VPN-tunneli automaatse käivitamise:

$ sudo systemctl enable wg-quick@wg0.service

Kliendi konfiguratsioon sülearvutis

Sülearvutis loome konfiguratsioonifaili /etc/wireguard/wg0.conf samade seadistustega:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

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

Märkused:

  • Edgewalker asemel tuleks näidata VPN-serveri avalikku IP-aadressi või hosti
  • Pärast AllowedIPs järgnevaga 10.200.200.0/24, kasutame VPN-i ainult sisevõrku sisenemiseks. Kõik muu liiklus IP-aadresside/serverite jaoks läheb endiselt "tavaliste" avatud kanalite kaudu. Samuti kasutatakse sülearvutis eelnevalt seadistatud DNS-serverit.

Testimiseks ja automaatseks käivitamiseks kasutame samu käske wg-quick ja systemd:

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

Kliendi seadistamine Android-telefonis

Androidi telefonile loome väga sarnase seadistusfaili (nimetame selle 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

Erinevalt sülearvuti seadistusest peab telefon kasutama meie VPN-serverit DNS-serverina (rida DNS), samuti peab see kogu liikluse VPN-tunneli kaudu edastama (AllowedIPs = 0.0.0.0/0).

Faili mitte mobiilseadmesse kopeerimise asemel saab selle muuta QR-koodiks:

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

QR-kood kuvatakse konsoolis ASCII-formaadis. Seda saab skannida Android VPN rakendusest ja VPN-tunneli seadistamine toimub automaatselt.

Kokkuvõte

WireGuard'i seadistamine on võrreldes OpenVPN-iga lihtsalt maagiline.

Allikas: habr.com

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster