Sette opp et enkelt VPN med WireGuard og Raspberry Pi som server

Siden WireGuard vil bli en del будущего ядра Linux 5.6, я решил посмотреть, как лучше всего интегрировать этот VPN с моим LTE-ruter/tilgangspunkt på Raspberry Pi.

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

  • Raspberry Pi 3 med LTE-modul og offentlig IP-adresse. Det vil være en VPN-server her (heretter i teksten heter den edgewalker)
  • Телефон на Android, который должен использовать VPN для всех коммуникаций
  • bærbare Linux, который должен использовать VPN только внутри сети

Hver enhet som kobler til VPN må kunne koble til alle andre enheter. For eksempel skal en telefon kunne koble til en webserver på en bærbar datamaskin hvis begge enhetene er en del av et VPN-nettverk. Hvis oppsettet viser seg å være ganske enkelt, kan du tenke på å koble skrivebordet til VPN (via Ethernet).

Tatt i betraktning at kablede og trådløse tilkoblinger blir mindre og mindre sikre over tid (målrettede angrep, KRACK WPA2 cracking angrep и Dragonblood angrep mot WPA3), я всерьёз рассматриваю возможность использования WireGuard для всех моих устройств, независимо от того, в какой среде они работают.

Programvareinstallasjon

WireGuard gir forhåndskompilerte pakker для большинства дистрибутивов Linux, Windows и macOSSøknader om Android и iOS поставляются через каталоги приложений.

У меня последняя Fedora Linux 31, а перед установкой я поленился прочитать руководство. Просто нашёл пакеты wireguard-tools, installerte dem, og kunne ikke finne ut hvorfor ingenting fungerte. Ytterligere undersøkelser viste at jeg ikke har pakken installert wireguard-dkms (med en nettverksdriver), men den var ikke i depotet til distribusjonen min.

Hvis jeg hadde lest instruksjonene, ville jeg ha tatt de riktige trinnene:

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

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

$ sudo apt install wireguard

På telefonen Android я установил приложение WireGuard VPN fra den offisielle Google App Store-katalogen.

Montering av nøkler

Для аутентификации узлов Wireguard использует простую схему закрытого/открытого ключей для аутентификации узлов VPN. Можете легко создать ключи VPN с помощью следующей команды:

$ 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 gir oss tre nøkkelpar (seks filer). Vi vil ikke referere til filene i konfigurasjonene, men kopier innholdet her: hver nøkkel er én linje i base64.

Opprette en konfigurasjonsfil for VPN-serveren (Raspberry Pi)

Konfigurasjonen er ganske enkel, jeg opprettet 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 merknader:

  • På de riktige stedene må du sette inn linjer fra filene med tastene
  • VPN-en min bruker internt bånd 10.200.200.0/24
  • For lag PostUp/PostDown Jeg har det eksterne nettverksgrensesnittet wwan0, du kan ha et annet (for eksempel eth0)

VPN-nettverket heves enkelt med følgende kommando:

$ sudo wg-quick up wg0

En liten detalj: som DNS-serveren jeg brukte dnsmasq knyttet til et nettverksgrensesnitt br0, Jeg har også lagt til enheter wg0 til listen over tillatte enheter. I dnsmasq gjøres dette ved å legge til en ny nettverksgrensesnittlinje i konfigurasjonsfilen /etc/dnsmasq.conf, for eksempel:

interface=br0
interface=wg0

I tillegg la jeg til en iptable-regel for å tillate trafikk til UDP-lytteporten (51280):

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

Nå som alt fungerer, kan vi sette opp den automatiske lanseringen av VPN-tunnelen:

$ sudo systemctl enable wg-quick@wg0.service

Klientkonfigurasjon på bærbar PC

Lag en konfigurasjonsfil på en bærbar datamaskin /etc/wireguard/wg0.conf med samme innstillinger:

[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

Merknader:

  • I stedet for edgewalker må du spesifisere den offentlige IP- eller VPN-serververten
  • Ved å sette AllowedIPs10.200.200.0/24, bruker vi kun VPN for å få tilgang til det interne nettverket. Trafikk til alle andre IP-adresser/servere vil fortsette å gå gjennom "normale" åpne kanaler. Den vil også bruke den forhåndskonfigurerte DNS-serveren på den bærbare datamaskinen.

For testing og automatisk oppstart bruker vi de samme kommandoene wg-quick и systemd:

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

Sette opp klienten for Android-телефоне

For telefon Android создаём очень похожий файл конфигурации (назовём его 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 motsetning til konfigurasjonen på den bærbare datamaskinen, må telefonen bruke vår VPN-server som DNS-server (linje DNS), og passerer også all trafikk gjennom VPN-tunnelen (AllowedIPs = 0.0.0.0/0).

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

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

QR-код выйдет в консоль как ASCII. Его можно отсканировать из приложения Android VPN и автоматически настроить VPN-туннель.

Utgang

justering WireGuard просто волшебна по сравнению с OpenVPN.

Kilde: www.habr.com

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster