I recently had to migrate a large DNS environment from about 23 Microsoft Domain Controllers to Infoblox DNS. I could have just deleted all the zones and set the forwarding on the Microsoft DNS servers but I wanted to leave the Microsoft DNS configuration and data in place to provide a quick backout option in the unlikely event that it was need (it was needed but the second time around using the named.conf file below was the charm).
I ended up deploying ISC BIND 9.10.2-P3 across a mix of Windows 2003 and Windows 2008 domain controller servers, some 32-bit and some 64-bit.
As I alluded to above I originally had issues running BIND getting error messages such as the following after only a few hours running the service and clients failing to get name resolution.
27-Jul-2015 19:15:04.575 general: error: ..\client.c:2108: unexpected error: 27-Jul-2015 19:15:04.575 general: error: failed to get request's destination: failure 27-Jul-2015 19:15:04.981 general: error: ..\client.c:2108: unexpected error: 27-Jul-2015 19:15:04.981 general: error: failed to get request's destination: failure 27-Jul-2015 19:15:20.971 general: error: ..\client.c:2108: unexpected error: 27-Jul-2015 19:15:20.971 general: error: failed to get request's destination: failure
There were also a few other errors that apeared to be releated to the anti-DDoS mechanisms built into BIND;
27-Jul-2015 19:50:02.369 resolver: notice: clients-per-query increased to 15
So I went back and recrafted the named.conf file and came up with the following which seems to be working well for me now almost 5 days after the Infoblox DNS migration.
You’ll noticed that I commented out the localhost zone and the 127.0.0.1 reverse zone as well. I didn’t think that BIND would run without them but sure enough it does. I also enabled query logging so I could see what type of abuse the DNS servers were getting. I found a couple of servers that were querying more than 40,000 times a minute for a management platform that had been retired almost 5+ years ago.
options { directory "c:\program files\isc bind 9\bin"; // here are the servers we'll send all our queries to forwarders {10.1.1.1; 10.2.2.2;}; forward only; auth-nxdomain no; // need to include allow-query at a minimum allow-recursion { "any"; }; allow-query { "any"; }; allow-transfer { "none"; }; // lets leave IPv6 off for now less to worry about listen-on-v6 { "none"; }; // standard stuff version none; minimal-responses yes; // cache positive and negative results for only 5 minutes max-cache-ttl 300; max-ncache-ttl 300; // disable DDoS mechanisms in BIND clients-per-query 0; max-clients-per-query 0; }; logging{ channel example_log{ file "C:\program files\isc bind 9\log\named.log" versions 3 size 250k; severity info; print-severity yes; print-time yes; print-category yes; }; channel queries_file { file "c:\program files\isc bind 9\log\queries.log" versions 10 size 10m; severity dynamic; print-time yes; }; category default{ example_log; }; category queries { queries_file; }; }; //zone "localhost" in{ // type master; // file "pri.localhost"; // allow-update{none;}; //}; //zone "0.0.127.in-addr.arpa" in{ // type master; // file "localhost.rev"; // allow-update{none;}; //}; I setup my first nameserver running BIND 4.x back in 1995, more than 20 years ago while working at Manhattan College. While I'm pretty familiar with BIND a lot has changed since then and so I had to-do a fair bit of research to arrive at the configuration above.
Hopefully someone else will find it helpful.
Cheers!