TL;DR: instalez Wireguard pe VPS, mă conectez la el de pe routerul de acasă cu OpenWRT și am acces la subrețeaua de acasă cu telefonul.
Dacă ai o infrastructură personală pe serverul de acasă sau multe dispozitive gestionate prin IP, cu siguranță vrei să ai acces la ele de la birou, din autobuz, tren sau metrou. Cel mai adesea pentru asemenea sarcini se cumpără un IP de la furnizor, după care porturile fiecărui serviciu sunt redirecționate către exterior.
În schimb, am configurat un VPN cu acces în rețeaua locală de acasă. Avantajele unei astfel de soluții sunt:
- Transparență: mă simt ca acasă în orice circumstanță.
- Simplitate: am configurat și am uitat, nu trebuie să mă gândesc la redirecționarea fiecărui port.
- Preț: deja am un VPS, pentru astfel de sarcini un VPN modern este aproape gratuit din punct de vedere al resurselor.
- Securitate: nimic nu este expus public, pot lăsa MongoDB fără parolă și nimeni nu va fura datele.
Ca de obicei, există și dezavantaje. În primul rând, va trebui să configurezi fiecare client separat, inclusiv pe server. Poate fi incomod având un număr mare de dispozitive din care dorești să ai acces la servicii. În al doilea rând, la birou s-ar putea să ai o rețea locală care se suprapune ca interval — va trebui să rezolvi această problemă.
Avem nevoie de:
- VPS (în cazul meu pe Debian 10).
- Router pe OpenWRT.
- Telefon.
- Server de acasă cu un serviciu web pentru testare.
- Mâini pricepute.
Pentru tehnologia VPN voi utiliza Wireguard. Această soluție are atât avantaje, cât și dezavantaje, dar nu le voi descrie. Pentru VPN folosesc subnet 192.168.99.0/24, iar acasă am 192.168.0.0/24.
Configurația VPS
Pentru acest lucru este suficient chiar și cel mai sărăcăcios VPS la 30 de ruble pe lună, dacă ai noroc să-l .
Toate operațiile pe server le execut de la root pe o mașină „curată”, dacă este necesar adaugă `sudo` și adaptează instrucțiunile.
Wireguard nu a fost inclus în versiunea stabilă, așa că execut `apt edit-sources` și adaug două linii de backporturi la sfârșitul fișierului:
deb http://deb.debian.org/debian/ buster-backports main
# deb-src http://deb.debian.org/debian/ buster-backports main
Pachetul se instalează în mod obișnuit: apt update && apt install wireguard.
Apoi generăm o pereche de chei: wg genkey | tee /etc/wireguard/vps.private | wg pubkey | tee /etc/wireguard/vps.public. Repetă această operație de încă două ori pentru fiecare dispozitiv participant la schemă. Schimbă căile către fișierele de chei pentru alt dispozitiv și nu uita de securitatea cheilor private.
Acum pregătim configurația. În fișierul /etc/wireguard/wg0.conf se va plasa configurația:
[Interface]
Adresa = 192.168.99.1/24
PortAscultare = 57953
CheiePrivată = 0JxJPUHz879NenyujROVK0YTzfpmzNtbXmFwItRKdHs=
[Peer] # OpenWRT
PublicKey = 36MMksSoKVsPYv9eyWUKPGMkEs3HS+8yIUqMV8F+JGw=
AllowedIPs = 192.168.99.2/32,192.168.0.0/24
[Peer] # Smartphone
PublicKey = /vMiDxeUHqs40BbMfusB6fZhd+i5CIPHnfirr5m3TTI=
AllowedIPs = 192.168.99.3/32
În secțiune [Interface] se configurează setările mașinii, iar în [Peer] — setările pentru cei care se vor conecta la ea. În AllowedIPs prin virgulă se specifică subrețelele care vor fi rutate la peer-ul respectiv. Din acest motiv, peerele dispozitivelor-clienți din subrețeaua VPN trebuie să aibă mască /32, tot cealaltă va fi rutată prin server. Deoarece rețeaua de acasă va fi rutată prin OpenWRT, în AllowedIPs peer-ul respectiv adăugăm subrețeaua de acasă. În PrivateKey și PublicKey dezați cheia privată generată pentru VPS și cheile publice ale peer-ilor corespunzător.
Pe VPS rămâne doar să rulați comanda care va activa interfața și o va adăuga la pornirea automată: systemctl enable --now wg-quick@wg0. Starea actuală a conexiunilor poate fi verificată cu comanda wg.
Configurația OpenWRT
Tot ce este necesar pentru această etapă se află în modul luci (interfața web OpenWRT). Conectați-vă la acesta și, în meniul System, deschideți tab-ul Software. OpenWRT nu păstrează cache pe mașină, așa că trebuie să actualizați lista pachetelor disponibile apăsând pe butonul verde Update lists. După finalizare, în filtru introduceți luci-app-wireguard și, privind fereastra cu un arbore frumos de dependențe, instalați acest pachet.
În meniul Networks selectați Interfaces și dați clic pe butonul verde Add New Interface de sub lista deja existentă. După introducerea numelui (de asemenea wg0 în cazul meu) și alegerea protocolului WireGuard VPN, se deschide un formular de setări cu patru tab-uri.

În tab-ul General Settings trebuie să introduceți cheia privată și adresa IP pregătită pentru OpenWRT împreună cu subrețeaua.

În tab-ul Firewall Settings adăugați interfața în rețeaua locală. Astfel, conexiunile din VPN vor putea accesa liber rețeaua locală.

În tab-ul Peers apăsați singurul buton, după care în formularul actualizat completați datele serverului VPS: cheia publică, Allowed IPs (trebuie să rutați întreaga subrețea VPN către server). În Endpoint Host și Endpoint Port introduceți, respectiv, adresa IP a VPS-ului cu portul menționat anterior în directiva ListenPort. Bifați Route Allowed IPs, pentru a crea rute. Și asigurați-vă că completați Persistent Keep Alive, altfel tunelul de la VPS la router se va întrerupe dacă acesta din urmă este în spatele NAT.


După aceasta, puteți salva setările, apoi, pe pagina cu lista interfețelor, faceți clic pe Save and apply. Dacă este necesar, porniți explicit interfața cu butonul Restart.
Configurăm smartphone-ul
Veți avea nevoie de clientul Wireguard, care este disponibil în , și App Store. După deschiderea aplicației, apăsați pe simbolul plus și în secțiunea Interface introduceți numele conexiunii, cheia privată (cheia publică va fi generată automat) și adresa telefonului cu mască /32. În secțiunea Peer, specificați cheia publică a VPS-ului, perechea adresă: port al serverului VPN ca Endpoint și rutele către subrețelele VPN și de acasă.
Captură de ecran grasă de pe telefon

Apăsați pe discheta din colț, activați și...
Finalizat
Acum puteți accesa monitorizarea de acasă, schimba setările routerului sau face orice pe nivel IP.
Capturi de ecran din rețeaua locală


Sursa: habr.com
