Ich hatte gerade die Anforderung, dass ein Server an bestimmte Clients die Existenz von einigen Domains verschweigen muss, den Rest aber als forwarder normal aufzulösen hat.
Nach ein bisschen gefrickel habe ich rausbekommen, dass es garnicht so schwer ist:
Eigentlich braucht man nur einen "Ich weiß von Nix"-View, und einen zweiten, der passend die Anfragen aufteilt:
view "nix" {
match-clients {127.0.0.1/8};
};
view "zensiert {
recursion yes;
zone "mustnotbeleaked.example.com" {
type forward;
forward only; // verhindert, dass er bei der nicht erfolgten antwort den forwarder unten befragt
forwarders {
127.0.0.1;
};
};
forwarders {
192.168.1.1; // der eigentliche nameserver
};
};
Und wer sich jetzt wundert, weshalb man das nicht einfach per ACL verbietet - die Antwort sieht anders aus, jenachdem, ob ein SERVFAIL (u.a. per ACL verboten) oder ein NXDOMAIN (die Domain gibt es nicht) geschickt wird, und somit ist der ACL-Fall recht einfach zu detektieren.