Ker WireGuard
Оборудование
- Raspberry Pi 3 z LTE modulom in javnim naslovom IP. Tukaj bo strežnik VPN (v nadaljevanju v besedilu se imenuje robnik)
- Telefon Android, ki mora za vse komunikacije uporabljati VPN
- Prenosnik Linux, ki bi moral uporabljati samo VPN v omrežju
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 (
Namestitev programske opreme
WireGuard zagotavlja
Imam najnovejši Fedora Linux 31 in bil sem prelen, da bi pred namestitvijo prebral priročnik. Pravkar sem našel 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
Na svoj Android telefon sem namestil aplikacijo
Namestitev ključev
Za avtentikacijo vrstnikov Wireguard uporablja preprosto shemo zasebnih/javnih ključev za avtentikacijo vrstnikov 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 [email protected]
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
o10.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 [email protected]
Nastavitev odjemalca na telefonu Android
Za telefon Android ustvarimo zelo podobno konfiguracijsko datoteko (recimo ji 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 prikazana na konzoli kot ASCII. Lahko ga skenirate iz aplikacije Android VPN in samodejno vzpostavi tunel VPN.
Izhod
Nastavitev WireGuarda je preprosto čarobna v primerjavi z OpenVPN.
Vir: www.habr.com