绑定显然收到来自查询的回应,但是对他们什么都不做

基本上,

我试图build立一个指向另外两个内部DNS服务器的DNS服务器。

内部DNS服务器:192.168.0.4 // 192.168.0.5我的邮箱:192.168.97.6 .. name是kerrigan.zipp

我已经绑定configuration,客户端可以打内部地址,但似乎无法抓住任何外部。

[root@zeratul ~]# ping kerrigan.zipp -- Ping succeeds -- [root@zeratul ~]# ping google.com ping: unknown host google.com 

在Kerrigan.zipp上做一个tcpdump,我可以看到google.com的请求正在对dns1(192.168.0.4)进行,并且回复正在回来。

 15:30:37.775949 IP kerrigan.zipp.50825 > dns1.internal.box.domain: 13756+ A? google.com. (28) 15:30:37.776383 IP dns1.internal.box.domain > kerrigan.zipp.50825: 13756 4/13/8 A 72.14.204.99, A 72.14.204.103, A 72.14.204.104, A 72.14.204.147 (491) 

好像kerrigan.zipp正在收到答复,然后不做任何事情。 如果我把从dns1返回的IP地址,我可以ping没有问题。

 [root@zeratul ~]# ping 72.14.204.99 -- Ping succeeds -- 

有任何想法吗? 哦,我关掉了防火墙。 端口53 tcp / udp已打开。

挖的命令的结果..这些表明,我可以从我的转发DNS,但不是我的新的本地DNS:

 [root@kerrigan named]# dig @192.168.0.4 google.com ; <<>> DiG 9.7.3-RedHat-9.7.3-1.fc14 <<>> @192.168.0.4 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33681 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 13, ADDITIONAL: 8 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 256 IN A 72.14.204.104 google.com. 256 IN A 72.14.204.147 google.com. 256 IN A 72.14.204.99 google.com. 256 IN A 72.14.204.103 ;; Query time: 1 msec ;; SERVER: 192.168.0.4#53(192.168.0.4) ;; WHEN: Wed Mar 2 16:33:26 2011 ;; MSG SIZE rcvd: 491 [root@kerrigan named]# dig @127.0.0.1 google.com ; <<>> DiG 9.7.3-RedHat-9.7.3-1.fc14 <<>> @127.0.0.1 google.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 61769 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN A ;; Query time: 1 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Wed Mar 2 16:33:36 2011 ;; MSG SIZE rcvd: 28 

尝试使用主机命令来查看服务器正在返回。 命令host google.com dns1.internal.box.domain会告诉你什么dns1.internal.box.domain认为google.com的地址是。 (谷歌应该有多个地址,大多数网站有一个。)尝试与您的每个DNS服务器。

也请尝试getent hosts google.com 。 这将为google.com提供parsing器的地址版本。 所有四个命令你应该得到大致相同的结果。

编辑:要运行主机命令,您可能需要安装bind9-host包来获取host命令。 但是,它通常由其他软件包安装。

编辑2:如果其中一个DNS服务器没有向您返回结果,请检查其安全设置。 您可能还需要暂时启用DNS服务器上的日志logging。 以下是我在绑定服务器上使用的日志logging规范块。

 伐木{
        频道query.log {
                文件“/var/log/query.log”;

                 //将严重性设置为dynamic以查看所有debugging消息。
                严重性debugging3;
         };

         //select性启用日志logging
        类别默认{query.log;  };
        类别一般{query.log;  };
        类别客户端{query.log;  };
        类别不匹配{query.log;  };
        类别networking{query.log;  };
        类别查询{query.log;  };
        类别安全{query.log;  };
        类别派遣{query.log;  };
         category delegation-only {query.log;  };
 }; 

那么,我明白了。

/ var / log / messages显示了这一点:

 Mar 2 21:35:32 kerrigan named[8138]: error (broken trust chain) resolving 'google.com/A/IN': 192.168.0.4#53 

所以我想到了dnssec。 以前我曾经评论过他们; 我在/etc/named.conf中明确地将它们设置为“no”

 dnssec-enable no; dnssec-validation no; 

我的客户可以打中间pipe道,并ping我的绑定服务器的主区域。 >:3

破坏的信任链最常见的原因是机器上的时间显着错误。 BIND的作者select默认开启DNSSEC,所以最好能解决时间问题,而不是closuresDNSSEC。 所以:

  • 通过使用date -sntpdate <ip-address>手动设置服务器上的date -s临时解决问题
  • 如果您没有安装NTP,configuration并设置为在启动时启动,请立即执行此操作
  • 如果你这样做,你的时钟仍然是错误的,找出原因。

如果你的NTPconfiguration了一个可以通过DNS名称访问的时间源,而你的NTP使用失败的DNS服务器作为它的DNS,那么你最终可能会因为时间的错误而导致DNS失败,而NTP是未能纠正时间,因为DNS失败。 例如,当我重新启动我的家Raspberry Pi路由器,我最终在/var/log/daemon.log中:

 Oct 20 05:23:00 pirouter ntpd_intres[579]: host name not found: 2.debian.pool.ntp.org 

你可以:

  • 添加一个RTC模块,如果你的Pi没有(它们不是默认的),允许它保持时间closures(最便宜的可靠的方式)
  • 添加一个GPS时间源到你的服务器(非常令人满意)
  • select一个上游时间源,并通过IP引用(只要该时间源保持IP,它就会工作)