Zákazník potřebuje následující. Má svoji vnitřní doménu (v ukázce například gopas.local) a její DNS servery umístěné všechny na vnitřních Active Directory DC (řadičích domény). Vnitřní DNS servery obsahují jen zónu gopas.local. Všechny ostatní dotazy mají přeposílat na další DNS servery, které jsou v DMZ.

DNS servery v DMZ jsou také postaveny na Windows Server 2008. Mají fungovat jako forwardery pro dotazy ze vnitř. K tomu musí mít tedy ve vlastnostech povolenu rekurzi (políčko tabulky Advanced - Disable recursion musí být vypnuté, tak jak je výchozí stav).
Jenže tyhle DNS servery v perimetru mají navíc hostovat veřejnou doménu zákazníka - v našem obrázku gopas.cz. A pokud budou tedy dosažitelné z venku, měli by naopak mít rekurzivní dotazy vypnuté - potřebujeme tedy zapnout políčko Disable recursion.
Bohužel tohle nastavení nelze udělat podle nějakého filtru. DNS server na Windows má tohle prostě jako jedinou volbu, buď to zapnete, nebo vypnete.
Řešení?
Vnější firewall (tedy ve skutečnosti oba) jsou Cisco ASA. Takže můžeme použít DNS Inspection. Návod na konfiguraci i s příkladem je tady. Hledejte slova z následujícího seznamu a najdete i krásný návod:
Recursion Desired
Recursion Available
match header-flag RD
Stačí prostě na vnějším firewallu udělat inspekční pravidlo, které zablokuje příznak (flag) zvaný Recursion Desired (RD) v DNS paketech, které přicházejí z venku. Vlastně v libovolném směru, protože ani ve směru z DMZ rekurzi nepotřebuju.
Poznámka na závěr
Jen pro úplnost, doporučuju na těch veřejných DNS serverech v DMZ vypnout EDNS Probes. To je taková věc, která v mnoha případech prozatím nefunguje a nelze pak překládat různé názvy. Přečíst si o tom můžete tu.