绑定通配符子域上的DNS查找问题

绑定通配符子域上的DNS查找问题,dns,bind,Dns,Bind,有很多教程,但我很难绑定到提供本地网络DNS查找 目标: 可以从本地网络的任何位置发出请求。我还没有包括任何监听语句,所以这应该包括在内——我想! *。演示请求应转到192.168.0.64 任何其他内容都应该转发到谷歌的8.8.8.8和8.8.4.4 这是我的配置: # /etc/named.conf options { directory "/var/named"; # Hide version string for security version "not currently

有很多教程,但我很难绑定到提供本地网络DNS查找

目标:

可以从本地网络的任何位置发出请求。我还没有包括任何监听语句,所以这应该包括在内——我想! *。演示请求应转到192.168.0.64 任何其他内容都应该转发到谷歌的8.8.8.8和8.8.4.4 这是我的配置:

# /etc/named.conf
options {
  directory "/var/named";
  # Hide version string for security
  version "not currently available";

  # Forward all unknown DNS queries to the Google Public DNS. (Does it?)
  forwarders { 8.8.8.8; 8.8.4.4; };

  dnssec-validation auto;

  auth-nxdomain no;    # conform to RFC1035
  listen-on-v6 { any; };
};

zone "demo." IN {
  type master;
  file "zone.demo";
};
和区域文件:

; /var/named/zone.demo
$ORIGIN demo.
$TTL 1D
@ IN SOA demo. hostmaster (
                          201312041 ; serial
                          8H        ; refresh
                          4H        ; retry
                          4W        ; expire
                          1D )      ; minimum

*. IN  A  192.168.0.64
然后我运行名为checkconf no output和名为-f的blocks-all,看起来都很好

要检查服务器是否正在执行我期望的操作,我运行dig:

$ dig @127.0.0.1 A test.demo

; <<>> DiG 9.8.3-P1 <<>> @127.0.0.1 test.demo
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

你知道我做错了什么吗?

你首先需要的是NS记录:

@ IN NS ns.demo.
这需要一个关联的A记录,因为它本质上是一个CNAME,在本例中,它将位于您的区域中。因此,您需要:

演示。在一个

然后,由于通配符的末尾有一个点,因此您指定了一个DNS记录的“级别”,例如com、net或demo,但不包括区域的来源。您需要放弃圆点:

*在192.168.0.64中

或者:

*.演示。在192.168.0.64中

这是因为绑定区域文件中的最后一个点表示字段的结尾。如果不在字段的末尾添加点,则bind将添加原点。这不适用于IP地址

至于转发,这应该是可行的,但您可能希望在您的客户端上设置多个名称服务器,以防此服务器因任何原因关闭,等等。在这种情况下,您将不需要转发

如果要确保服务器只响应本地网络上的客户端,可以使用allow query语句将其限制在某些IP范围内。但是,如果您的服务器无法在internet上访问,您应该可以。需要检查的一件事是,服务器没有侦听环回接口,这意味着您只能从运行在其上的名为的计算机而不是网络上的其他计算机访问它

希望这有帮助。如果有什么不清楚的地方,请告诉我