Viena mašina, du darbai, viena užkarda: Wi-Fi išėjimo linija, už jos mažas Ethernet potinklis ir darbalaukio VPN klientas, kuris mano, kad viskas, kas išeina iš mašinos, yra vietinė. Vietoje paleistos programos išeina vietiniu išėjimo keliu. Įrenginiai už darbo stoties ateina į Ethernet prievadą ir jiems reikia persiuntimo sprendimo. Pirmam keliui parašyta išimtis niekada nemato antrojo, todėl naršyklė apeina tunelį, o įrenginiai – ne.

Du paketų keliai, viena politika

OriginPathDecision owner
Application on the workstationOUTPUT then egressThe VPN app's routing policy
Device behind the workstationPREROUTING then FORWARDThe workstation's own forwarding policy

Pirmoji eilutė yra tai, ką aprašo dauguma split-tunneling vadovų. Antroji yra maršrutizatoriaus konfigūracija, kuri atsitiktinai gyvena toje pačioje mašinoje. Jų suliejimas į vieną protinį modelį yra klaida; jie dalijasi branduoliu, bet ne politika. Nubraižykite abu kelius prieš redaguodami bet kurią taisyklę, o likusi dizaino dalis kyla iš to, kurio kelio trūksta.

Lentelė taip pat paaiškina, kodėl viena mašina gali praeiti vieną testą ir nepraeiti kito. Naršyklė darbo stotyje įrodo vietinį kelią; nešiojamasis kompiuteris, prijungtas prie Ethernet prievado, įrodo persiuntimo kelią. Tikrinkite kiekvieną pakeitimą abiem, kitaip antrasis liks netikrintas, kad ir kiek kartų atnaujintumėte naršyklę.

Ką iš tikrųjų klasifikuoja programos išimtis

Programos lygmens išimtis paprastai veikia taip: pažymimi proceso arba naudotojo paketai, o tada pažymėtas srautas nukreipiamas už tunelio ribų. Tai vietinio išėjimo konstrukcija. Paketas iš pasroviui esančio įrenginio neturi vietinio proceso, todėl niekada neatitinka selektoriaus, kad ir koks jis būtų.

Kad ir koks būtų selektorius, du sąrašai nėra tas pats sąrašas, ir tai yra esmė. Mullvad Linux vadovas aprašo žymes, kurias vartoja jo užkarda ir maršrutizavimo politika, o jo pavyzdžiai taiko į vietinį išėjimą; tai nėra palaikomas pasroviui esančio maršrutizatoriaus aprašymas. Juos nuskliaudus gaunama mašina, kuri tiki, kad turi išimtį, o tuo pačiu viską persiunčia į tunelį.

Parašykite tranzito sutartį

Kartu įvardykite pasroviui esantį šaltinio prefiksą ir įėjimo sąsają, o tada apribokite tą prefiksą įėjime. Be apribojimo bet kuris įrenginys, pasiekiantis prievadą, gali pareikalauti išskirto adreso ir išeiti per apėjimą. Traktuokite tai kaip du klausimus: ar šie mazgai apskritai gali naudoti šią išėjimo liniją, ir ar jie gali pasiekti darbo stotį arba tunelio privačius diapazonus? Tai papildomi leidimai, o ne linijos pasirinkimo šalutinis poveikis.

Leiskite persiuntimą, o tada filtruokite. Linux tinklų sietuvui reikia įjungto persiuntimo, taisyklių, leidžiančių numatytą srautą abiem kryptimis, ir arba aukštupio grįžimo maršruto, arba tyčia susiaurinto šaltinio vertimo. Vien NAT neparenka išėjimo linijos ir nepraleidžia pro filtrą; jis tik perrašo adresą po tų sprendimų.

Tranzito klasifikacija turi įvykti prieš persiuntimo maršruto sprendimą, tai reiškia prerouting etape, o ne output. Po sprendimo įdėta taisyklė dar gali pakeisti paketą, bet negali pakeisti, kur jis jau išsiųstas.

Žymės priklauso jas turinčiai programai

Žymių reikšmės, lentelių numeriai ir grandinių prioritetai yra VPN programos politikos dalis, o ne amžinos konstantos. Tinklas, kuris priklauso nuo taisyklės įterpimo į lentelę, kurią kita programa atkuria, sulūš per kitą atnaujinimą, dažniausiai prisijungiant iš naujo, o ne patogiu metu.

Antros bazinės grandinės su accept nuosprendžiu pridėjimas nebūtinai panaikina vėlesnės grandinės drop. Bazinės grandinės turi kabliukus ir prioritetus, o pirmasis nuosprendis eilėje laimi; accept vienoje grandinėje neatšaukia drop, kurį kita grandinė pasiekia pirmiau. Žiūrėkite į visą taisyklių rinkinį ir maršrutizavimo politikos tvarką, o ne į vieną skaitiklį, kuris padidėjo. Skaitiklis įrodo, kad taisyklė veikė, bet niekada – kad būtent jos nuosprendis buvo pritaikytas.

Integruokite arba perkelkite potinklį

Du dizainai skiriasi tuo, kas valdo apėjimą. Integruotas dizainas išlaiko vieną mašiną ir vieną politiką, bet už tai priklauso nuo VPN programos lentelių gyvavimo ciklo ir žymių rinkinio, kurį jos dokumentacija gali keisti. Atskiras maršrutizatorius pasroviui esančiam tinklui visiškai pašalina šią priklausomybę: potinklis turi savo išėjimo liniją, o darbo stotis lieka klientu be persiuntimo vaidmens.

Rinkitės antrąjį, kai pasroviui esantis tinklas turi veikti ir per VPN atnaujinimus, arba kai niekas negali patikrinti integruotos politikos po kiekvieno leidimo. Rinkitės pirmąjį tik tada, kai integracija dokumentuota ir kas nors už ją atsako.

Patikrinkite ribą keturiose būsenose: prisijungta, prisijungiama iš naujo, tyčia užblokuota ir sustabdyta. Kiekvienoje patikrinkite vardų skyrimą ir abi adresų šeimas, nes apėjimas, kuris nutekina DNS, nėra ta išimtis, kurią suprojektavote. Testas turi įrodyti tikslią ribą, o ne tik tai, kad vienas puslapis įsikėlė.

Susiję straipsniai