StÀller in en enkel VPN med WireGuard och Raspberry Pi som server

Eftersom WireGuard blir en del av den framtida Linux 5.6-kÀrnan, beslutade jag mig för att se hur jag bÀst kan integrera denna VPN med min LTE-router/punkt för Ätkomst pÄ Raspberry Pi.

Utrustning

  • Raspberry Pi 3 med LTE-modul och offentlig IP-adress. HĂ€r kommer VPN-servern att finnas (i texten kommer den att kallas edgewalker)
  • En Android-telefon som ska anvĂ€nda VPN för all kommunikation
  • En Linux-laptop som endast ska anvĂ€nda VPN inom nĂ€tverket

Varje enhet som ansluter till VPN mÄste kunna nÄ alla andra enheter. Till exempel, telefonen mÄste kunna ansluta till webbservern pÄ laptopen, om bÄda enheterna Àr en del av VPN-nÀtverket. Om installationen visar sig tillrÀckligt enkel kan man övervÀga att ansluta Àven skrivbordet (via Ethernet).

Med tanke pÄ att trÄdbundna och trÄdlösa anslutningar blir allt mindre sÀkra över tid (mÄlinriktade attacker, KRACK-attacken mot WPA2 och Dragonblood-attacken mot WPA3), övervÀger jag allvarligt att anvÀnda WireGuard för alla mina enheter, oavsett i vilken miljö de fungerar.

Installation av programvara

WireGuard erbjuder förkompilerade paket för de flesta distributioner av Linux, Windows och macOS. Appar för Android och iOS levereras via appbutiker.

Jag har den senaste Fedora Linux 31, och innan installationen orkade jag inte lÀsa manualen. Jag hittade bara paketen wireguard-tools, installerade dem, och kunde sedan inte förstÄ varför ingenting fungerade. Vid vidare undersökning visade det sig att jag inte hade paketet wireguard-dkms (med nÀtverksdrivrutin), och det fanns inte i mitt distributionsförrÄd.

Om jag hade lÀst instruktionen, skulle jag ha gjort rÀtt steg:

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

PÄ Raspberry Pi har jag distributionen Raspbian Buster, dÀr paketet redan finns wireguard, vi installerar det:

$ sudo apt install wireguard

PÄ Android-telefonen installerade jag appen WireGuard VPN frÄn den officiella Google App Store-katalogen.

Installation av nycklar

För autentisering av noder anvÀnder Wireguard ett enkelt system med privat/offentlig nyckel för autentisering av VPN-noder. Du kan enkelt skapa VPN-nycklar med följande kommando:

$ 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

Det ger oss tre nyckelpar (sex filer). Vi kommer inte att hÀnvisa till filerna i konfigurationerna, utan vi kopierar hit innehÄllet: varje nyckel Àr en rad i base64.

Skapa konfigurationsfil för VPN-server (Raspberry Pi)

Konfigurationen Àr ganska enkel, jag har skapat följande fil /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]
# mobiltelefon
PublicKey = 
AllowedIPs = 10.200.200.3/32

NÄgra anteckningar:

  • StrĂ€ngarna frĂ„n nyckelfilerna mĂ„ste sĂ€ttas in pĂ„ de relevanta stĂ€llena
  • NĂ€tverket för min VPN anvĂ€nder ett internt intervall 10.200.200.0/24
  • För kommandon PostUp/PostDown jag har angett det externa nĂ€tverksgrĂ€nssnittet wwan0, du kan ha ett annat (t.ex. eth0)

VPN-nÀtverket startas enkelt med följande kommando:

$ sudo wg-quick up wg0

En liten detalj: jag anvÀnde en DNS-server dnsmasq kopplad till nÀtverksgrÀnssnittet br0, jag la Àven till enheter wg0 i listan över tillÄtna enheter. I dnsmasq görs detta genom att lÀgga till en ny rad med nÀtverksgrÀnssnittet i konfigurationsfilen /etc/dnsmasq.conf, till exempel:

interface=br0
interface=wg0

Dessutom har jag lagt till en iptable-regel för att tillÄta trafik till den lyssnande UDP-porten (51280):

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

Nu nÀr allt fungerar kan vi ange automatisk uppstart av VPN-tunneln:

$ sudo systemctl enable wg-quick@wg0.service

Klientkonfiguration pÄ bÀrbara datorn

PÄ bÀrbara datorn skapar vi en konfigurationsfil /etc/wireguard/wg0.conf med samma instÀllningar:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

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

Noteringar:

  • IstĂ€llet för edgewalker mĂ„ste du ange den offentliga IP-adressen eller vĂ€rden pĂ„ VPN-servern
  • Genom att installera AllowedIPs till 10.200.200.0/24, anvĂ€nder vi VPN endast för att fĂ„ Ă„tkomst till det interna nĂ€tverket. Trafiken till alla andra IP-adresser/serverar kommer fortfarande att gĂ„ genom "vanliga" öppna kanaler. En förkonfigurerad DNS-server pĂ„ den bĂ€rbara datorn kommer ocksĂ„ att anvĂ€ndas.

För test och automatisk uppstart anvÀnder vi samma kommandon wg-quick och systemd:

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

KlientinstÀllning pÄ Android-telefon

För Android-telefonen skapar vi en mycket liknande konfigurationsfil (vi kallar den 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

Till skillnad frÄn konfigurationen pÄ bÀrbara datorer bör telefonen anvÀnda vÄr VPN-server som DNS-server (rad DNS), samt dirigera all trafik genom VPN-tunneln (AllowedIPs = 0.0.0.0/0).

IstÀllet för att kopiera filen till den mobila enheten kan den omvandlas till en QR-kod:

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

QR-koden kommer att visas i konsolen som ASCII. Den kan skannas frÄn Android VPN-appen och automatiskt konfigurera VPN-tunneln.

Utdata

InstÀllningen av WireGuard Àr helt magisk jÀmfört med OpenVPN.

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster