Kaip nustatyti VPN į namų tinklą

Kodėl apskritai verta turėti VPN į namus?

Daugelis žmonių VPN asocijuoja su kažkokia mokama paslauga, kuri slepia tavo IP adresą ir leidžia žiūrėti užsienio Netflix katalogą. Tai tiesa, bet tai tik viena medalio pusė. Visiškai kitas dalykas – turėti savo, asmeninį VPN serverį namuose, prie kurio gali prisijungti iš bet kurios pasaulio vietos.

Pagalvok apie tokį scenarijų: esi komandiruotėje Berlyne, prisijungi prie viešbučio Wi-Fi ir nori pasiekti savo namų NAS diską su visais dokumentais. Arba nori naudotis savo namų spausdintuvu, nes reikia atspausdinti kažką svarbaus, o draugas gyvena šalia. Arba tiesiog nori, kad visi tavo duomenys keliauti per šifruotą tunelį, o ne per kažkokio kavos parduotuvės maršrutizatoriaus atvirą tinklą.

Namų VPN suteikia tau prieigą prie viso tavo vietinio tinklo – tarsi fiziškai būtum namuose. Ir tai nėra kažkoks raketų mokslas, nors iš pirmo žvilgsnio gali taip atrodyti.

Ką reikia turėti prieš pradedant

Prieš nerdamas į konfigūracijas ir terminalus, verta susitvarkyti keletą dalykų. Jei jų neturėsi, visas projektas gali užstrigti ties pirmuoju žingsniu.

Statinis IP adresas arba dinaminis DNS. Čia dažnai žmonės susiduria su pirma kliūtimi. Dauguma interneto tiekėjų Lietuvoje suteikia dinaminį IP adresą – tai reiškia, kad jis gali keistis. Jei šiandien tavo namų IP yra vienas, rytoj gali būti visiškai kitas. Sprendimas – dinaminis DNS (DDNS) paslauga. Tokios paslaugos kaip DuckDNS, No-IP arba Dynu leidžia turėti fiksuotą domeną (pvz., manamas.duckdns.org), kuris automatiškai atsinaujina, kai keičiasi tavo IP. DuckDNS yra nemokama ir puikiai tinka namų naudojimui.

Maršrutizatorius su prieiga prie nustatymų. Tau reikės atidaryti uostą (port forwarding). Jei turi operatoriaus suteiktą maršrutizatorių ir neturi prieigos prie jo administravimo panelės – gali tekti skambinti tiekėjui arba galvoti apie alternatyvą.

Serveris, kuriame veiks VPN. Tai gali būti senas kompiuteris, Raspberry Pi, NAS įrenginys arba net pats maršrutizatorius, jei jis palaiko papildomą programinę įrangą. Raspberry Pi 4 čia yra beveik idealus pasirinkimas – mažas, tylus, pigus elektros sąnaudomis.

WireGuard vs OpenVPN – kurį rinktis?

Tai klausimas, kurį užduoda beveik kiekvienas, kas pradeda domėtis namų VPN. Trumpas atsakymas: jei neturi specifinių priežasčių rinktis OpenVPN, rinkis WireGuard.

OpenVPN yra senas, patikimas ir gerai ištirtas protokolas. Jis veikia praktiškai visur, turi milžinišką bendruomenę ir daugybę dokumentacijos. Bet jis ir sudėtingesnis konfigūruoti, lėtesnis, o jo kodų bazė yra tokia didelė, kad saugumo auditai tampa tikru iššūkiu.

WireGuard atsirado kaip atsakas į šiuos trūkumus. Jo kodų bazė yra maždaug 4000 eilučių (palyginti su OpenVPN ~100 000 eilučių), jis yra greičiau, paprasčiau konfigūruojamas ir jau integruotas į Linux branduolį nuo 5.6 versijos. Praktiškai tai reiškia, kad jis veikia geriau su mobiliaisiais įrenginiais – ryšys atsistato greičiau, kai persijungi iš Wi-Fi į mobilųjį internetą.

Šiame straipsnyje daugiausia kalbėsime apie WireGuard, nes tai šiuo metu protingiausias pasirinkimas namų naudojimui.

WireGuard diegimas žingsnis po žingsnio

Parodysiu, kaip tai padaryti Ubuntu/Debian sistemoje, nes tai dažniausiai naudojama aplinka namų serveriuose. Jei naudoji Raspberry Pi – ten taip pat veikia Debian pagrindu veikianti Raspberry Pi OS, tad instrukcijos bus identiškos.

