Nes WireGuard
įranga
- Raspberry Pi 3 su LTE moduliu ir viešuoju IP adresu. Čia bus VPN serveris (toliau tekste jis vadinamas krašto vaikščiotojas)
- „Android“ telefonas, kuris visoms komunikacijoms turi naudoti VPN
- „Linux“ nešiojamas kompiuteris, kuris tinkle turėtų naudoti tik VPN
Kiekvienas įrenginys, jungiantis prie VPN, turi turėti galimybę prisijungti prie visų kitų įrenginių. Pavyzdžiui, telefonas turėtų galėti prisijungti prie žiniatinklio serverio nešiojamajame kompiuteryje, jei abu įrenginiai yra VPN tinklo dalis. Jei sąranka pasirodo gana paprasta, galite pagalvoti apie darbalaukio prijungimą prie VPN (per Ethernet).
Atsižvelgiant į tai, kad laidinis ir belaidis ryšys laikui bėgant tampa vis mažiau saugus (
Programinės įrangos diegimas
„WireGuard“ teikia
Turiu naujausią „Fedora Linux 31“ ir tingėjau perskaityti vadovą prieš diegdamas. Ką tik radau pakuotes wireguard-tools
, juos įdiegė ir tada negalėjo suprasti, kodėl niekas neveikia. Tolesnis tyrimas atskleidė, kad paketo neįdiegiau wireguard-dkms
(su tinklo tvarkykle), bet jos nebuvo mano platinimo saugykloje.
Jei būčiau perskaitęs instrukcijas, būčiau atlikęs teisingus veiksmus:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools
Mano Raspberry Pi įdiegtas Raspbian Buster paskirstymas, ten jau yra paketas wireguard
, įdiekite jį:
$ sudo apt install wireguard
„Android“ telefone įdiegiau programą
Raktų montavimas
Bendraamžių autentifikavimui „Wireguard“ naudoja paprastą privataus / viešojo rakto schemą VPN bendraamžių autentifikavimui. Galite lengvai sukurti VPN raktus naudodami šią komandą:
$ 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
Taip gaunamos trys raktų poros (šešios bylos). Konfigūracijose nenurodysime failų, o nukopijuosime turinį čia: kiekvienas raktas yra viena base64 eilutė.
Konfigūracijos failo kūrimas VPN serveriui (Raspberry Pi)
Konfigūracija gana paprasta, sukūriau šį failą /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
Pora pastabų:
- Atitinkamose vietose reikia įterpti eilutes iš failų su klavišais
- Mano VPN naudoja vidinę juostą
10.200.200.0/24
- Komandoms
PostUp
/PostDown
Aš turiu išorinę tinklo sąsają wwan0, jūs galite turėti kitą (pvz., eth0)
VPN tinklas lengvai pakeliamas naudojant šią komandą:
$ sudo wg-quick up wg0
Viena smulkmena: kaip DNS serveris, kurį naudoju dnsmasq
susieta su tinklo sąsaja br0
, taip pat pridėjau įrenginius wg0
į leidžiamų įrenginių sąrašą. Dnsmasq tai daroma pridedant naują tinklo sąsajos eilutę į konfigūracijos failą /etc/dnsmasq.conf
, pavyzdžiui:
interface=br0
interface=wg0
Be to, pridėjau iptable taisyklę, leidžiančią srautą į UDP klausymosi prievadą (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT
Dabar, kai viskas veikia, galime nustatyti automatinį VPN tunelio paleidimą:
$ sudo systemctl enable [email protected]
Kliento konfigūracija nešiojamajame kompiuteryje
Sukurkite konfigūracijos failą nešiojamajame kompiuteryje /etc/wireguard/wg0.conf
su tais pačiais nustatymais:
[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
Pastabos:
- Vietoj Edgewalker turite nurodyti viešąjį IP arba VPN serverio pagrindinį kompiuterį
- Nustačius
AllowedIPs
apie10.200.200.0/24
, vidiniam tinklui pasiekti naudojame tik VPN. Srautas į visus kitus IP adresus / serverius ir toliau vyks „įprastais“ atvirais kanalais. Jis taip pat naudos iš anksto sukonfigūruotą DNS serverį nešiojamajame kompiuteryje.
Testavimui ir automatiniam paleidimui naudojame tas pačias komandas wg-quick
и systemd
:
$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]
Kliento nustatymas „Android“ telefone
Android telefonui sukuriame labai panašų konfigūracijos failą (vadinkime 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
Skirtingai nuo nešiojamojo kompiuterio konfigūracijos, telefonas turi naudoti mūsų VPN serverį kaip DNS serverį (eil DNS
), taip pat praleisti visą srautą per VPN tunelį (AllowedIPs = 0.0.0.0/0
).
Užuot nukopijavę failą į mobilųjį įrenginį, galite konvertuoti jį į QR kodą:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf
QR kodas bus išvestas į konsolę kaip ASCII. Jį galima nuskaityti iš „Android“ VPN programos ir automatiškai nustatys VPN tunelį.
Produkcija
„WireGuard“ nustatymas yra tiesiog stebuklingas, palyginti su „OpenVPN“.
Šaltinis: www.habr.com