OpenWrt VPN-zono, plusendado kaj kaŝado: kiu necesas?
Zona enigo, plusendado kaj kaŝado respondas al malsamaj demandoj. Decidu, kion via VPN-trafiko bezonas antaŭ ol malfermi la WAN-zonon.
Tri ŝanĝoj miksiĝas ĉiufoje, kiam VPN renkontas OpenWrt: malfermi pordon, permesi plusendadon kaj ŝalti kaŝadon. Ili respondas al malsamaj demandoj, kaj kutime nur unu el ili estas la reala bezono. Legi ĉiun regilon laŭ la trafika rolo, kiun ĝi regas, ŝanĝas konjekton en decidon, kaj ĝi ankaŭ diras, kiun simpton atendi, kiam la ŝanĝo estas malĝusta. Komencu per nomi la rolon, kiu malsukcesis, ne la markobutonon, kiun vi memoras.
Nomu la trafikan rolon antaŭ ol tuŝi regilon
Zona enigo decidas, kio povas atingi la enkursigilon mem. Zona eligo kovras trafikon, kiun la enkursigilo mem kreas, zona plusendado estas la defaŭlto por trafiko, kiu trapasas zonon, kaj kaŝado decidas, ĉu la fonta adreso estas reskribata survoje eksteren. Tiuj estas kvar malsamaj demandoj, kaj zona politiko respondas al ĉiuj samtempe per la sama valoro, tial ŝanĝo por la tuta zono estas maldelikata ilo. Nomita regulo povas respondi al unu el ili sen tuŝi la ceterajn.
La utila mapo estas laŭ trafika rolo, ĉar tion vi povas observi, kiam io malsukcesas. Ĉiu rolo sube havas unu regilon, kiu decidas ĝin, kaj unu simpton, kiu montras al ĝi:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
Aŭskultanto sur la enkursigilo bezonas unu mallarĝan enigan regulon
OpenVPN-servilo sur la enkursigilo ricevas trafikon adresitan al la enkursigilo, do ĝia ekstera konekto dependas de la eniga politiko de la zono, kiu portas ĝin. Permesu la agorditan transporton kaj pordon kaj lasu ĉion alian en tiu zono malakceptita. Unu porda regulo estas multe pli malgranda ŝanĝo ol permeso por la tuta zono, kaj ĝi estas tiu, kiun vi ankoraŭ povos klarigi post jaro.
Du aferoj faras tiun regulon sekura por teni: ĝi nomas la pordon, kiun la servo efektive uzas, kaj ĝi staras apud la zona difino, por ke la sekva persono vidu, kial ĝi ekzistas. La linioj sube estas la formo, kun la pordo anstataŭante tion, kio estas agordita sur la servilo. Ŝanĝu tiun pordon en ambaŭ lokoj, kiam la servo translokiĝas, ĉar regulo lasita sur la malnova estas nevidebla ĝis revizio.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'Validigu antaŭ ol reŝargi, ĉar sintaksa eraro en fajroŝirma dosiero povas lasi la enkursigilon sen funkcianta regularo. En eldono, kiu uzas fw4, la kontrolo estas aparta komando, kaj ĝi malsukcesas laŭte anstataŭ silente akcepti rompitan blokon. Reŝargu nur post kiam la kontrolo trapasas, kaj konservu la antaŭan dosieron tie, kie vi povas remeti ĝin.
fw4 check
service firewall reloadPeto de kliento trapasas plusendadon, ne enigon
Post aŭtentigo, peto de tunela kliento pri LAN-servo produktas plusenditan fluon, do la regilo, kiu decidas ĝin, estas la plusenda rilato inter la tunela zono kaj la LAN-zono. Asignu la tunelan interfacon al la celata zono, poste deklaru la direkton, la fontojn kaj la servon. La zona asigno estas tio, kio donas signifon al la plusenda regulo, kaj ambaŭ havas sencon nur legataj kune. Plusenda rilato, kiu nomas la tunelan zonon kiel fonton kaj la LAN-zonon kiel celon, legiĝas kiel unu intenca decido, dum du permesoj por la tuta zono legiĝas kiel akcidento.
Atingi la enkursigilon mem ankoraŭ uzas la enigan vojon, tial ping al la enirejo diras nenion pri la dosierkunhavigo malantaŭ ĝi. Tiuj du malsukcesoj loĝas en malsamaj blokoj kaj estas riparataj per malsamaj ŝanĝoj. Skribu ambaŭ vojojn aparte antaŭ ol ŝanĝi iun ajn el ili.
Kaŝado estas enkursiga decido, ne permeso
Kaŝado reskribas la fontan adreson de elektita elira trafiko. Ĝi povas savi eliran dezajnon, kie la malproksima flanko ne havas revenan vojon, kaj ĝi ankaŭ kaŝas la adresojn de unuopaj klientoj de ĉiu servo, kiu registras aŭ rajtigas laŭ adreso. Malŝalti ĝin estas enkursiga elekto pri la reena vojo, ne sekureca ŝaltilo, kiu fermas eniran truon. Tunelo, kiu funkcias kun tradukado ŝaltita kaj malsukcesas en la momento, kiam ĝi estas malŝaltita, kutime havas mankantan revenan vojon, ne mankantan fajroŝirman regulon.
Enkursigita alternativo bezonas revenan vojon ĉe la malproksima flanko anstataŭ tradukado. Neniu el la du opcioj havigas la fajroŝirman permeson aŭ la aplikaĵan konton, tial malŝalti kaŝadon preskaŭ neniam riparas tunelan klienton, kiu povas atingi nenion. Traktu ankaŭ la politikon por IPv4 kaj IPv6 aparte, ĉar unu traduka agordo ne priskribas ambaŭ familiojn.
Pruvu la decidon per permesita kaj malakceptita peto
Sendu unu peton, kiu devus esti permesita, kaj unu, kiu devus esti malakceptita, poste identigu la regilon, kiu faris ĉiun decidon. Paĝo, kiu hazarde ŝarĝiĝas, ne estas pruvo; la pruvo estas la regulo, kiu kongruis, en la ĉeno, kie ĝi kongruis. La malakcepto gravas same kiel la sukceso, ĉar ĝi montras, ke la politiko faras ion, anstataŭ ke ĉio estas permesita.
Du komandoj donas al vi tiun pruvon en aktuala eldono. La nombrilo sur la kongrua regulo moviĝas, kiam la peto estas akceptita, kaj la protokolo montras la forĵeton, se vi ŝaltis protokoladon por la regulo:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'Konservu administran vojon, kiun vi ankoraŭ povas uzi, antaŭ ol ŝanĝi iun ajn fajroŝirman politikon, kaj sekvu la validigan kaj restarigan procezon de la posedanto de la agordo. Ŝanĝo, kiu ŝlosas vin ekster la enkursigilo, ne estas testa rezulto, ĝi estas dua okazaĵo. Notu la zonon kaj la trafikan rolon apud ĉiu observo, por ke la paro da rezultoj klarigu la politikon anstataŭ priskribi bonŝancan paĝŝarĝon.