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

Sepse WireGuard do të bëhet pjesë i kernelit të ardhshëm Linux 5.6, vendosa të shoh se si ta integroj më mirë këtë VPN me Ruteri LTE/pika e hyrjes në Raspberry Pi.

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

  • Raspberry Pi 3 me modul LTE dhe adresë IP publike. Këtu do të ketë një server VPN (më tej në tekst quhet edgewalker)
  • Një telefon Android që duhet të përdorë një VPN për të gjitha komunikimet
  • Laptop Linux që duhet të përdorë vetëm një VPN brenda rrjetit

Çdo pajisje që lidhet me VPN duhet të jetë në gjendje të lidhet me të gjitha pajisjet e tjera. Për shembull, një telefon duhet të jetë në gjendje të lidhet me një server në internet në një laptop nëse të dyja pajisjet janë pjesë e një rrjeti VPN. Nëse konfigurimi rezulton të jetë mjaft i thjeshtë, atëherë mund të mendoni për lidhjen e desktopit me VPN (përmes Ethernet).

Duke marrë parasysh që lidhjet me tel dhe me valë po bëhen gjithnjë e më pak të sigurta me kalimin e kohës (sulme të synuara, Sulmi i plasaritjes KRACK WPA2 и Sulmi i gjakut të Dragoit kundër WPA3), Unë jam duke konsideruar seriozisht përdorimin e WireGuard për të gjitha pajisjet e mia, pavarësisht se në çfarë mjedisi ndodhen.

Instalimi i softverit

WireGuard ofron paketat e parapërpiluara për shumicën e shpërndarjeve Linux, Windows dhe macOS. Aplikacionet Android dhe iOS shpërndahen përmes drejtorive të aplikacioneve.

Unë kam Fedora Linux 31 më të fundit dhe isha shumë dembel për të lexuar manualin përpara se ta instaloja. Sapo gjeta paketat wireguard-tools, i instaloi ato dhe më pas nuk mund ta kuptoja pse asgjë nuk po funksiononte. Hetimi i mëtejshëm zbuloi se nuk e kam të instaluar paketën wireguard-dkms (me një drejtues rrjeti), por nuk ishte në depon e shpërndarjes sime.

Nëse do të kisha lexuar udhëzimet, do të kisha ndërmarrë hapat e duhur:

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

Unë kam shpërndarjen Raspbian Buster të instaluar në Raspberry Pi, tashmë ka një paketë atje wireguard, instalojeni:

$ sudo apt install wireguard

Në telefonin tim Android kam instaluar aplikacionin WireGuardVPN nga katalogu zyrtar i Google App Store.

Instalimi i çelësave

Për vërtetimin e kolegëve, Wireguard përdor një skemë të thjeshtë të çelësit privat/publik për të vërtetuar kolegët VPN. Ju lehtë mund të krijoni çelësa VPN duke përdorur 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ë). Ne nuk do t'i referohemi skedarëve në konfigurime, por kopjojmë përmbajtjen këtu: çdo çelës është një rresht në bazën64.

Krijimi i një skedari konfigurimi për serverin VPN (Raspberry Pi)

Konfigurimi është mjaft i thjeshtë, kam krijuar skedarin e mëposhtëm /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

Disa shënime:

  • Në vendet e duhura duhet të futni rreshta nga skedarët me çelësat
  • VPN ime po përdor brezin e brendshëm 10.200.200.0/24
  • Për ekipet PostUp/PostDown Unë kam ndërfaqen e jashtme të rrjetit wwan0, ju mund të keni një tjetër (për shembull, 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 që përdora dnsmasq i lidhur me një ndërfaqe rrjeti br0, shtova edhe pajisje wg0 në listën e pajisjeve të lejuara. Në dnsmasq kjo bëhet duke shtuar një linjë të re të ndërfaqes së rrjetit në skedarin e konfigurimit /etc/dnsmasq.conf, për shembull:

interface=br0
interface=wg0

Për më tepër, shtova një rregull iptable për të lejuar trafikun në portën e dëgjimit UDP (51280):

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

Tani që gjithçka po funksionon, ne mund të vendosim nisjen automatike të tunelit VPN:

$ sudo systemctl enable [email protected]

Konfigurimi i klientit në laptop

Krijoni një skedar konfigurimi në një laptop /etc/wireguard/wg0.conf me të njëjtat cilësime:

[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

Shenime:

  • Në vend të edgewalker ju duhet të specifikoni IP-në publike ose hostin e serverit VPN
  • Duke instaluar AllowedIPs mbi 10.200.200.0/24, ne përdorim vetëm VPN për të hyrë në rrjetin e brendshëm. Trafiku në të gjitha adresat/serverët e tjerë IP do të vazhdojë të kalojë përmes kanaleve të hapura "normale". Ai gjithashtu do të përdorë serverin DNS të para-konfiguruar në laptop.

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

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

Vendosja e një klienti në një telefon Android

Për një telefon Android ne krijojmë një skedar konfigurimi shumë të ngjashëm (le ta quajmë atë 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

Ndryshe nga konfigurimi në laptop, telefoni duhet të përdorë serverin tonë VPN si server DNS (linja DNS), dhe gjithashtu kaloni të gjithë trafikun përmes tunelit VPN (AllowedIPs = 0.0.0.0/0).

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

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

Kodi QR do të dalë në tastierë si ASCII. Mund të skanohet nga aplikacioni Android VPN dhe do të konfigurojë automatikisht një tunel VPN.

Prodhim

Vendosja e WireGuard është thjesht magjike në krahasim me OpenVPN.

Burimi: www.habr.com

Shto një koment