route-gateway není redirect-gateway: co se skutečně mění
Tato volba pouze dodává další skok trasám, které OpenVPN instaluje. Její odstranění nevypne protlačený plný tunel a oprava patří přesměrování.
Tunel naskočí, privátní podsíť odpovídá a běžné prohlížení přesto mizí ve VPN, i když někdo smazal řádek brány z profilu. Tahle kombinace je otiskem úpravy nesprávné direktivy. Odstraněné dávalo klientovi další skok pro trasy, které instaluje; to, co dál zachytávalo provoz, přišlo odjinud a protlačil to server. Pokrytí a další skok jsou oddělené úlohy a jen jedna z nich rozhoduje, zda veřejné cíle používají tunel.
Řádek, který jste odstranili, byl další skok, ne přepínač politiky
Každá trasa, kterou klient instaluje, potřebuje adresu brány, na kterou má ukazovat, a direktiva brány je zdrojem této adresy, když trasa sama žádnou neuvede. Smažte ji a tyto trasy nemají kam se připojit, takže se buď nenainstalují, nebo skončí na cestě, která nikam nevede. Privátní podsíť je přesně to, co taková trasa přenášela.
Mezitím přeživší chování má jiného autora: volbu přesměrování v protlačeném bloku, která přesouvá běžný odchozí provoz do tunelu podle svých příznaků. Odstranění brány ji ani nevypne, ani neoslabí. Výsledek je nejhorší z obou stavů: veřejný provoz se stále zachytává a privátní cíl, který tunel ospravedlňoval, je nyní nedostupný. Proto ani druhá úprava, provedená ve stejném duchu, nic nemění.
Čtyři páky, čtyři různé úlohy
V této diskusi se čtyři direktivy citují zaměnitelně a jen jedna z nich řídí pokrytí, tedy které cíle se vůbec směrují tunelem. Druhá nastavuje další skok, který trasy používají, třetí instaluje jeden prefix a čtvrtá zahazuje vše, co server protlačil, včetně privátních tras, které nasazení potřebuje. Tabulka je řadí podle toho, co se správce snaží změnit, a ne podle názvu, protože právě názvy způsobují záměnu. Berte je jako čtyři samostatná rozhodnutí a vyberte to, které skutečně chcete vrátit.
V praxi všechny čtyři často přicházejí v jednom protlačeném bloku, řádek po řádku, což z nich dělá zdánlivé části jednoho nastavení. Nejsou, a referenční příručka OpenVPN je proto dokumentuje jako odlišné mechanismy. Zjistit, které rozhodnutí vracíte, je úkol; úprava je jeden řádek.
| What you are trying to change | Directive that decides it | What it leaves alone |
|---|---|---|
| Which destinations use the tunnel | redirect-gateway | Per-prefix routes and resolver choice |
| The next hop a pushed route points at | route-gateway | Coverage of public destinations |
| One reachable prefix | route | Every other destination, default path included |
| All pushed routing and DNS at once | route-nopull | Nothing, which is the problem |
Filtrujte protlačený řádek, další skok zachovejte
Pokud pokrytí, proti kterému protestujete, přichází jako protlačená volba, úzkou reakcí je tuto volbu ignorovat podle názvu a zbytek protlačeného bloku nechat nedotčený. Zapsán jako filtr vypadá jako řádek níže a patří do profilu postiženého klienta, nikoli do konfigurace serveru.
pull-filter ignore "redirect-gateway"
Úzkost je smyslem. Protože filtr porovnává textový prefix, kratší vzor odpovídá i direktivě dalšího skoku, což strhne přesně informaci, na níž privátní trasy závisí, a zopakuje původní chybu v novém kabátě. Filtr také působí jen na protlačené volby, takže nikdy nezasáhne ekvivalentní řádek napsaný lokálně nebo vnucený správcem sítě. Poté se znovu připojte, protože živá relace nepřehodnocuje to, co server protlačil.
Čtěte vyhledání, ne tabulku
Po znovunačtení profilu se zeptejte jádra, kam by dvě destinace skutečně šly: jedna uvnitř privátního prefixu a jedna na veřejném internetu. Úplný výpis hlavní tabulky se čte obtížněji a snáze se přečte špatně, protože trasa může existovat a přesto prohrát se specifičtějším zásahem. Při politickém směrování patří do kontroly i pravidlo, tabulka a zdrojová adresa.
ip route get 10.40.7.25
ip route get 203.0.113.77
ip rule show
Varianta def1 si zaslouží znalost, protože nechává starý výchozí záznam viditelný, zatímco dvojice polo-výchozích záznamů vyhrává vyhledání. Řádek 0.0.0.0/0 ve výstupu tedy sám o sobě nic nedokazuje. Vyhledání odpovídá na otázku, na kterou výpis jen vypadá, že odpovídá.
DNS, IPv6 a privátní trasa musí stále fungovat
Odmítnutí jednoho přesměrování IPv4 nic neříká o resolveru, takže protlačená volba DNS může dál posílat dotazy do tunelu, zatímco trasy vypadají správně. Výchozí IPv6 může totéž udělat pro rodinu adres, které se kontrola IPv4 nikdy nedotkla. Obě potřebují výslovné rozhodnutí místo předpokladu. Pak potvrďte, že privátní služba stále odpovídá, protože rozdělený tunel, který ztratil privátní trasu, není rozdělený tunel, ale rozbitý.
Jeden širší nástroj si zaslouží varování: route-nopull zahazuje každou protlačenou trasu a každou protlačenou volbu DNS, což plný tunel jistě zastaví a stejně jistě rozbije privátní trasy, na nichž nasazení závisí, takže je mnohem větším kladivem než filtr podle názvu zaměřený na jednu volbu. Po každé změně zkontrolujte privátní cíl, veřejný cíl a resolver a dokončený handshake považujte za důkaz ničeho jiného než handshake.