Ako poslať jednu destináciu IPv4 mimo tunela OpenVPN
Jedna hostiteľská trasa cez net_gateway môže poslať jednu adresu IPv4 mimo tunela OpenVPN. Overte ďalší skok, rozsah DNS, IPv6 a prípadné blokovanie na klientovi.
Väčšina konfigurácií s plným tunelom posiela každý paket cez VPN a práve direktíva redirect-gateway to umožňuje. Jedna destinácia sa však dá vylúčiť. Pridanie hostiteľskej trasy pre túto adresu so zástupným znakom net_gateway povie klientovi, aby sa k nej dostal cez pôvodnú bránu stroja, zatiaľ čo všetko ostatné ďalej používa tunel.
Riadok vyzerá neškodne a často aj je, ale rieši len jednu otázku: kam idú pakety pre presne túto adresu IPv4. Nemení DNS, IPv6, politiku firewallu ani to, ktorý proces otvoril spojenie, a každá z týchto vecí môže výnimku potichu zničiť.
Čo net_gateway vlastne označuje
Záznam profilu pre túto výnimku je jeden riadok: route 198.51.100.77 255.255.255.255 net_gateway. Prvá adresa je dokumentačný zástupný znak pre destináciu, maska z nej robí trasu k jednému hostiteľovi a posledný token označuje zástupný znak brány. OpenVPN pri inštalácii trás rozlišuje zástupné znaky brán. vpn_gateway znamená vlastnú bránu tunela, teda vzdialenú stranu spojenia VPN. net_gateway znamená predvolenú bránu, ktorú hostiteľ mal, kým VPN čokoľvek zmenila, čo je zvyčajne miestny router vo fyzickej sieti.
Tretí zástupný znak, remote_host, odkazuje na adresu servera VPN a existuje preto, aby sa tunel mohol k serveru dostať po fyzickej ceste. Zameniť tieto tri je najčastejší dôvod, prečo výnimka ide na nesprávne miesto alebo sa vôbec nenainštaluje.
Hodnota sa číta v okamihu pripojenia, neukladá sa do súboru. Keď sa stroj presunie do inej siete, brána pred VPN sa zmení a trasa nasleduje novú. Zvyčajne je to to, čo chcete, ale znamená to aj, že správanie výnimky závisí od siete, z ktorej klient začal.
Prečo hostiteľská trasa poráža predvolenú trasu tunela
Smerovanie rozhoduje najkonkrétnejší zodpovedajúci prefix. redirect-gateway def1 zvyčajne nenahrádza predvolenú trasu; pridáva dve polovice, trasu pre spodnú polovicu adresného priestoru a jednu pre hornú, takže pôvodná predvolená trasa zostáva zachovaná pre iné účely. Tieto polovice sú širšie ako jedna adresa.
Trasa pre jednu adresu s maskou 255.255.255.255 je /32, čo je najvyššia možná konkrétnosť IPv4. Keď sa vyhodnocuje paket pre túto adresu, /32 zodpovedá a vyhráva bez ohľadu na to, ktorá trasa bola nainštalovaná prvá. To je mechanizmus za výnimkou a funguje rovnako na Linuxe, macOS a Windows, pokiaľ trasa skutočne existuje.
Windows pridáva druhý rozmer. Keď sú dve trasy rovnako konkrétne, vyhráva tá s nižšou metrikou a adaptér VPN môže niesť metriku rozhrania, ktorá výsledok zmení. /32 je stále konkrétnejšia ako polovice, takže výnimka zvyčajne platí, ale zastaraná trasa z predchádzajúcej relácie môže priniesť mätúci výsledok, ak je rovnako konkrétna.
Čo výnimka nepokrýva
DNS je prvá medzera. Klient môže pretlačiť interné nastavenia resolvera a operačný systém ich bude ďalej používať na dopyty. Aplikácia, ktorá preloží názov pred pripojením, môže dostať internú adresu pre službu, ktorá má ísť priamo, alebo externú adresu, ktorá sa preloží správne, ale potom zakopne o ďalšiu medzeru.
IPv6 je druhá. Direktíva trasy zvláda len IPv4. Destinácia s duálnym stackom môže uprednostniť IPv6, ktorý podľa politiky nasleduje tunel alebo predvolenú trasu IPv6 hostiteľa, takže výnimka IPv4 sa nikdy neuplatní. Potrebujete zodpovedajúcu trasu IPv6 alebo vedomé rozhodnutie vypnúť IPv6 pre tohto klienta.
Rozsah aplikácií je tretí. Pravidlo je založené na destinácii, takže každý proces, ktorý sa pripája k tejto adrese, používa priamu cestu, či už je to ten, ktorý ste mali na mysli, alebo nie. Naopak, web môže odpovedať z viacerých adries, takže vylúčenie jednej /32 nevylučuje web. Ak je skutočnou požiadavkou smerovanie podľa aplikácií, smerovacia tabuľka klienta Community je nesprávny nástroj.
Overiť výnimku bez klamania samého seba
Začnite nainštalovanou trasou, nie prehliadačom. Na Linuxe sa opýtajte jadra, ktorú trasu a ďalší skok použije pre konkrétnu adresu; na Windows si prečítajte tabuľku trás pre túto /32. Overte, že brána je fyzická a nie tunelová. Ak záznam chýba, profil nebol aplikovaný alebo klient nemal oprávnenie meniť trasy.
Potom otestujte dve destinácie. Požiadavka na vylúčenú adresu by mala odísť cez fyzické rozhranie a požiadavka na kontrolnú internú adresu by mala stále používať tunel. Testovanie iba vylúčenej adresy nič nedokazuje o zvyšku tunela a testovanie verejného webu testuje adresu, na ktorú sa tento web preložil, čo nemusí byť adresa z pravidla.
Nakoniec skontrolujte ovládacie prvky, ktoré môžu trasu prepísať. Klientský kill switch alebo nastavenie block-outside-dns vo Windows môže zakázať priamu prevádzku, čo sa prejaví ako spojenie, ktoré zlyhá, aj keď je trasa správna. Nevypínajte tieto ovládacie prvky, aby výnimka vyzerala, že funguje; ak politika zakazuje priamu cestu, výnimka je problémom návrhu pre toho, kto vlastní službu VPN.
Po opätovnom pripojení alebo zmene siete skontrolujte znova, pretože brána pred VPN a dostupná cesta sú vlastnosti okamihu, nie profilu.