OpenWrt VPN zona, persiuntimas ir maskavimas: ko reikia?
Zonos įvestis, persiuntimas ir maskavimas atsako į skirtingus klausimus. Nuspręskite, ko reikia jūsų VPN srautui, prieš atidarydami WAN zoną.
Trys pakeitimai susimaišo kiekvieną kartą, kai VPN susitinka su OpenWrt: atidaryti prievadą, leisti persiuntimą ir įjungti maskavimą. Jie atsako į skirtingus klausimus, ir paprastai tik vienas jų yra tikrasis reikalavimas. Skaitymas kiekvieno valdiklio pagal jo valdomą srauto vaidmenį spėjimą paverčia sprendimu ir taip pat pasako, kokio simptomo tikėtis, kai pakeitimas neteisingas. Pradėkite nuo vaidmens, kuris nepavyko, o ne nuo žymės laukelio, kurį prisimenate.
Įvardykite srauto vaidmenį prieš liesdami valdiklį
Zonos įvestis nusprendžia, kas gali pasiekti patį maršrutizatorių. Zonos išvestis apima srautą, kurį maršrutizatorius pats sukuria, zonos persiuntimas yra numatytoji reikšmė srautui, einančiam per zoną, o maskavimas nusprendžia, ar išeinant šaltinio adresas bus perrašytas. Tai keturi skirtingi klausimai, o zonos politika į visus juos atsako vienu metu ta pačia reikšme, todėl pakeitimas visoje zonoje yra grubus įrankis. Įvardyta taisyklė gali atsakyti į vieną iš jų neliesdama kitų.
Naudingas žemėlapis yra pagal srauto vaidmenį, nes būtent tai galite stebėti, kai kažkas nepavyksta. Kiekvienas žemiau esantis vaidmuo turi vieną valdiklį, kuris jį nusprendžia, ir vieną simptomą, kuris į jį nurodo:
| 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 |
Klausytojas maršrutizatoriuje reikalauja vienos siauros įvesties taisyklės
Maršrutizatoriuje esantis OpenVPN serveris gauna maršrutizatoriui adresuotą srautą, todėl jo išorinis ryšys priklauso nuo zonos, kuri jį neša, įvesties politikos. Leiskite sukonfigūruotą transportą ir prievadą, o visa kita toje zonoje palikite atmesta. Viena prievado taisyklė yra daug mažesnis pakeitimas nei leidimas visoje zonoje, ir būtent ją galėsite paaiškinti ir po metų.
Du dalykai daro tą taisyklę saugią laikyti: ji įvardija prievadą, kurį paslauga iš tikrųjų naudoja, ir stovi šalia zonos apibrėžimo, kad kitas žmogus matytų, kodėl ji egzistuoja. Žemiau esančios eilutės yra tik forma, o prievadas atstoja tai, kas sukonfigūruota serveryje. Kai paslauga persikelia, pakeiskite tą prievadą abiejose vietose, nes senajame likusi taisyklė yra nematoma iki audito.
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'Patikrinkite prieš perkraudami, nes sintaksės klaida ugniasienės faile gali palikti maršrutizatorių be veikiančio taisyklių rinkinio. Leidime su fw4 patikra yra atskira komanda, ir ji garsiai nepavyksta, o ne tyliai priima sulaužytą bloką. Perkraukite tik po to, kai patikra praeina, ir laikykite ankstesnį failą ten, iš kur galite jį grąžinti.
fw4 check
service firewall reloadKliento užklausa eina per persiuntimą, o ne per įvestį
Po autentifikavimo tunelio kliento užklausa LAN paslaugai sukuria persiųstą srautą, todėl ją nusprendžiantis valdiklis yra persiuntimo ryšys tarp tunelio zonos ir LAN zonos. Priskirkite tunelio sąsają norimai zonai, tada deklaruokite kryptį, šaltinius ir paslaugą. Zonos priskyrimas yra tai, kas persiuntimo taisyklei suteikia prasmę, ir abu suprantami tik skaitomi kartu. Persiuntimo ryšys, kuriame tunelio zona nurodyta kaip šaltinis, o LAN zona kaip paskirties vieta, skaitomas kaip vienas sąmoningas sprendimas, o du leidimai visoje zonoje skaitomi kaip nelaimė.
Pasiekti patį maršrutizatorių vis dar naudojamas įvesties kelias, todėl ping į tinklų sietuvą nieko nesako apie failų bendrinimą už jo. Tos dvi nesėkmės gyvena skirtinguose blokuose ir taisomos skirtingais pakeitimais. Užsirašykite abu kelius atskirai, prieš keisdami bet kurį.
Maskavimas yra maršrutizavimo sprendimas, o ne leidimas
Maskavimas perrašo pasirinkto išeinančio srauto šaltinio adresą. Jis gali išgelbėti išėjimo projektą, kai tolimoji pusė neturi grįžimo maršruto, ir taip pat paslepia atskirų klientų adresus nuo bet kurios paslaugos, kuri registruoja arba autorizuoja pagal adresą. Jo išjungimas yra maršrutizavimo pasirinkimas dėl grįžimo kelio, o ne saugos jungiklis, uždarantis įeinamą skylę. Tunelis, kuris veikia su įjungtu vertimu ir nepavyksta tą akimirką, kai jis išjungiamas, paprastai neturi grįžimo maršruto, o ne ugniasienės taisyklės.
Maršrutizuota alternatyva vietoj vertimo reikalauja grįžimo maršruto tolimojoje pusėje. Nė vienas variantas nesuteikia ugniasienės leidimo ar programos paskyros, todėl maskavimo išjungimas beveik niekada nesutaiso tunelio kliento, kuris nieko nepasiekia. Atskirai traktuokite ir IPv4 bei IPv6 politiką, nes vienas vertimo nustatymas neaprašo abiejų šeimų.
Įrodykite sprendimą leista ir atmesta užklausa
Nusiųskite vieną užklausą, kuri turėtų būti leista, ir vieną, kuri turėtų būti atmesta, tada nustatykite valdiklį, priėmusį kiekvieną sprendimą. Puslapis, kuris įkeliamas atsitiktinai, nėra įrodymas; įrodymas yra taisyklė, kuri sutapo, toje grandinėje, kurioje ji sutapo. Atmetimas svarbus tiek pat, kiek sėkmė, nes jis parodo, kad politika ką nors daro, o ne kad viskas leidžiama.
Dvi komandos duoda tą įrodymą dabartiniame leidime. Atitinkančios taisyklės skaitiklis pajuda, kai užklausa priimama, o žurnalas parodo atmetimą, jei įjungėte tos taisyklės registravimą:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'Palaikykite administravimo kelią, kurį dar galite naudoti, prieš keisdami bet kokią ugniasienės politiką, ir laikykitės konfigūracijos savininko patikros bei atšaukimo proceso. Pakeitimas, kuris užrakina jus už maršrutizatoriaus, nėra testo rezultatas, tai antras incidentas. Užrašykite zoną ir srauto vaidmenį prie kiekvieno stebėjimo, kad rezultatų pora paaiškintų politiką, o ne aprašytų laimingą puslapio įkėlimą.