Rozdelené DNS a VPN: pravidlá domén nie sú IP trasy
Rozdelené DNS vyberá prekladač podľa mena a odpoveď stále potrebuje trasu. Testujte pravidlo domény a cestu oddelene, na platforme, ktorú skutočne používate.
Váš notebook prekladá intranet.corp cez tunel, zatiaľ čo gitlab.com stále ide k prekladaču poskytovateľa, a to je usporiadanie, ktoré funguje podľa návrhu. Vzniklo z dvoch oddelených rozhodnutí: pravidlo zhody mena vybralo prekladač a trasa priniesla odpoveď späť. Pokazte ktorékoľvek z nich a prehliadač ukáže zlyhanie, ktoré zvonku vyzerá rovnako. Väčšina správ o rozdelenom DNS opisuje druhé zlyhanie a pritom cituje dôkazy o prvom.
Obe polovice žijú na rôznych miestach a obvykle ich upravujú rôzni ľudia. Jedna je zásada DNS pripojená k profilu VPN, druhá je trasa, ktorú tunel inštaluje alebo zadržiava. Ladenie sa zasekne, keď nikto neurčí, ktorá polovica sa skutočne posunula.
Dve rozhodnutia skryté v jednej požiadavke
Polovica mena je objekt zásad, nie trasa. Vo Windows je to zásada prekladu mien v profile VPN; na platformách Apple sada domén zhody na objekte nastavení DNS; v Linuxe doména smerovania, riadok rozdeleného prekladača alebo poradie prepínača mennej služby. Polovica cesty je bežné smerovanie, inštalované tunelom alebo ručne, a nemá potuchy, čo je názov hostiteľa. Profil, ktorý pripúšťa príponu, rozhoduje len o tom, kto odpovie; nikdy nerobí odpoveď dostupnou.
Rýchly test príznakov ich oddelí: nahraďte meno adresou. Ak adresa funguje, cesta je v poriadku a pravidlo je nesprávne. Ak zlyhá aj adresa, pravidlo môže byť správne a cesta chýbať.
Ako každá platforma vyjadruje to isté pravidlo mena
Zámer je totožný a názvy polí nie sú. Príklad skopírovaný z jedného klienta do druhého sa parsuje čisto a nikdy sa nezhoduje. Tri podoby vyzerajú takto:
| Platform | Where the rule lives | What usually breaks |
|---|---|---|
| Windows | name-resolution policy on the VPN profile | precedence against the interface suffix list |
| Apple platforms | match domains on the DNS settings object | domains attached to the wrong extension |
| Linux | routing domain, split resolver, nsswitch order | the suffix written the wrong way round |
Doména zhody alebo smerovania je test prípony, takže intranet.corp pokrýva git.intranet.corp a nepokrýva corp.intranet, a obrátenie tohto vzťahu je najčastejšia chyba v celom nastavení. Windows nesie mapovanie ako zásadu prekladu mien pripojenú k profilu, s vlastným poradím priorít voči akémukoľvek zoznamu prípon, ktorý rozhranie už malo. Platformy Apple pripájajú domény zhody k objektu nastavení DNS sieťového rozšírenia a systém ich uplatňuje pre každý ohraničený prekladač. Žiadna z týchto podôb nie je trasa a žiadna nedokáže urobiť nedostupnú adresu dostupnou. Referenčná stránka zásada prekladu mien vo Windows uvádza názvy polí a pravidlá priorít pre túto platformu a nie sú to tie, ktoré používajú dokumenty Apple alebo systemd.
Správna odpoveď stále potrebuje cestu
Odpoveď prekladača je len adresa a aplikácia sa k nej stále musí dostať. Návrh rozdeleného tunela často pretláča 10.20.0.0/16 a zadržiava predvolenú trasu, takže interné meno sa preloží a spojenie potom visí. Opačný prípad je rovnako častý: trasa existuje, verejný prekladač odpovie na súkromné meno NXDOMAIN a zlyhanie sa zapíše ako problém smerovania. Testovanie cesty ako prvého vás nechá zízať na trasy kvôli menu, ktoré sa nikdy nemalo preložiť.
Existuje aj tretia brána, ktorú žiadna polovica nepokrýva. ACL na bráne, pravidlo firewallu alebo zásada na strane klienta môžu zhodiť spojenie po tom, čo obe rozhodnutia boli správne. Keď sa meno preloží, trasa existuje a spojenie napriek tomu vyprší, prestaňte testovať DNS.
Testovanie mien a ciest v pevnom poradí
Zvoľte poradie a držte sa ho, inak budete naháňať krok, ktorý zlyhal naposledy. Preložte dokumentované plné interné meno, potvrďte, že odpoveď je adresa, ktorú smerovacia tabuľka unesie, a potom to zopakujte s verejným menom, aby ste dokázali, že tunel nezachytil všetko. Na hostiteľovi so systemd je dotaz a doména smerovania prekladača jedno pole od seba:
resolvectl query intranet.corp
resolvectl domain
ip route get 10.20.5.10
Klient Windows kladie rovnaké dve otázky inými rutinami cmdlet. Druhá hlási rozhranie, ktoré by systém skutočne použil:
Resolve-DnsName intranet.corp -Type A
Find-NetRoute -RemoteIPAddress 10.20.5.10
Ak vyhľadanie vráti adresu a kontrola cesty označí fyzické rozhranie, pravidlo mien fungovalo a trasa nie. Ak krátke meno zlyhá, zatiaľ čo plné meno sa preloží, chybný je zoznam prípon a nie prekladač.
Kde sa porovnanie obvykle pokazí
Prvá chyba je pýtať sa nesúvisiaceho verejného prekladača na súkromné meno a čítať odmietnutie ako dôkaz o VPN. Druhá je predpokladať, že funkčné verejné vyhľadanie dokazuje cestu prekladača tunela. Tretia je považovať rozdelené tunelovanie a rozdelené DNS za jedno návrhové rozhodnutie, keď nasadenie môže byť správne v jednom a pokazené v druhom. Každá chyba dáva sebavedomé závery z testu, ktorý nikdy necvičil obviňovanú časť.
Prehliadač s vlastným bezpečným DNS môže tiež obísť systémové pravidlo, a preto to, že jeden prehliadač zlyhá, zatiaľ čo iný uspeje, nie je protiklad. Porovnávajte prekladač, ktorý odpovedal, nie prehliadač, ktorý sa sťažoval.
Keď sú obe polovice viditeľné, zostávajúca otázka je otázkou zásad a nie techniky: ktoré menné priestory patria organizácii, kto vlastní každú odpoveď a ktoré z nich by mali vôbec opustiť stroj. Zapíšte to vedľa profilu, pretože nasledujúci človek, ktorý sa pravidla dotkne, to bude potrebovať.