Pirmiausia atnaujink sistemą ir įdiek WireGuard:

sudo apt update && sudo apt upgrade -y
sudo apt install wireguard -y

Tada sukurk kriptografinius raktus serveriui:

wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key

Dabar sukurk konfigūracijos failą. Atidaryk tekstų redaktorių:

sudo nano /etc/wireguard/wg0.conf

Ir įrašyk tokį turinį (pakeisk reikšmes pagal savo situaciją):

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = [čia įklijuok savo serverio privatų raktą]
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Svarbu: eth0 pakeisk į savo tinklo sąsajos pavadinimą. Jį gali sužinoti paleidęs komandą ip a. Šiuolaikinėse sistemose tai dažnai būna kažkas panašaus į enp3s0 arba ens3.

Tada įjunk IP persiuntimą:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Paleisk WireGuard ir nustatyk, kad jis startuotų automatiškai:

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Kliento konfigūracija ir prijungimas

Kiekvienas įrenginys, kuris jungiasi prie tavo VPN, vadinamas „peer” arba klientu. Kiekvienam klientui reikia sugeneruoti atskirus raktus.

Serveryje sugeneruok kliento raktus:

wg genkey | tee /etc/wireguard/client1_private.key | wg pubkey > /etc/wireguard/client1_public.key

Tada pridėk kliento informaciją į serverio konfigūracijos failą (/etc/wireguard/wg0.conf):

[Peer]
PublicKey = [kliento viešasis raktas]
AllowedIPs = 10.0.0.2/32

Dabar sukurk kliento konfigūracijos failą (jį importuosi į telefono ar kompiuterio WireGuard programėlę):

[Interface]
PrivateKey = [kliento privatusis raktas]
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = [serverio viešasis raktas]
Endpoint = manamas.duckdns.org:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Čia AllowedIPs = 0.0.0.0/0 reiškia, kad visas srautas eis per VPN. Jei nori tik prieigos prie namų tinklo (be viso srauto peradresavimo), pakeisk į 10.0.0.0/24, 192.168.1.0/24 (antroji reikšmė – tavo namų tinklo adresas).

Iš šio konfigūracijos failo galima sugeneruoti QR kodą, kurį nuskaito telefono WireGuard programėlė:

sudo apt install qrencode
qrencode -t ansiutf8 < /etc/wireguard/client1.conf

Port forwarding maršrutizatoriuje

Tai dalis, kuri dažnai sukelia daugiausiai galvos skausmo, nes kiekvieno maršrutizatoriaus sąsaja atrodo kitaip. Bet principas visur tas pats.

Tau reikia nukreipti UDP 51820 uostą į savo serverio vietinį IP adresą. Pirmiausia sužinok serverio vietinį IP:

hostname -I

Tai gali būti kažkas panašaus į 192.168.1.100. Tada eik į maršrutizatoriaus administravimo panelę (dažniausiai 192.168.1.1 arba 192.168.0.1), surask skyrių "Port Forwarding", "NAT" arba "Virtual Server" ir sukurk naują taisyklę:

  • Protokolas: UDP
  • Išorinis uostas: 51820
  • Vidinis IP: tavo serverio vietinis IP (pvz., 192.168.1.100)
  • Vidinis uostas: 51820

Labai svarbu: serverio vietinis IP neturėtų keistis. Rekomenduoju maršrutizatoriuje nustatyti statinį DHCP priskyrimą pagal MAC adresą – tai reiškia, kad tas pats įrenginys visada gaus tą patį vietinį IP. Ši funkcija dažnai vadinama "DHCP Reservation" arba "Static DHCP".

Jei naudoji TP-Link maršrutizatorių – tai rasi skyriuje "Advanced → NAT Forwarding → Virtual Servers". ASUS maršrutizatoriuose – "WAN → Virtual Server / Port Forwarding". Mikrotik – "IP → Firewall → NAT".

Saugumo aspektai, kurių negalima ignoruoti

Kai atidari uostą į internetą, esi matomas. WireGuard yra gana saugus protokolas, bet tai nereiškia, kad gali pamiršti apie kitus saugumo aspektus.

Nekeisk numatytojo SSH uosto. Na, tiksliau – keisk. Jei tavo serveris pasiekiamas per SSH (o jis tikriausiai yra), pakeisk uostą iš 22 į kažką kito, pvz., 2222 ar 22222. Tai neapsaugo nuo rimtų atakų, bet sumažina automatinių botų triukšmą žurnaluose.

