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

Në faktorë të ndryshëm, WireGuard do të jetë pjesë e lidhjes bërthamore të Linux 5.6, unë vendosa të shihja se si ta integroj këtë VPN më mirë me routerin/aksesin LTE në Raspberry Pi.

Pajisje

  • Raspberry Pi 3 me njĂ« modul LTE dhe njĂ« IP publike. KĂ«tu do tĂ« jetĂ« serveri VPN (mĂ« poshtĂ« do tĂ« quhet 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Ă«sinĂ« tĂ« lidhet me serverin web nĂ« laptop, nĂ«se tĂ« dy pajisjet janĂ« pjesĂ« e rrjetit VPN. NĂ«se konfigurimi del tĂ« jetĂ« i mjaftueshĂ«m i thjeshtĂ«, mund tĂ« mendohet pĂ«r lidhjen e desktopit me VPN (pĂ«rmes Ethernet).

Duke marrë parasysh se lidhjet me tela dhe pa tela bëhen gjithnjë e më pak të sigurta me kalimin e kohës (sulmet e targetuara, sulmi KRACK për thyerjen e WPA2 dhe sulmi Dragonblood ndaj WPA3), unë po mendoj seriozisht për përdorimin e WireGuard për të gjitha pajisjet e mia, pavarësisht se në cilin mjedis funksionojnë.

Instalimi i softuerit

WireGuard ofron paketa të para-kompiluara për shumicën e distribuimeve të Linux, Windows dhe macOS. Aplikacionet për Android dhe iOS jepen përmes katalogjeve të aplikacioneve.

Kam Fedora Linux 31 më të fundit, dhe para se ta instaloja, u lenova të lexoj udhëzimin. Thjesht gjeta paketat wireguard-tools, i instalova ato, dhe pastaj nuk kisha idenë pse asgjë nuk funksiononte. Hulumtimi i mëtejshëm tregoi se nuk e kisha instaluar paketën wireguard-dkms (me drajverin e rrjetit), dhe nuk kishte në repositorin e distribucionit tim.

Po të kisha lexuar udhëzimin, do të kishim pasur hapat e duhur:

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

Në Raspberry Pi kam instaluar distribuimin Raspbian Buster, atje është paketa wireguard, e instalojmë atë:

$ sudo apt install wireguard

NĂ« telefonin Android kam instaluar aplikacionin WireGuard VPN nga katalogu zyrtar Google App Store.

Instalimi i çelësave

Për autentifikimin e nyjeve, Wireguard përdor një skemë të thjeshtë të çelësave privatë/publikë për autentifikimin e nyjeve të VPN. Mund të krijoni lehtësisht çelësa VPN me komandën e mëposhtme:

$ 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ë). Nuk do t'i referohemi skedarëve në konfigurime, por do 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ë, unë krijova skedarin e mëposhtë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 pĂ«rkatĂ«se duhet tĂ« futen rreshtat nga skedarĂ«t me çelĂ«sa
  • Rrjeti im VPN pĂ«rdor njĂ« diapazon tĂ« brendshĂ«m 10.200.200.0/24
  • PĂ«r komandat PostUp/PostDown kam shĂ«nuar interfacinĂ« e jashtme tĂ« rrjetit wwan0, ndoshta ju do 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 DNS-server kam përdorur dnsmasq lidhur me interfacinë 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 interfacinë 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 ta vendosim fillimin automatike të tunelit VPN:

$ sudo systemctl enable wg-quick@wg0.service

Konfigurimi i klientit në laptop

Në laptop krijoni skedarin e konfigurimit /etc/wireguard/wg0.conf me të njëjtat cilësime:

[Interface]
Address = 10.200.200.2/24
PrivateKey = 

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

Vërejtje:

  • NĂ« vend tĂ« edgewalker duhet tĂ« shĂ«noni IP-nĂ« publike apo hostin e serverit VPN
  • Duke vendosur 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-tĂ« e tjera/serverĂ«t do tĂ« vazhdojĂ« tĂ« shkojĂ« pĂ«rmes kanaleve "tĂ« zakonshme" tĂ« hapura. Gjithashtu do tĂ« pĂ«rdoret DNS-serveri i konfiguruar paraprakisht nĂ« laptop.

Për testimin dhe fillimin automatike përdorim të njëjtat komandat 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ë skedë konfigurimi shumë të ngjashme (të quajmë atë 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ë dallim nga konfigurimi në laptop, telefoni duhet të përdorë serverin tonë VPN si server DNS (rreshti DNS), si dhe të kalojë të gjithë trafikun përmes tunelit VPN (AllowedIPs = 0.0.0.0/0).

Në vend të kopjimit të skedës në pajisjen mobile, mund ta konvertojmë 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ë konfiguronte automatikisht tunelin VPN.

Përfundimi

Konfigurimi i WireGuard është magjepsës krahasuar me OpenVPN.

Burimi: habr.com

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