Konfigurojmë një VPN të thjeshtë me WireGuard dhe Raspberry Pi si server

Duke WireGuard do të bëhet pjesë e të ardhmes së kernelit Linux 5.6, vendosa të shikoj se si ta integroj këtë VPN me routerin/pikën e aksesit LTE në Raspberry Pi.

Pajisjet

  • Raspberry Pi 3 me modul LTE dhe njĂ« adresĂ« IP publike. KĂ«tu do tĂ« jetĂ« njĂ« server VPN (do tĂ« quhet mĂ« poshtĂ« edgewalker)
  • NjĂ« telefon Android qĂ« duhet tĂ« pĂ«rdorĂ« VPN pĂ«r tĂ« gjitha komunikimet
  • NjĂ« laptop Linux qĂ« duhet tĂ« pĂ«rdorĂ« VPN vetĂ«m brenda rrjetit

Çdo pajisje qĂ« lidhet me VPN, duhet tĂ« ketĂ« mundĂ«sinĂ« tĂ« lidhet me tĂ« gjitha pajisjet e tjera. PĂ«r shembull, telefoni duhet tĂ« ketĂ« mundĂ«si tĂ« lidhet me serverin web nĂ« laptop nĂ«se tĂ« dy pajisjet janĂ« pjesĂ« e rrjetit VPN. NĂ«se konfigurimi del mjaft i thjeshtĂ«, mund tĂ« mendohet pĂ«r lidhorjen e desktopit me VPN (pĂ«rmes Ethernet).

Duke pasur parasysh se lidhjet kabllore dhe të padukshme po bëhen gjithnjë e më pak të sigurta me kalimin e kohës (sulmet e synuara, sulmi KRACK për të thyer WPA2 dhe sulmi Dragonblood ndaj WPA3), po e mendoj seriozisht mundësinë e përdorimit të WireGuard për të gjitha pajisjet e mia, pavarësisht nga mjedisi ku ato funksionojnë.

Instalimi i software-it

WireGuard ofron paketat e para të kompozuara për shumicën e shpërndarjeve Linux, Windows dhe macOS. Aplikacionet për Android dhe iOS ofrohen përmes dyqaneve të aplikacioneve.

Kam Fedora Linux 31 të fundit, dhe para se të instaloj, isha lenë të lexoj manualin. Thjesht gjeta paketat wireguard-tools, i instalova ato, dhe më pas nuk mund të kuptoj se pse asgjë nuk punon. Hulumtimi më tej tregoi se nuk kam instaluar paketën wireguard-dkms (me driverin rrjetë), dhe nuk ishte në depozitën e shpërndarjes sime.

Nëse do të kisha lexuar udhëzimin, do të kisha bërë hapat e duhur:

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

Në Raspberry Pi, kam instalimin e shpërndarjes Raspbian Buster, aty e kemi paketën wireguard, dhe e instalojmë atë:

$ sudo apt install wireguard

NĂ« telefonin Android instalova aplikacionin WireGuard VPN nga dyqani zyrtar i Google App Store.

Instalimi i çelësave

Për autentikimin e nyjeve, Wireguard përdor një skemë të thjeshtë çelësa të mbyllur/të hapur për autentikimin e nyjeve VPN. Mund të krijoni lehtë çelësa VPN me komandën në vijim:

$ 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

Kjo na jep tre çifte çelësash (gjashtë skedarë). Të mos referohemi në skedarët në konfigurata, por të kopjojmë këtu përmbajtjen: çdo çelës është një rresht në base64.

Krijimi i skedarit të konfigurimit për serverin VPN (Raspberry Pi)

Konfigurimi është mjaft i thjeshtë, krijova këtë skedar të ardhshëm /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = 
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 = 
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = 
AllowedIPs = 10.200.200.3/32

Disa vërejtje:

  • NĂ« vendet e pĂ«rkatshme duhet tĂ« vendosen rreshtat nga skedarĂ«t me çelĂ«sa
  • Rrjeti im VPN pĂ«rdor njĂ« gamĂ« tĂ« brendshme 10.200.200.0/24
  • PĂ«r komandat PostUp/PostDown kam specifikuar ndĂ«rfaqen e jashtme tĂ« rrjetit wwan0, mund tĂ« keni njĂ« tjetĂ«r (p.sh., eth0)

Rrjeti VPN ngrihet lehtësisht me komandën e mëposhtme:

$ sudo wg-quick up wg0

Një detaj i vogël: si server DNS kam përdorur dnsmasq me lidhje në ndërfaqen e rrjetit br0, gjithashtu kam shtuar pajisjet wg0 në listën e pajisjeve të lejuara. Në dnsmasq kjo bëhet duke shtuar një rresht të ri me ndërfaqen e rrjetit në skedarin e konfigurimit /etc/dnsmasq.conf, për shembull:

interface=br0
interface=wg0

Për më tepër, kam shtuar një rregull iptable për të lejuar trafikun në portin UDP të dëgjimit (51280):

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

Tani, kur gjithçka funksionon, mund të konfiguroni nisjen automatike të tunelit VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfigurimi i klientit në laptop

Në laptop krijojmë skedarin e konfigurimit /etc/wireguard/wg0.conf me të njëjtat parametra:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

[Peer]
PublicKey = 
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Shënime:

  • NĂ« vend tĂ« edgewalker duhet tĂ« specifikoni IP-nĂ« publike ose hostin e serverit VPN
  • Duke instaluar AllowedIPs nĂ« 10.200.200.0/24, ne pĂ«rdorim VPN vetĂ«m pĂ«r qasje nĂ« rrjetin e brendshĂ«m. Trafiku pĂ«r tĂ« gjitha IP-adresat/servery tĂ« tjera do tĂ« vazhdojĂ« tĂ« kalojĂ« pĂ«rmes kanaleve "tĂ« zakonshme" tĂ« hapura. Do tĂ« pĂ«rdoret gjithashtu njĂ« DNS-server i paracaktuar nĂ« laptop.

Për testim dhe nisje automatike përdorim të njëjtat komanda wg-quick dhe systemd:

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

Konfigurimi i klientit në telefonin Android

Për telefonin Android krijojmë një skedar konfigurimi shumë të ngjashëm (ta quajmë mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = 
DNS = 10.200.200.1
        
[Peer]
PublicKey = 
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Në krahasim me konfigurimin në laptop, telefoni duhet të përdorë serverin VPN tonë si server DNS (rreshti DNS), si dhe të kalojë të gjithë trafikun përmes tunelit VPN (AllowedIPs = 0.0.0.0/0).

Në vend që të kopjoni skedarin në pajisjen mobile, mund ta konvertoni atë në një kod QR:

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

Kodi QR do të dalë në konsolë si ASCII. Ai mund të skanohet nga aplikacioni Android VPN dhe të konfigurojë automatikisht tunelin VPN.

Përfundim

Konfigurimi i WireGuard është thjesht magjik krahasuar me OpenVPN.

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster