Kuna WireGuard tuleviku Linuxi 5.6 tuumast, otsustasin uurida, kuidas parimal viisil integreerida see VPN minu .
Seadmed
- Raspberry Pi 3 LTE mooduliga ja avaliku IP-aadressiga. Siin saab olema VPN-server (edaspidi nimetatud edgewalker)
- Android telefon, mis peab kasutama VPN-i kõigi suhtluste jaoks
- Linuxi sülearvuti, mis peab kasutama VPN-i ainult võrgu sees
Igal seadmel, mis on ühendatud VPN-iga, peab olema võimalus suhelda kõigi teiste seadmete vahel. Näiteks peab telefon saama ühenduda sülearvuti veebiserveriga, kui mõlemad seadmed kuuluvad VPN-i võrku. Kui seadistamine osutub piisavalt lihtsaks, võib kaaluda ka lauaarvuti ühendamist VPN-iga (Etherneti kaudu).
Arvestades, et kaablite ja traadita ühendused muutuvad ajaga üha vähem turvaliseks (, ja ), kaalun tõsiselt WireGuardi kasutamist kõigile oma seadmetele, sõltumata nende töökeskkonnast.
Tarkvara installimine
WireGuard pakub enamikule Linuxi, Windowsi ja macOS-i distributsioonidest. Androidi ja iOS-i rakendused on saadaval rakenduste kataloogides.
Mul on viimane Fedora Linux 31, ja enne installimist ei viitsinud ma juhendit lugeda. Lihtsalt leidsin paketid wireguard-tools, installisin need ja siis ei saanud aru, miks miski ei tööta. Edasine uurimine näitas, et mul ei olnud paigaldatud paketti wireguard-dkms (võrgu draiver), ja sellel ei olnud minu distributsiooni kogus.
Kui oleksin juhiseid lugenud, oleksin teinud õiged sammud:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools Raspberry Pi-l on mul installitud Raspbian Buster, seal on juba pakett wireguard, paigaldame selle:
$ sudo apt install wireguardMobiilis olen installinud rakenduse ametlikust Google Play Store'i kataloogist.
Võtmete paigaldamine
Wireguard kasutab VPN-i sõlmede autentimiseks lihtsat private/public võtme skeemi. VPN-i võtmeid on lihtne luua 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 võtmepaari (kuus faili). Ära viita failidele konfiguratsioonides, vaid kopeeri siia sisu: iga võti on üks rida base64 vormingus.
VPN-serveri konfiguratsioonifaili loomine (Raspberry Pi)
Konfiguratsioon on piisavalt lihtne, koostasin 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]
# laptop
PublicKey =
AllowedIPs = 10.200.200.2/32
[Peer]
# mobile phone
PublicKey =
AllowedIPs = 10.200.200.3/32Mõned märkused:
- Tuleb lisada read failidest võtmetest vastavatesse kohtadesse
- Minu VPN-võrk kasutab sisemist vahemikku
10.200.200.0/24 - Käskude jaoks
PostUp/PostDownmul on määratud väline võrguliides wwan0, teil võib olla teine (näiteks eth0)
VPN-võrk käivitub lihtsalt järgmise käsuga:
$ sudo wg-quick up wg0 Üks väike detail: DNS-serverina kasutasin dnsmasq mis on seotud võrgu liidesega br0, lisasin ka seadmed wg0 lubatud seadmete loendisse. dnsmasq'is tehakse seda, lisades konfiguratsioonifaili uue rea võrguühenduse kohta /etc/dnsmasq.conf, näiteks:
interface=br0
interface=wg0Lisaks olen lisanud iptable'i reegli, et lubada liiklus UDP-pordile (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTNüüd, kui kõik töötab, saame seadistada VPN-tunneli automaatse käivitamise:
$ sudo systemctl enable wg-quick@wg0.serviceKliendi konfiguratsioon sülearvutis
Sülearvutis loome konfiguratsioonifaili /etc/wireguard/wg0.conf samade seadistustega:
[Interface]
Address = 10.200.200.2/24
PrivateKey =
[Peer]
PublicKey =
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820Märkused:
- Edgewalker asemel tuleks näidata VPN-serveri avalikku IP-aadressi või hosti
- Pärast
AllowedIPsjärgnevaga10.200.200.0/24, kasutame VPN-i ainult sisevõrku sisenemiseks. Kõik muu liiklus IP-aadresside/serverite jaoks läheb endiselt "tavaliste" avatud kanalite kaudu. 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
Androidi telefonile loome väga sarnase seadistusfaili (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 seadistusest peab telefon kasutama meie VPN-serverit DNS-serverina (rida DNS), samuti peab see kogu liikluse VPN-tunneli kaudu edastama (AllowedIPs = 0.0.0.0/0).
Faili mitte mobiilseadmesse kopeerimise asemel saab selle muuta QR-koodiks:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confQR-kood kuvatakse konsoolis ASCII-formaadis. Seda saab skannida Android VPN rakendusest ja VPN-tunneli seadistamine toimub automaatselt.
Kokkuvõte
WireGuard'i seadistamine on võrreldes OpenVPN-iga lihtsalt maagiline.
Allikas: habr.com
