带BIND的通配符DNS

我试图设置BIND,以便捕获任何和所有对它的请求,并将它们指向一组特定的NS服务器和一个特定的Alogging。

我有大约500个域名,而且我每天以10-15的速度添加新域名,所以我不想为每个域名明确添加一个域名。

我目前的设置是:在我的named.conf中,我有一个视图(命名外部)在其中的以下区域:

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

这匹配所有请求。

ext.zone是:

 $ TTL 3600
 @在SOA中。  root.nsdomain.com。  (
                               1; 串行
                          3600; 刷新
                           300; 重试
                          3600; 到期
                          300); 负cachingTTL


        在NS ns1.nsdomain.com
        在NS ns2.nsdomain.com

 ns1 IN A 1.2.3.4
 ns2 IN A 1.2.3.5

 *。 在A 1.2.3.6

所以,目标是:对于所有NS请求,返回所有A请求的ns1.nsdomain.com和ns2.nsdomain.com,除非ns1.nsdomain.com或ns2.nsdomain.com返回1.2.3.6。 对于ns1.nsdomain.com返回1.2.3.4,对于ns2.nsdomain.com返回1.2.3.5。

这几乎奏效,唯一的问题是,当我做一个挖掘,我得到:

挖@localhost somedomain.com

 ;  > DiG 9.3.6-P1-RedHat-9.3.6-4.P1.el5_5.3> @localhost somedomain.com
 ;  (find1个服务器)
 ;; 全局选项:printcmd
 ;; 有答案:
 ;; 操作码:QUERY,状态:NOERROR,ID:37733
 ;; 标志:qr aa rd;  QUERY:1,答案:1,权限:2,附加:2

 ;; 问题部分:
 ; somedomain.com。 在一个

 ;; 答案部分:
 somedomain.com。  3600在A 1.2.3.6 //如预期

 ;; 授权部分:
 。  3600在NS ns1.nsdomain.com。  //预计,我不知道“。” 但是,一开始是不好的。
 。  3600在NS ns2.nsdomain.com。  // 往上看。

 ;; 附加部分:
 ns1.nsdomain.com。  3600 IN A 1.2.3.6 //不是预期的,应该是1.2.3.4
 ns2.nsdomain.com。  3600 IN A 1.2.3.6 //不是预期的,应该是1.2.3.5

我该如何解决? 我在做什么可怕的事情? 有没有更好的方法来做到这一点?

谢谢!

您的区域的起源是“。” 根据您的configuration。 您正在创build“ns1”的logging。 和“ns2”。 而不是“ns1.nsdomain.com”。 和“ns2.nsdomain.com”。 由于“ns1.nsdomain.com”和“ns2.nsdomain.com”没有定义,所以它们被通配符匹配。

编辑:这是你的configuration和区域的编辑:

 zone "nsdomain.com." { type master; file "ext.zone"; }; 

ext.zone:

 $TTL 3600 @ IN SOA ns1 root ( 1 ; Serial 3600 ; Refresh 300 ; Retry 3600 ; Expire 300 ) ; Negative Cache TTL IN NS ns1 IN NS ns2 IN A 1.2.3.6 ns1 IN A 1.2.3.4 ns2 IN A 1.2.3.5 * IN A 1.2.3.6 

区域中的所有内容都与命名configuration中的区域名称相关,因此添加第二个区域只是指向相同的文件:

 zone "newnsdomain.com." { type master; file "ext.zone"; }; 

根据您的configurationns1.somedomain.com是1.2.3.4和ns2.somedomain.com是1.2.3.5。 您必须在nsdomain.com区域中configurationNS服务器名称parsing才能获取正确的IP。

我希望我能说清楚。 回到我身边,如果你需要更多的信息。

DNS通配符大都是邪恶的,所以要避免使用'em。

所以我不想为每个域明确添加一个区域。

从shell脚本到基于SQL的DNS服务器有很多的方法可以去。