Stel 'n eenvoudige VPN op met WireGuard en Raspberry Pi as 'n bediener

Sedert WireGuard deel word van van die toekomstige Linux 5.6-kern, het ek besluit om te sien hoe om hierdie VPN die beste met my LTE-roeteerder/toegangspunt op Raspberry Pi.

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

  • Raspberry Pi 3 met LTE-module en openbare IP. Daar sal 'n VPN-bediener wees (hierna genoem randloper)
  • 'n Android-foon wat 'n VPN vir alle kommunikasie moet gebruik
  • Linux-skootrekenaar wat VPN slegs binne die netwerk moet gebruik

Elke toestel wat aan 'n VPN koppel, moet aan elke ander toestel kan koppel. Byvoorbeeld, 'n foon moet in staat wees om aan 'n webbediener op 'n skootrekenaar te koppel as beide toestelle deel is van 'n VPN-netwerk. As die opstelling eenvoudig genoeg is, kan u daaraan dink om aan 'n VPN en 'n rekenaar (via Ethernet) te koppel.

As in ag geneem word dat bedrade en draadlose verbindings mettertyd minder veilig word (geteikende aanvalle, KRACK WPA2 inbraak aanval и Dragonblood-aanval teen WPA3), Ek oorweeg dit ernstig om WireGuard vir al my toestelle te gebruik, maak nie saak in watter omgewing hulle is nie.

Sagteware installasie

WireGuard verskaf vooraf saamgestelde pakkette vir die meeste Linux-, Windows- en macOS-verspreidings. Toepassings vir Android en iOS word deur toepassingskatalogusse afgelewer.

Ek het die nuutste Fedora Linux 31 en ek was te lui om die handleiding te lees voordat ek dit installeer. Sopas die pakkies gekry wireguard-tools, het hulle geïnstalleer en kon toe nie agterkom hoekom niks werk nie. Verdere ondersoek het aan die lig gebring dat ek nie die pakket geïnstalleer het nie wireguard-dkms (met 'n netwerkbestuurder), en dit was nie in die bewaarplek van my verspreiding nie.

As ek die instruksies gelees het, sou ek die regte stappe geneem het:

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

Ek het die Raspbian Buster-verspreiding op my Raspberry Pi geïnstalleer, daar is reeds 'n pakket wireguard, installeer dit:

$ sudo apt install wireguard

Ek het die toepassing op my Android-foon geïnstalleer WireGuard Skynprivaatnetwerk uit die amptelike katalogus van die Google App Store.

Installeer sleutels

Om nodusse te verifieer, gebruik Wireguard 'n eenvoudige private/publieke sleutelskema om VPN-nodes te verifieer. U kan maklik VPN-sleutels skep met die volgende opdrag:

$ 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

Dit gee ons drie sleutelpare (ses lêers). Ons sal nie verwys na lêers in configs nie, maar kopieer die inhoud hier: elke sleutel is een reël in base64.

Skep 'n konfigurasielêer vir 'n VPN-bediener (Raspberry Pi)

Die konfigurasie is redelik eenvoudig, ek het die volgende lêer geskep /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

'n Paar notas:

  • Op die toepaslike plekke moet u die lyne van die lêers met die sleutels invoeg
  • My VPN gebruik interne reeks 10.200.200.0/24
  • Vir spanne PostUp/PostDown Ek het 'n eksterne netwerk koppelvlak wwan0, jy kan 'n ander een hê (byvoorbeeld, eth0)

Die VPN-netwerk word maklik opgevoed met die volgende opdrag:

$ sudo wg-quick up wg0

Een klein detail: as 'n DNS-bediener het ek gebruik dnsmasq gekoppel aan 'n netwerkkoppelvlak br0, Ek het ook toestelle bygevoeg wg0 na die lys van toegelate toestelle. In dnsmasq word dit gedoen deur 'n nuwe reël met die netwerkkoppelvlak by die konfigurasielêer by te voeg /etc/dnsmasq.conf, byvoorbeeld:

interface=br0
interface=wg0

Ek het ook 'n iptable-reël bygevoeg om verkeer na die luisterende UDP-poort (51280) toe te laat:

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

Noudat alles werk, kan ons die outomatiese bekendstelling van die VPN-tonnel registreer:

$ sudo systemctl enable [email protected]

Skootrekenaar kliënt konfigurasie

Skep 'n konfigurasielêer op die skootrekenaar /etc/wireguard/wg0.conf met dieselfde instellings:

[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

Notas:

  • In plaas van edgewalker, moet u 'n openbare IP- of VPN-bedienergasheer spesifiseer
  • Deur instelling AllowedIPs op 10.200.200.0/24, gebruik ons ​​slegs die VPN om toegang tot die interne netwerk te verkry. Verkeer na alle ander IP-adresse/bedieners sal voortgaan om deur "gewone" oop kanale te gaan. Die vooraf gekonfigureerde DNS-bediener op die skootrekenaar sal ook gebruik word.

Vir toetsing en outomatiese bekendstelling gebruik ons ​​dieselfde opdragte wg-quick и systemd:

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

Stel 'n kliënt op 'n Android-foon op

Vir 'n Android-foon skep ons 'n baie soortgelyke konfigurasielêer (kom ons noem dit 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

Anders as die skootrekenaarkonfigurasie, moet die telefoon ons VPN-bediener as sy DNS-bediener (string DNS), asook alle verkeer deur die VPN-tonnel (AllowedIPs = 0.0.0.0/0).

In plaas daarvan om die lêer na jou mobiele toestel te kopieer, kan jy dit na 'n QR-kode omskakel:

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

Die QR-kode sal as ASCII na die konsole uitgestuur word. Dit kan vanaf die Android VPN-toepassing geskandeer word en outomaties 'n VPN-tonnel opstel.

Output

Die opstel van WireGuard is net magies in vergelyking met OpenVPN.

Bron: will.com

Voeg 'n opmerking