Naudok raktų autentifikaciją SSH. Slaptažodžiai yra blogai. Sugeneruok SSH raktų porą ir išjunk slaptažodžio autentifikaciją:

PasswordAuthentication no

Šią eilutę rasi faile /etc/ssh/sshd_config.

Įdiek fail2ban. Ši programa stebi prisijungimo bandymus ir automatiškai blokuoja IP adresus, kurie per daug kartų bando jungtis su neteisingais duomenimis:

sudo apt install fail2ban -y

Reguliariai atnaujink sistemą. Tai skamba banaliai, bet dauguma saugumo problemų kyla iš neatnaujintų sistemų. Galima nustatyti automatinius saugumo atnaujinimus:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades

Stebėk WireGuard būseną. Periodiškai patikrink, kas prisijungę:

sudo wg show

Tai parodys visus aktyvius ryšius, paskutinio rankos paspaudimo laiką ir perduotų duomenų kiekį.

Kai viskas veikia – ką dar galima padaryti?

Turėdamas veikiantį namų VPN, atsirakina keletas įdomių galimybių, apie kurias galbūt nepagalvojai iš pradžių.

Pi-hole integracija. Jei tame pačiame Raspberry Pi (arba kitame namų serveryje) įdiegsi Pi-hole – DNS lygmens reklamos blokatorių – galėsi naudoti jį ir prisijungęs per VPN iš bet kurios vietos. Tiesiog pakeisk DNS adresą kliento konfigūracijoje į Pi-hole serverio vietinį IP. Taip reklamos bus blokuojamos net ir telefone, kai naudoji mobilųjį internetą.

Prieiga prie namų NAS. Jei turi Synology, QNAP ar bet kurį kitą tinklinį diską – per VPN jis bus pasiekiamas taip pat, kaip ir namų tinkle. Nereikia jokių papildomų konfigūracijų.

Split tunneling. Jei nori, kad tik dalis srauto eitų per VPN (pvz., tik prisijungimui prie namų tinklo, bet ne visam interneto srautui), pakeisk kliento konfigūracijoje AllowedIPs reikšmę. Vietoj 0.0.0.0/0 nurodyk tik savo namų tinklo adresų bloką, pvz., 192.168.1.0/24, 10.0.0.0/24. Taip greitis bus geresnis, nes ne visas srautas eis per namų ryšį.

Kelių klientų valdymas. Kiekvienam įrenginiui (telefonui, planšetei, nešiojamam kompiuteriui, darbo kompiuteriui) sukurk atskirą klientą su savo raktų pora. Taip prireikus galėsi atjungti konkretų įrenginį, tiesiog pašalinęs jo [Peer] sekciją iš serverio konfigūracijos ir perkrovęs WireGuard.

Kai namų tinklas tampa tavo asmeniniu duomenų centru

Visas šis procesas – nuo pirmojo apt install wireguard iki to momento, kai pirmą kartą prisijungi iš kavinės ir matai savo namų tinklo įrenginius – gali užtrukti nuo valandos iki kelių vakarų, priklausomai nuo to, kiek problemų iškyla pakeliui. Ir problemos tikrai iškyla: kartais maršrutizatorius elgiasi keistai, kartais interneto tiekėjas blokuoja tam tikrus uostus, kartais tiesiog pamiršti įjungti IP persiuntimą.

Bet kai viskas suveikia – tai yra kažkas ypatingo. Tu nebesi priklausomas nuo jokios trečiosios šalies paslaugos. Tavo duomenys keliauja per tavo serverį, tavo šifravimą, tavo taisykles. Nėra jokio mokesčio kas mėnesį, nėra jokios įmonės, kuri galėtų nuspręsti peržiūrėti tavo srautą ar tiesiog uždaryti paslaugą.

Raspberry Pi 4 su WireGuard ir Pi-hole kainuoja apie 60-80 eurų vieną kartą ir veikia metų metus. Palygink tai su bet kuria komercine VPN paslauga, kuri kainuoja 3-10 eurų per mėnesį ir kuriai turi tiesiog tikėti, kad ji nedaro to, ko neturėtų daryti.

Namų VPN yra vienas tų IT projektų, kuris iš pradžių atrodo kaip hobis, bet greitai tampa įrankiu, be kurio sunku įsivaizduoti kasdienį darbą. Ypač jei daug keliauji, dirbi iš skirtingų vietų arba tiesiog vertini privatumą daugiau nei vidutinis interneto naudotojas.

Daugiau

Kaip įsirengti wallbox namuose