Ker WireGuard prihodnje jedro Linux 5.6, sem se odločil, da preverim, kako najbolje integrirati ta VPN z mojim .
Оборудование
- 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 (, и ), resno razmišljam o uporabi WireGuard za vse moje naprave, ne glede na to, v kakšnem okolju delujejo.
Namestitev programske opreme
WireGuard zagotavlja 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 wireguardPo telefonu Android Namestil/a sem aplikacijo 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.keyTako 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/32Nekaj 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/PostDownJaz 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=wg0Poleg tega sem dodal pravilo iptable za dovoljenje prometa do vrat za poslušanje UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTZdaj, ko vse deluje, lahko nastavimo samodejni zagon tunela VPN:
$ sudo systemctl enable wg-quick@wg0.serviceKonfiguracija 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:51820Opombe:
- Namesto edgewalkerja morate določiti javnega gostitelja strežnika IP ali VPN
- Z nastavitvijo
AllowedIPso10.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.serviceNastavitev 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.confKoda 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
