Sepse WireGuard
Оборудование
- 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 (
Instalimi i softverit
WireGuard ofron
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
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
mbi10.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