I'm trying to setup BIND so that it catches any and all requests made to it, and points them to a specific set of NS servers, and a specific A record.
I have around 500 domains, and I'm adding new ones at the rate of 10-15 a day, so I don't want to explicitely add a zone for every domain.
My current setup is: in my named.conf, I have a view (named external) with the following zone in it:
zone "." {
type master;
file "ext.zone";
};
This matches all requests.
ext.zone is:
$TTL 3600
@ IN SOA . root.nsdomain.com. (
1 ; Serial
3600 ; Refresh
300 ; Retry
3600 ; Expire
300 ) ; Negative Cache TTL
IN NS ns1.example.com
IN NS ns2.example.com
ns1 IN A 192.0.2.4
ns2 IN A 192.0.2.5
*. IN A 192.0.2.6
so, the goal is:
for all NS requests, return ns1.example.com and ns2.example.com
for all A requests, except where it is ns1.example.com or ns2.example.com, return 192.0.2.6. For ns1.example.com return 192.0.2.4, for ns2.example.com return 192.0.2.5.
This almost works, the only problem is that when I do a dig, I get:
dig @localhost somedomain.example ; > DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3 > @localhost somedomain.example ; (1 server found) ;; global options: printcmd ;; Got answer: ;; opcode: QUERY, status: NOERROR, id: 37733 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;somedomain.example. IN A ;; ANSWER SECTION: somedomain.example. 3600 IN A 192.0.2.6 // as expected ;; AUTHORITY SECTION: . 3600 IN NS ns1.example.com. // expected, I don't know if the "." at the start is bad, though. . 3600 IN NS ns2.example.com. // see above. ;; ADDITIONAL SECTION: ns1.example.com. 3600 IN A 192.0.2.6 // not expected, this should be 192.0.2.4 ns2.example.com. 3600 IN A 192.0.2.6 // not expected, this should be 192.0.2.5
How do I fix this? Am I doing something horrible? Is there a better way to do this?