Eftersom WireGuard framtida kärna Linux 5.6, bestämde jag mig för att se hur jag bäst kunde integrera detta VPN med min .
Оборудование
- 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 (, и ), Jag funderar starkt på att använda WireGuard för alla mina enheter, oavsett vilken miljö de körs i.
Programvaruinstallation
WireGuard erbjuder 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 wireguardPå telefonen Android Jag installerade applikationen 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.keyDetta 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/32Ett 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/PostDownJag 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=wg0Jag 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 ACCEPTNu när allt fungerar kan vi ställa in automatisk start av VPN-tunneln:
$ sudo systemctl enable wg-quick@wg0.serviceKlientkonfiguration 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:51820Anmärkningar:
- Istället för edgewalker behöver du ange VPN-serverns publika IP-adress eller värd.
- Har installerat
AllowedIPspå10.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.serviceKonfigurera 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.confQR-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
