Stel in ienfâldige VPN yn mei WireGuard en Raspberry Pi as server

Sûnt WireGuard diel wurde fan fan 'e takomst Linux 5.6 kernel, Ik besletten om te sjen hoe't bêste te yntegrearjen dizze VPN mei myn LTE-router / tagongspunt op Raspberry Pi.

Wetter - Agrarwetter

  • Raspberry Pi 3 mei LTE-module en iepenbiere IP. D'r sil in VPN-tsjinner wêze (hjirnei oantsjutten as edgewalker)
  • In Android-tillefoan dy't in VPN moat brûke foar alle kommunikaasje
  • Linux-laptop dy't VPN allinich yn it netwurk moat brûke

Elk apparaat dat ferbynt mei in VPN moat kinne ferbine mei elk oar apparaat. Bygelyks, in tillefoan soe kinne ferbine mei in webserver op in laptop as beide apparaten diel útmeitsje fan in VPN-netwurk. As de opset ienfâldich genôch is, dan kinne jo tinke oan ferbining mei in VPN en in buroblêd (fia Ethernet).

Yn betinken nommen dat bedrade en draadloze ferbiningen mei de tiid minder feilich wurde (rjochte oanfallen, KRACK WPA2 hacking oanfal и Dragonblood oanfal tsjin WPA3), Ik tink serieus om WireGuard te brûken foar al myn apparaten, yn hokker omjouwing se ek binne.

Ynstallaasje fan software

WireGuard jout foarkompilearre pakketten foar de measte Linux-, Windows- en macOS-distribúsjes. Apps foar Android en iOS wurde levere fia app-katalogussen.

Ik haw de lêste Fedora Linux 31 en ik wie te lui om de hantlieding te lêzen foardat jo ynstallearje. Krekt fûn de pakketten wireguard-tools, ynstallearre se, en dan koe net útfine wêrom neat wurke. Fierder ûndersyk die bliken dat ik it pakket net ynstalleare hie wireguard-dkms (mei in netwurk stjoerprogramma), en it wie net yn it depot fan myn distribúsje.

As ik de ynstruksjes hie lêzen, soe ik de goede stappen nommen hawwe:

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

Ik haw de Raspbian Buster-distribúsje ynstalleare op myn Raspberry Pi, d'r is al in pakket wireguard, ynstallearje it:

$ sudo apt install wireguard

Ik ynstallearre de app op myn android telefoan WireGuardVPN út 'e offisjele katalogus fan' e Google App Store.

Ynstallaasje fan kaaien

Om knooppunten te ferifiearjen, brûkt Wireguard in ienfâldich privee/iepenbiere kaaiskema om VPN-knooppunten te autentisearjen. Jo kinne maklik VPN-kaaien oanmeitsje mei it folgjende 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

Dit jout ús trije kaai pearen (seis triemmen). Wy sille net ferwize nei triemmen yn configs, mar kopiearje de ynhâld hjir: elke kaai is ien rigel yn base64.

In konfiguraasjetriem oanmeitsje foar in VPN-tsjinner (Raspberry Pi)

De konfiguraasje is frij simpel, ik makke de folgjende triem /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

In pear notysjes:

  • Op de passende plakken moatte jo de rigels fan 'e bestannen ynfoegje mei de kaaien
  • Myn VPN brûkt ynterne berik 10.200.200.0/24
  • Foar teams PostUp/PostDown Ik haw in eksterne netwurkynterface wwan0, jo kinne in oare hawwe (bygelyks eth0)

It VPN-netwurk wurdt maklik opbrocht mei it folgjende kommando:

$ sudo wg-quick up wg0

Ien lyts detail: as DNS-tsjinner haw ik brûkt dnsmasq ferbûn mei netwurk ynterface br0, Ik haw ek apparaten tafoege wg0 nei de list mei tastiene apparaten. Yn dnsmasq wurdt dit dien troch in nije rigel ta te foegjen mei de netwurkynterface oan it konfiguraasjetriem /etc/dnsmasq.confbygelyks:

interface=br0
interface=wg0

Ek haw ik in iptable-regel tafoege om ferkear te tastean nei de harkjende UDP-poarte (51280):

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

No't alles wurket, kinne wy ​​de automatyske lansearring fan 'e VPN-tunnel registrearje:

$ sudo systemctl enable [email protected]

Laptop client konfiguraasje

Op 'e laptop meitsje in konfiguraasjetriem /etc/wireguard/wg0.conf mei deselde ynstellings:

[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

Notes:

  • Ynstee fan edgewalker moatte jo in iepenbiere IP- as VPN-tsjinnerhost oantsjutte
  • Troch ynstelling AllowedIPs op 10.200.200.0/24, wy brûke allinich de VPN om tagong te krijen ta it ynterne netwurk. Ferkear nei alle oare IP-adressen/servers sil trochgean troch "gewoane" iepen kanalen. De foarôf ynstelde DNS-tsjinner op 'e laptop sil ek brûkt wurde.

Foar testen en automatyske lansearring brûke wy deselde kommando's wg-quick и systemd:

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

It ynstellen fan in kliïnt op in Android-tillefoan

Foar in Android-tillefoan meitsje wy in heul ferlykber konfiguraasjebestân (lit ús it neame 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

Oars as de laptopkonfiguraasje, moat de tillefoan ús VPN-tsjinner brûke as syn DNS-tsjinner (string DNS), lykas ek alle ferkear troch de VPN-tunnel trochjaan (AllowedIPs = 0.0.0.0/0).

Ynstee fan it kopiearjen fan it bestân nei jo mobyl apparaat, kinne jo it konvertearje nei in QR-koade:

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

De QR-koade sil wurde útstjoerd nei de konsole as ASCII. It kin wurde skansearre fanút de Android VPN-app en automatysk in VPN-tunnel ynstelle.

konklúzje

It ynstellen fan WireGuard is gewoan magysk yn ferliking mei OpenVPN.

Boarne: www.habr.com

Add a comment