Nastavenie jednoduchej VPN s WireGuard a Raspberry Pi ako server

Od WireGuard sa stane súčasťou budúce jadro Linux 5.6 som sa rozhodol zistiť, ako najlepšie integrovať túto VPN s mojou LTE router/prístupový bod na Raspberry Pi.

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

  • Raspberry Pi 3 s LTE modulom a verejnou IP adresou. Tu bude VPN server (ďalej v texte nazývaný edgewalker)
  • Telefón zapnutý Android, ktorý musí pre všetku komunikáciu používať VPN
  • zápisník Linux, ktorý by mal používať VPN iba v rámci siete

Každé zariadenie, ktoré sa pripája k sieti VPN, musí byť schopné pripojiť sa ku všetkým ostatným zariadeniam. Napríklad telefón by mal byť schopný pripojiť sa k webovému serveru na prenosnom počítači, ak sú obe zariadenia súčasťou siete VPN. Ak sa nastavenie ukáže ako celkom jednoduché, môžete premýšľať o pripojení pracovnej plochy k sieti VPN (cez Ethernet).

Berúc do úvahy, že káblové a bezdrôtové pripojenia sú postupom času čoraz menej bezpečné (cielené útoky, KRACK WPA2 cracking útok и Útok Dragonblood proti WPA3), vážne zvažujem použitie WireGuard pre všetky moje zariadenia, bez ohľadu na to, v akom prostredí bežia.

Inštalácia softvéru

WireGuard poskytuje predkompilované balíčky pre väčšinu distribúcií Linux, Windows и macOSŽiadosti o Android a iOS sú doručované prostredníctvom obchodov s aplikáciami.

Mám najnovšiu Fedoru Linux 31 a pred inštaláciou som bol príliš lenivý na to, aby som si prečítal manuál. Našiel som len balíčky. wireguard-tools, nainštalovali ich a potom nevedeli prísť na to, prečo nič nefunguje. Ďalšie vyšetrovanie odhalilo, že balík nemám nainštalovaný wireguard-dkms (so sieťovým ovládačom), ale nebol v úložisku mojej distribúcie.

Keby som si prečítal pokyny, urobil by som správne kroky:

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

Na svojom Raspberry Pi mám nainštalovanú distribúciu Raspbian Buster, je tam už balík wireguard, nainštalujte ho:

$ sudo apt install wireguard

Na telefóne Android Nainštaloval som si aplikáciu WireGuard VPN z oficiálneho katalógu Google App Store.

Inštalácia kľúčov

Na overenie uzlov Wireguard Používa jednoduchú schému súkromného/verejného kľúča na autentifikáciu uzlov VPN. Kľúče VPN môžete jednoducho vygenerovať pomocou nasledujúceho príkazu:

$ 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

Získame tak tri páry kľúčov (šesť súborov). Nebudeme odkazovať na súbory v konfiguráciách, ale skopírujeme obsah sem: každý kľúč je jeden riadok v base64.

Vytvorenie konfiguračného súboru pre server VPN (Raspberry Pi)

Konfigurácia je pomerne jednoduchá, vytvoril som nasledujúci súbor /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

Pár poznámok:

  • Na príslušné miesta je potrebné vložiť riadky zo súborov pomocou kľúčov
  • Moja sieť VPN používa interné pásmo 10.200.200.0/24
  • Pre tímy PostUp/PostDown Mám externé sieťové rozhranie wwan0, môžete mať iné (napríklad eth0)

Sieť VPN sa dá ľahko zvýšiť pomocou nasledujúceho príkazu:

$ sudo wg-quick up wg0

Jeden malý detail: ako server DNS som použil dnsmasq viazané na sieťové rozhranie br0, pridal som aj zariadenia wg0 do zoznamu povolených zariadení. V dnsmasq sa to robí pridaním nového riadku sieťového rozhrania do konfiguračného súboru /etc/dnsmasq.conf, napríklad:

interface=br0
interface=wg0

Okrem toho som pridal pravidlo iptable, ktoré povoľuje prenos do portu počúvania UDP (51280):

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

Teraz, keď všetko funguje, môžeme nastaviť automatické spustenie tunela VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfigurácia klienta na notebooku

Vytvorte konfiguračný súbor na prenosnom počítači /etc/wireguard/wg0.conf s rovnakými nastaveniami:

[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

Poznámky:

  • Namiesto edgewalker musíte zadať verejnú IP alebo hostiteľa servera VPN
  • Podľa nastavenia AllowedIPs na 10.200.200.0/24, VPN používame iba na prístup do internej siete. Prevádzka na všetky ostatné IP adresy/servery bude naďalej prechádzať cez „normálne“ otvorené kanály. Použije tiež vopred nakonfigurovaný server DNS na prenosnom počítači.

Na testovanie a automatické spustenie používame rovnaké príkazy wg-quick и systemd:

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

Nastavenie klienta pre Android-telefón

Pre telefón Android Vytvoríme veľmi podobný konfiguračný súbor (nazvime ho 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

Na rozdiel od konfigurácie na prenosnom počítači musí telefón používať náš server VPN ako server DNS (linka DNS) a tiež prejsť všetku komunikáciu cez tunel VPN (AllowedIPs = 0.0.0.0/0).

Namiesto kopírovania súboru do mobilného zariadenia ho môžete previesť na QR kód:

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

QR kód sa do konzoly zobrazí ako ASCII. Dá sa naskenovať z aplikácie. Android VPN a automaticky nakonfigurovať VPN tunel.

Výkon

nastavenie WireGuard jednoducho magické v porovnaní s OpenVPN.

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster