Kuna WireGuard Linuxi 5.6 tuleviku kernelist, otsustasin uurida, kuidas seda VPN-i oma .
Varustus
- Raspberry Pi 3 LTE-modemiga ja avaliku IP-aadressiga. Siia tuleb VPN-server (edaspidi nimetatakse seda edgewalker)
- Android telefon, mis peab kasutama VPN-i kõigi suhtluste jaoks
- Linuxi sülearvuti, mis peab kasutama VPN-i vaid kohaliku võrguga
Igal seadmel, mis VPN-iga ühendust loob, peab olema võimalik suhelda kõigi teiste seadmetega. Näiteks telefon peab olema võimeline ühendust looma sülearvuti veebiserveriga, kui mõlemad seadmed kuuluvad VPN-i võrku. Kui seade osutub piisavalt lihtsaks, võiks mõelda ka lauaarvuti ühendamisele VPN-iga (Etherneti kaudu).
Arvestades, et traadita ja juhtmeühendused muutuvad aja jooksul üha vähem turvaliseks (, ja ), kaalun tõsiselt WireGuard'i kasutamist kõigi oma seadmete jaoks, sõltumata sellest, millises keskkonnas need töötavad.
Tarkvara installimine
WireGuard pakub enamikule Linuxi, Windowsi ja macOS-i distributiividele. Androidi ja iOS-i rakendused on saadaval rakenduste kataloogides.
Mul on uusim Fedora Linux 31, ja enne installimist olin laisk juhendit lugema. Lihtsalt leidsin paketid wireguard-tools, paigaldasin need, kuid seejärel ei suutnud aru saada, miks midagi ei tööta. Edasine uurimine näitas, et mul ei olnud paketti wireguard-dkms (võrgudraiver), ja seda ei olnud minu distributiivi hoidlas.
Kui oleksin juhiseid lugenud, oleksin teinud õigeid samme:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Raspberry Pi-l on mul Raspbian Buster distributiiv, seal on juba pakett wireguard, paigaldame selle:
$ sudo apt install wireguardAndroid telefonil installisin rakenduse ametlikust Google App Store'i kataloogist.
Võtmete installimine
Node'ide autentimiseks kasutab Wireguard lihtsat privaat-/avaliku märgi skeemi VPN-i node'ide autentimiseks. VPN-i võtmete loomine on lihtne 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.keySee annab meile kolm paari võtmeid (kuus faili). Ärgem viidaku failidele konfiguratsioonides, vaid kopeerime siia sisu: iga võti on üks rida base64 formaadis.
VPN-serveri konfiguratsioonifaili loomine (Raspberry Pi)
Konfiguratsioon on üsna lihtne, lõin järgmise faili /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]
# sülearvuti
PublicKey =
AllowedIPs = 10.200.200.2/32
[Peer]
# nutitelefon
PublicKey =
AllowedIPs = 10.200.200.3/32Mõned märkused:
- Asjakohastesse kohtadesse tuleb sisestada rida võtmefailidest
- Minu VPN-võrk kasutab sisevahemikku
10.200.200.0/24 - Käskluste jaoks
PostUp/PostDownmul on käsitletud välise võrguliidese wwan0, teil võib olla teine (näiteks eth0)
VPN-võrk tõuseb lihtsalt järgmise käsklusena:
$ sudo wg-quick up wg0 Üks väike detail: DNS-serverina kasutasin dnsmasq seotuna võrguliidesega br0, lisasin ka seadmed wg0 lubatud seadmete nimekirja. dnsmasq-s saab seda teha, lisades konfiguratsioonifaili nieuwe rea võrgu liidese kohta /etc/dnsmasq.conf, näiteks:
interface=br0
interface=wg0Lisaks lisasin iptable'i reegli, et lubada liiklust kuulam UDP-porti (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNüüd, kui kõik töötab, saame seadistada automaatse VPN-tunneli käivitamise:
$ sudo systemctl enable wg-quick@wg0.serviceKliendi konfiguratsioon sülearvutis
Sülearvutis loome konfiguratsioonifaili /etc/wireguard/wg0.conf sama seadistustega:
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Märkused:
- edgewalker asemel tuleb sisestada VPN-serveri avalik IP või host
- Seades
AllowedIPs. Tundub, et10.200.200.0/24, kasutame VPN-i ainult juurdepääsuks sisevõrgule. Kõik muu liiklus IP-aadressidele/serveritele läheb endiselt "tavalisel" avatud kanalil. Samuti kasutatakse sülearvutis eelnevalt seadistatud DNS-serverit.
Testimiseks ja automaatseks käivitamiseks kasutame samu käske wg-quick ja systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceKliendi seadistamine Android-telefonis
Android-telefonile loome väga sarnase konfiguratsioonifaili (nimetame selle 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 Erinevalt sülearvuti konfiguratsioonist peab telefon kasutama meie VPN-serverit DNS-serverina (rida DNS), samuti peab kogu liiklus minema läbi VPN-tunneli (AllowedIPs = 0.0.0.0/0).
Faili kopeerimise asemel mobiilseadmesse saab selle muundada QR-koodiks:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR-kood kuvatakse konsoolis ASCII-na. Selle saab skaneerida Androidi VPN-i rakendusest ja VPN-tunneli seadistamine toimub automaatselt.
Kokkuvõte
WireGuardi seadistamine on võrreldes OpenVPN-iga lihtsalt maagiline.
Allikas: habr.com
