Seadistage lihtne VPN, mille serveriks on WireGuard ja Raspberry Pi

Alates WireGuardist saada osaks Tulevase Linuxi 5.6 kernelist otsustasin uurida, kuidas seda VPN-i kõige paremini omaga integreerida Raspberry Pi LTE-ruuter/pääsupunkt.

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

  • Raspberry Pi 3 LTE mooduli ja avaliku IP-ga. Seal on VPN-server (edaspidi kui servakõndija)
  • Android-telefon, mis peab kasutama kogu suhtluse jaoks VPN-i
  • Linuxi sülearvuti, mis peab VPN-i kasutama ainult võrgu sees

Iga VPN-iga ühenduse loov seade peab saama ühenduse luua kõigi teiste seadmetega. Näiteks peaks telefon suutma ühenduda sülearvuti veebiserveriga, kui mõlemad seadmed kuuluvad VPN-võrku. Kui seadistamine on piisavalt lihtne, võite mõelda VPN-i ja töölauaga ühenduse loomisele (Etherneti kaudu).

Arvestades, et juhtmega ja traadita ühendused muutuvad aja jooksul vähem turvaliseks (suunatud rünnakud, KRACK WPA2 häkkimisrünnak и Dragonblood rünnak WPA3 vastu), kaalun tõsiselt WireGuardi kasutamist kõigis oma seadmetes, olenemata sellest, millises keskkonnas need töötavad.

Tarkvara installimine

WireGuard pakub eelkoostatud paketid enamiku Linuxi, Windowsi ja macOS-i distributsioonide jaoks. Androidi ja iOS-i rakendusi tarnitakse rakenduste kataloogide kaudu.

Mul on uusim Fedora Linux 31 ja olin liiga laisk, et enne installimist juhendit lugeda. Just leidsin pakid wireguard-tools, installis need ja ei saanud siis aru, miks miski ei tööta. Edasine uurimine näitas, et mul polnud paketti installitud wireguard-dkms (võrgudraiveriga) ja seda ei olnud minu levitamise hoidlas.

Kui ma oleksin juhiseid lugenud, oleksin astunud õigeid samme:

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

Minu Raspberry Pi-le on installitud Raspbian Busteri distributsioon, pakett on juba olemas wireguard, installige see:

$ sudo apt install wireguard

Installisin rakenduse oma Android-telefoni WireGuardVPN Google App Store'i ametlikust kataloogist.

Võtmete paigaldamine

Sõlmede autentimiseks kasutab Wireguard VPN-sõlmede autentimiseks lihtsat privaat-/avaliku võtme skeemi. VPN-võtmeid saate hõlpsasti luua järgmise käsuga:

$ 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

See annab meile kolm võtmepaari (kuus faili). Me ei viita konfiguratsioonides failidele, vaid kopeerime sisu siia: iga võti on base64-s üks rida.

VPN-serveri konfiguratsioonifaili loomine (Raspberry Pi)

Seadistamine on üsna lihtne, lõin järgmise faili /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

Paar märkust:

  • Sobivatesse kohtadesse tuleb klahvidega failidest read sisestada
  • Minu VPN kasutab sisemist leviala 10.200.200.0/24
  • Meeskondade jaoks PostUp/PostDown Mul on väline võrguliides wwan0, teil võib olla mõni muu (näiteks eth0)

VPN-võrku saab hõlpsasti avada järgmise käsuga:

$ sudo wg-quick up wg0

Üks väike detail: DNS-serverina kasutasin dnsmasq ühendatud võrguliidesega br0, lisasin ka seadmed wg0 lubatud seadmete loendisse. Dnsmasqis tehakse seda konfiguratsioonifaili uue võrguliidese rea lisamisega /etc/dnsmasq.conf, näiteks:

interface=br0
interface=wg0

Samuti lisasin iptable reegli, et lubada liiklust kuulava UDP-porti (51280):

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

Nüüd, kui kõik töötab, saame registreerida VPN-tunneli automaatse käivitamise:

$ sudo systemctl enable [email protected]

Sülearvuti kliendi konfiguratsioon

Looge sülearvutis konfiguratsioonifail /etc/wireguard/wg0.conf samade seadistustega:

[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

Märkused:

  • Edgewalkeri asemel peate määrama avaliku IP- või VPN-serveri hosti
  • Seadistades AllowedIPs edasi 10.200.200.0/24, kasutame sisevõrgule juurdepääsuks ainult VPN-i. Liiklus kõikidele teistele IP-aadressidele/serveritele jätkub "tavaliste" avatud kanalite kaudu. Kasutatakse ka sülearvuti eelkonfigureeritud DNS-serverit.

Testimiseks ja automaatseks käivitamiseks kasutame samu käske wg-quick и systemd:

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

Kliendi seadistamine Android-telefonis

Android-telefoni jaoks loome väga sarnase konfiguratsioonifaili (nimetagem seda 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

Erinevalt sülearvuti konfiguratsioonist peaks telefon DNS-serverina kasutama meie VPN-serverit (string DNS), samuti kogu liiklus läbi VPN-tunneli (AllowedIPs = 0.0.0.0/0).

Faili mobiilseadmesse kopeerimise asemel saate selle QR-koodiks teisendada.

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

QR-kood väljastatakse konsooli ASCII-vormingus. Seda saab skannida Android VPN-i rakendusest ja seadistada automaatselt VPN-tunneli.

Väljund

WireGuardi seadistamine on OpenVPN-iga võrreldes lihtsalt maagiline.

Allikas: www.habr.com

Lisa kommentaar