Opsætning af en simpel VPN med WireGuard og Raspberry Pi som server

Da WireGuard blive en del af fremtidig kerne Linux 5.6, besluttede jeg mig for at se, hvordan jeg bedst kunne integrere denne VPN med min LTE-router/adgangspunkt på Raspberry Pi.

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

  • Raspberry Pi 3 med LTE-modul og offentlig IP. Der vil være en VPN-server (i det følgende benævnt edgewalker)
  • Telefonen er tændt Android, som skal bruge en VPN til al kommunikation
  • notesbog Linux, som kun bør bruge VPN inden for netværket

Hver enhed, der opretter forbindelse til en VPN, skal være i stand til at oprette forbindelse til alle andre enheder. For eksempel skal en telefon være i stand til at oprette forbindelse til en webserver på en bærbar computer, hvis begge enheder er en del af et VPN-netværk. Hvis opsætningen er enkel nok, så kan du overveje at oprette forbindelse til en VPN og en desktop (via Ethernet).

I betragtning af at kablede og trådløse forbindelser bliver mindre sikre over tid (målrettede angreb, KRACK WPA2 hacking angreb и Dragonblood angreb mod WPA3), Jeg overvejer seriøst at bruge WireGuard for alle mine enheder, uanset hvilket miljø de kører i.

Softwareinstallation

WireGuard giver prækompilerede pakker for de fleste distributioner Linux, Windows и macOSAnsøgninger om Android og iOS leveres via appbutikker.

Jeg har den nyeste Fedora Linux 31, og før installationen var jeg for doven til at læse manualen. Jeg fandt lige pakkerne. wireguard-tools, installerede dem og kunne så ikke finde ud af, hvorfor intet virkede. Yderligere undersøgelser viste, at jeg ikke havde pakken installeret wireguard-dkms (med en netværksdriver), og den var ikke i min distributions lager.

Hvis jeg havde læst instruktionerne, ville jeg have taget de rigtige skridt:

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

Jeg har Raspbian Buster-distributionen installeret på min Raspberry Pi, der er allerede en pakke wireguard, installer det:

$ sudo apt install wireguard

I telefonen Android Jeg installerede applikationen WireGuard VPN fra det officielle katalog i Google App Store.

Installation af nøgler

At godkende noder Wireguard Bruger et simpelt privat/offentlig nøgleskema til at godkende VPN-noder. Du kan nemt generere VPN-nøgler med følgende 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

Dette giver os tre nøglepar (seks filer). Vi vil ikke referere til filer i configs, men kopiere indholdet her: hver nøgle er en linje i base64.

Oprettelse af en konfigurationsfil til en VPN-server (Raspberry Pi)

Konfigurationen er ret enkel, jeg oprettede følgende 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

Et par noter:

  • På de relevante steder skal du indsætte linjerne fra filerne med tasterne
  • Min VPN bruger intern rækkevidde 10.200.200.0/24
  • For hold PostUp/PostDown Jeg har en ekstern netværksgrænseflade wwan0, du kan have en anden (for eksempel eth0)

VPN-netværket opdrages nemt med følgende kommando:

$ sudo wg-quick up wg0

En lille detalje: som DNS-server brugte jeg dnsmasq tilsluttet netværksgrænsefladen br0, Jeg tilføjede også enheder wg0 til listen over tilladte enheder. I dnsmasq gøres dette ved at tilføje en ny linje med netværksgrænsefladen til konfigurationsfilen /etc/dnsmasq.conf, for eksempel:

interface=br0
interface=wg0

Jeg tilføjede også en iptable-regel for at tillade trafik til den lyttende UDP-port (51280):

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

Nu hvor alt fungerer, kan vi registrere den automatiske lancering af VPN-tunnelen:

$ sudo systemctl enable wg-quick@wg0.service

Laptop klient konfiguration

Opret en konfigurationsfil på den bærbare computer /etc/wireguard/wg0.conf med samme indstillinger:

[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

Bemærkninger:

  • I stedet for edgewalker skal du angive en offentlig IP- eller VPN-servervært
  • Efter at have installeret AllowedIPs10.200.200.0/24, bruger vi kun VPN til at få adgang til det interne netværk. Trafik til alle andre IP-adresser/servere vil fortsat gå gennem "almindelige" åbne kanaler. Den forudkonfigurerede DNS-server på den bærbare computer vil også blive brugt.

Til test og automatisk lancering bruger vi de samme kommandoer wg-quick и systemd:

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

Opsætning af klienten til Android-telefon

Til telefon Android Vi opretter en meget lignende konfigurationsfil (lad os kalde 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

I modsætning til den bærbare computer-konfiguration skal telefonen bruge vores VPN-server som sin DNS-server (streng DNS), samt passere al trafik gennem VPN-tunnelen (AllowedIPs = 0.0.0.0/0).

I stedet for at kopiere filen til din mobilenhed, kan du konvertere den til en QR-kode:

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

QR-koden vil blive vist til konsollen som ASCII. Den kan scannes fra appen. Android VPN og konfigurerer automatisk VPN-tunnelen.

Output

justering WireGuard simpelthen magisk sammenlignet med OpenVPN.

Kilde: www.habr.com

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster