Nastavitev preprostega VPN-ja z WireGuard in Raspberry Pi kot strežnik

Ker WireGuard bo postal del prihodnje jedro Linux 5.6, sem se odločil, da preverim, kako najbolje integrirati ta VPN z mojim LTE usmerjevalnik/dostopna točka na Raspberry Pi.

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

  • Raspberry Pi 3 z LTE modulom in javnim naslovom IP. Tukaj bo strežnik VPN (v nadaljevanju v besedilu se imenuje robnik)
  • Telefon vklopljen Android, ki mora za vso komunikacijo uporabljati VPN
  • Prenosni računalnik Linux, ki naj bi uporabljal VPN samo znotraj omrežja

Vsaka naprava, ki se poveže z VPN, mora biti sposobna vzpostaviti povezavo z vsemi drugimi napravami. Na primer, telefon bi moral imeti možnost povezave s spletnim strežnikom na prenosnem računalniku, če sta obe napravi del omrežja VPN. Če se izkaže, da je nastavitev precej preprosta, lahko razmislite o povezavi namizja z VPN (prek Etherneta).

Glede na to, da žične in brezžične povezave sčasoma postajajo vse manj varne (ciljno usmerjeni napadi, KRACK WPA2 vdor napad и Dragonblood napad na WPA3), resno razmišljam o uporabi WireGuard za vse moje naprave, ne glede na to, v kakšnem okolju delujejo.

Namestitev programske opreme

WireGuard zagotavlja vnaprej prevedeni paketi za večino distribucij Linux, Windows и macOSVloge za Android in iOS so dostavljeni prek trgovin z aplikacijami.

Imam najnovejšo Fedoro Linux 31, in pred namestitvijo sem bil preveč len, da bi prebral priročnik. Našel sem samo pakete. wireguard-tools, jih namestil in potem nisem mogel ugotoviti, zakaj nič ne deluje. Nadaljnja preiskava je pokazala, da paketa nimam nameščenega wireguard-dkms (z omrežnim gonilnikom), vendar ga ni bilo v repozitoriju moje distribucije.

Če bi prebral navodila, bi naredil pravilne korake:

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

Na Raspberry Pi imam nameščeno distribucijo Raspbian Buster, tam že obstaja paket wireguard, namestite:

$ sudo apt install wireguard

Po telefonu Android Namestil/a sem aplikacijo WireGuard VPN iz uradnega kataloga Google App Store.

Namestitev ključev

Za preverjanje pristnosti vozlišč Wireguard Uporablja preprosto shemo zasebnega/javnega ključa za preverjanje pristnosti vozlišč VPN. Ključe VPN lahko preprosto ustvarite z naslednjim ukazom:

$ 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

Tako dobimo tri pare ključev (šest datotek). Ne bomo se sklicevali na datoteke v konfiguracijah, temveč kopirali vsebino sem: vsak ključ je ena vrstica v base64.

Ustvarjanje konfiguracijske datoteke za strežnik VPN (Raspberry Pi)

Konfiguracija je precej preprosta, ustvaril sem naslednjo datoteko /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

Nekaj ​​opomb:

  • Na ustrezna mesta morate vstaviti vrstice iz datotek s ključi
  • Moj VPN uporablja notranji pas 10.200.200.0/24
  • Za ekipe PostUp/PostDown Jaz imam zunanji omrežni vmesnik wwan0, ti imaš lahko drugega (na primer eth0)

Omrežje VPN je enostavno dvigniti z naslednjim ukazom:

$ sudo wg-quick up wg0

Ena majhna podrobnost: kot strežnik DNS sem uporabil dnsmasq vezan na omrežni vmesnik br0, dodal sem tudi naprave wg0 na seznam dovoljenih naprav. V dnsmasq se to izvede z dodajanjem nove vrstice omrežnega vmesnika v konfiguracijsko datoteko /etc/dnsmasq.conf, na primer:

interface=br0
interface=wg0

Poleg tega sem dodal pravilo iptable za dovoljenje prometa do vrat za poslušanje UDP (51280):

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

Zdaj, ko vse deluje, lahko nastavimo samodejni zagon tunela VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfiguracija odjemalca na prenosniku

Ustvarite konfiguracijsko datoteko na prenosnem računalniku /etc/wireguard/wg0.conf z enakimi nastavitvami:

[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

Opombe:

  • Namesto edgewalkerja morate določiti javnega gostitelja strežnika IP ali VPN
  • Z nastavitvijo AllowedIPs o 10.200.200.0/24, uporabljamo samo VPN za dostop do notranjega omrežja. Promet do vseh drugih naslovov/strežnikov IP bo še naprej potekal po »normalnih« odprtih kanalih. Uporabil bo tudi vnaprej konfiguriran strežnik DNS na prenosniku.

Za testiranje in samodejni zagon uporabljamo iste ukaze wg-quick и systemd:

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

Nastavitev odjemalca za Android-telefon

Za telefon Android Ustvarimo zelo podobno konfiguracijsko datoteko (poimenujemo jo 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 razliko od konfiguracije na prenosniku mora telefon kot strežnik DNS uporabljati naš strežnik VPN (linija DNS), prav tako pa ves promet prenesejo skozi tunel VPN (AllowedIPs = 0.0.0.0/0).

Namesto kopiranja datoteke v mobilno napravo jo lahko pretvorite v kodo QR:

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

Koda QR bo v konzolo prikazana kot ASCII. Skenirati jo je mogoče iz aplikacije. Android VPN in samodejno konfigurirajte VPN tunel.

Izhod

prilagoditev WireGuard preprosto čarobno v primerjavi z OpenVPN.

Vir: www.habr.com

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster