BIND: how to delegate subzone to other DNS server?

Solution 1:

The problem is in your named.conf. I'm guessing you've got forwarders defined in your named.conf somewhere. For any zone for which your server is authoritative, you need to turn the forwarding off. Using the sample from above, you should change it to read like this:

zone "lan" {
    type master;
    file "zone.lan";
    forwarders { };
};

It should work once you do this.

Solution 2:

There is a problem in the zone file.

$ORIGIN lan.
$TTL 1H ; 1 hour
@                       IN SOA  dns.example.com. hostmaster.example.com. (
                                201008137  ; serial
                                28800      ; refresh (8 hours)
                                14400      ; retry (4 hours)
                                2419200    ; expire (4 weeks)
                                86400      ; minimum (1 day)
                                )
                        IN NS   dns.example.com.

$ORIGIN mydomain.lan.
@                       IN NS   dc1.mydomain.lan.
dc1                     IN A    10.10.0.200 ; 'glue' record

The @ refers the zone name as defined in the named.conf

zone "lan" {
        type master;
        file "zone.lan";
};

which is just 'lan'. The record you created is

lan. IN NS dc1.nydomain.lan.

I tend not to use BIND shortcuts for important records because it's easy forget or misunderstand the behavior, leading to unexpected results.

(I realize it's probably too late to help this person, but if someone else looks at this, try removing the BIND shortcuts to see if it fixes your problems.)