En einfachen VPN opbauen mat WireGuard a Raspberry Pi als Server

Well WireGuard wäert Deel ginn vum zukünftege Linux Kernel 5.6, hunn ech beschloss ze kucken wéi ech am beschten dëse VPN mat mengem LTE Router / Zougang Punkt op Raspberry Pi.

Ausrüstung

  • Raspberry Pi 3 mat LTE Modul an ëffentlech IP Adress. Et gëtt e VPN Server hei (nodréiglech am Text gëtt et genannt edgewalker)
  • En Android Telefon deen e VPN fir all Kommunikatioun muss benotzen
  • Linux Laptop deen nëmmen e VPN am Netz soll benotzen

All Apparat, deen mam VPN verbënnt, muss fäeg sinn mat all aner Apparater ze verbannen. Zum Beispill, en Telefon soll fäeg sinn mat engem Webserver op engem Laptop ze verbannen, wa béid Apparater Deel vun engem VPN Netz sinn. Wann de Setup zimmlech einfach ass, da kënnt Dir drun denken den Desktop mam VPN ze verbannen (iwwer Ethernet).

Bedenkt datt kabellos a drahtlose Verbindunge mat der Zäit ëmmer manner sécher ginn (cibléiert Attacken, KRACK WPA2 knacken Attack и Dragonblood Attack géint WPA3), Ech iwwerleen eescht WireGuard fir all meng Apparater ze benotzen, egal a wéi engem Ëmfeld se sinn.

Software Installatioun

WireGuard stellt virkompiléiert Packagen fir déi meescht Linux, Windows a macOS Verdeelungen. Android an iOS Apps ginn duerch App Verzeichnisser geliwwert.

Ech hunn déi lescht Fedora Linux 31, an ech war ze faul fir d'Handbuch ze liesen ier Dir installéiert. Just d'Päck fonnt wireguard-tools, installéiert hinnen, a konnt dann net erauszefannen firwat näischt fonctionnéiert. Weider Enquête huet verroden datt ech de Package net installéiert hunn wireguard-dkms (mat engem Netzwierk Chauffer), awer et war net am Repository vu menger Verdeelung.

Wann ech d'Instruktioune gelies hätt, hätt ech déi richteg Schrëtt gemaach:

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

Ech hunn d'Raspbian Buster Verdeelung op mengem Raspberry Pi installéiert, et gëtt schonn e Package do wireguard, installéieren et:

$ sudo apt install wireguard

Op mengem Android Telefon hunn ech d'Applikatioun installéiert WireGuardVPN aus dem offiziellen Google App Store Katalog.

Installatioun vun Schlësselen

Fir Peer Authentifikatioun benotzt Wireguard en einfachen privaten / ëffentleche Schlësselschema fir VPN Peer ze authentifizéieren. Dir kënnt einfach VPN Schlësselen erstellen andeems Dir de folgende Kommando benotzt:

$ 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

Dëst gëtt eis dräi Schlësselpueren (sechs Dateien). Mir wäerten net op d'Fichier'en an de Konfiguratiounen bezéien, awer kopéieren den Inhalt hei: all Schlëssel ass eng Zeil an base64.

Erstellt eng Konfiguratiounsdatei fir den VPN Server (Raspberry Pi)

D'Konfiguratioun ass ganz einfach, ech hunn déi folgend Datei erstallt /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

E puer Notizen:

  • Op de passenden Plazen musst Dir Linnen aus de Dateien mat de Schlësselen aginn
  • Mäi VPN benotzt intern Band 10.200.200.0/24
  • Fir Équipen PostUp/PostDown Ech hunn den externen Netzwierk Interface wwan0, Dir hutt vläicht eng aner (zum Beispill eth0)

De VPN-Netzwierk gëtt einfach mam folgendem Kommando erhéicht:

$ sudo wg-quick up wg0

E klengen Detail: als DNS Server deen ech benotzt hunn dnsmasq un engem Netzwierk-Interface gebonnen br0, Ech hunn och Apparater bäigefüügt wg0 op d'Lëscht vun erlaabten Apparater. An dnsmasq gëtt dëst gemaach andeems Dir eng nei Netzwierk-Interface Linn an d'Konfiguratiounsdatei bäidréit /etc/dnsmasq.conf, zum Beispill:

interface=br0
interface=wg0

Zousätzlech hunn ech eng iptable Regel bäigefüügt fir den Traffic op den UDP Nolauschterport (51280) z'erméiglechen:

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

Elo datt alles funktionnéiert, kënne mir den automateschen Start vum VPN-Tunnel opsetzen:

$ sudo systemctl enable [email protected]

Client Konfiguratioun op Laptop

Erstellt eng Konfiguratiounsdatei op engem Laptop /etc/wireguard/wg0.conf mat de selwechten Astellungen:

[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

Notizen:

  • Amplaz Edgewalker musst Dir den ëffentlechen IP oder VPN Server Host spezifizéieren
  • Duerch Astellung AllowedIPs op 10.200.200.0/24, Mir benotzen nëmmen VPN fir Zougang zum internen Netzwierk ze kréien. Traffic op all aner IP Adressen / Server wäert weider duerch "normal" oppe Channels goen. Et wäert och de pre-konfiguréierten DNS-Server um Laptop benotzen.

Fir Testen an automatesche Start benotze mir déiselwecht Kommandoen wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Konfiguratioun vun engem Client op engem Android Telefon

Fir en Android Telefon kreéiere mir eng ganz ähnlech Konfiguratiounsdatei (loosst eis et nennen 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

Am Géigesaz zu der Konfiguratioun um Laptop, muss den Telefon eise VPN Server als DNS Server benotzen (Linn DNS), a passéiert och all Traffic duerch de VPN Tunnel (AllowedIPs = 0.0.0.0/0).

Amplaz d'Datei op Ärem mobilen Apparat ze kopéieren, kënnt Dir se an e QR Code konvertéieren:

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

Den QR Code gëtt op d'Konsole als ASCII erausginn. Et kann aus der Android VPN App gescannt ginn a gëtt automatesch e VPN Tunnel ageriicht.

Konklusioun

WireGuard opzestellen ass einfach magesch am Verglach zum OpenVPN.

Source: will.com

Setzt e Commentaire