Att konfigurera ett enkelt VPN med WireGuard och Raspberry Pi som server

Eftersom WireGuard kommer att bli en del av framtida kärna Linux 5.6, bestämde jag mig för att se hur jag bäst kunde integrera detta VPN med min LTE-router/åtkomstpunkt på Raspberry Pi.

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

  • Raspberry Pi 3 med LTE-modul och publik IP-adress. Det kommer att finnas en VPN-server här (nedan kallad kantvandrare)
  • Telefon på Android, som måste använda ett VPN för all kommunikation
  • anteckningsbok Linux, som bara ska använda VPN inom nätverket

Varje enhet som ansluter till VPN:t måste kunna ansluta till alla andra enheter. Till exempel bör en telefon kunna ansluta till en webbserver på en bärbar dator om båda enheterna är en del av ett VPN-nätverk. Om installationen är tillräckligt enkel kan du fundera på att ansluta din stationära dator till VPN:et (via Ethernet).

Med tanke på att trådbundna och trådlösa anslutningar blir mindre säkra med tiden (riktade attacker, KRACK-attack för att knäcka WPA2 и Dragonblood-attack mot WPA3), Jag funderar starkt på att använda WireGuard för alla mina enheter, oavsett vilken miljö de körs i.

Programvaruinstallation

WireGuard erbjuder förkompilerade paket för de flesta distributioner Linux, Windows и macOSAnsökningar om Android och iOS levereras via appbutiker.

Jag har den senaste Fedoran Linux 31, och innan installationen var jag för lat för att läsa manualen. Jag hittade just paketen. wireguard-tools, installerade dem, och kunde sedan inte förstå varför ingenting fungerade. Vidare undersökning visade att jag inte hade paketet installerat. wireguard-dkms (med en nätverksdrivrutin), men den fanns inte i arkivet för min distribution.

Om jag hade läst instruktionerna hade jag vidtagit rätt steg:

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

På min Raspberry Pi har jag Raspbian Buster-distributionen installerad, det finns redan ett paket wireguard, vi installerar det:

$ sudo apt install wireguard

På telefonen Android Jag installerade applikationen WireGuard VPN från den officiella Google App Store-katalogen.

Installera nycklar

För att autentisera noder Wireguard Använder ett enkelt privat/publikt nyckelschema för att autentisera VPN-noder. Du kan enkelt generera 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

Detta ger oss tre nyckelpar (sex filer). Vi kommer inte att hänvisa till filerna i konfigurationsfilerna, utan kopiera innehållet hit: varje nyckel är en rad i base64.

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

Konfigurationen är ganska enkel, jag skapade följande fil /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

Ett par kommentarer:

  • Du måste infoga rader från filerna med nycklar på rätt ställen.
  • Mitt VPN använder ett internt intervall 10.200.200.0/24
  • För lag PostUp/PostDown Jag har angett det externa nätverksgränssnittet wwan0, du kan ha ett annat (till exempel eth0)

VPN-nätverket kan enkelt konfigureras med följande kommando:

$ sudo wg-quick up wg0

En liten detalj: som DNS-server använde jag dnsmasq med nätverksgränssnittsbindning br0Jag lade även till enheter wg0 till 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

Jag lade också 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 ställa in automatisk start av VPN-tunneln:

$ sudo systemctl enable wg-quick@wg0.service

Klientkonfiguration på en bärbar dator

På den bärbara datorn skapar vi en konfigurationsfil /etc/wireguard/wg0.conf med samma inställningar:

[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

Anmärkningar:

  • Istället för edgewalker behöver du ange VPN-serverns publika IP-adress eller värd.
  • Har installerat AllowedIPs10.200.200.0/24, vi använder endast VPN för att komma åt det interna nätverket. Trafik till alla andra IP-adresser/servrar kommer att fortsätta gå via "normala" öppna kanaler. En förkonfigurerad DNS-server på den bärbara datorn kommer också att användas.

För testning och automatisk start använder vi samma kommandon wg-quick и systemd:

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

Konfigurera klienten för Android-telefon

För telefon Android Vi skapar en mycket liknande konfigurationsfil (låt oss kalla den 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

Till skillnad från konfigurationen på den bärbara datorn bör telefonen använda vår VPN-server som DNS-server (linje DNS), och även skicka all trafik genom VPN-tunneln (AllowedIPs = 0.0.0.0/0).

Istället för att kopiera filen till din mobila enhet kan du konvertera den till en QR-kod:

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

QR-koden kommer att matas ut till konsolen som ASCII. Den kan skannas från appen. Android VPN och konfigurera VPN-tunneln automatiskt.

Utgång

justering WireGuard helt enkelt magiskt jämfört med OpenVPN.

Källa: will.com

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster