Table of Contents

,

Transfer Windows AD DNS zones to BIND

Original by /u/rootwyrm on reddit preserved here for future reference in case it gets deleted.


Okay, step back. I've been doing this longer than anyone else here, guaranteed. First up, that's NOT how DNS works. You do not replicate. You push updates with NOTIFY and IXFR. Secondly, there are very specific requirements.

First, BIND must be minimum 9.9 for 2k12/2k12R2 and 9.6 for 2k8/2k8R2. Forest Functional level as set in AD.

Second, you must configure AD DNS appropriately.

DNS -> AD DNS Server

Right Click, Properties

Advanced Tab

Select the following options (ALL are required):

Root Hints MUST BE UPDATED MANUALLY. You can use the “Resolve” button to do this.

Forward Lookup Zone -> EXAMPLE.COM

Forward Lookup Zone -> _msdcs.EXAMPLE.COM

Reverse Lookup Zone -> 0.0.10.in-addr.arpa (repeat for all reverse zones)

BIND configuration (example)

  options {
      ...
      check-names master warn; // Must be WARN only for AD
      allow-notify {
          localhost; AD_SERVER.IP.ADDRESS;
      };
      allow-transfer {
          localhost; AD_SERVER.IP.ADDRESS;
      };
      ends-udp-size 4096;
      max-udp-size 4096;
      dnssec-enable yes; //optional
      dnssec-validation yes; // optional, can be yes or no
      dnssec-lookaside auto; // MUST be auto for AD
  };
  
  zone "EXAMPLE.COM" {
      type slave;
      masters { AD_SERVER.IP.ADDRESS; };
      file "/something/appropriate/base/etc/is/not/appropriate";
      allow-transfer { "AD_SERVER.IP.ADDRESS"; };
      allow-notify { "AD_SERVER.IP.ADDRESS"; };
  };
  zone "_msdcs.EXAMPLE.COM" {
      type slave;
      masters { AD_SERVER.IP.ADDRESS; };
      file "/something/appropriate/that/is/different";
      allow-transfer { "AD_SERVER.IP.ADDRESS"; };
      allow-notify { "AD_SERVER.IP.ADDRESS"; };
  };
  
  zone "0.0.10.in-addr.arpa" {
      type slave;
      masters { AD_SERVER.IP.ADDRESS; };
      file "/something/appropriate/that/is/different";
      allow-transfer { "AD_SERVER.IP.ADDRESS"; };
      allow-notify { "AD_SERVER.IP.ADDRESS"; };
  };