转发后 DNS bind9 服务器故障

转发后 DNS bind9 服务器故障

我正在为学校在装有 Ubuntu 18.06 的虚拟机中设置 DNS 服务器,在转发我的服务器无权处理的请求时,我遇到了奇怪的行为。我的服务器询问 中指定的 DNS 服务器named.conf.optionsforwarders即使它收到了解析查询的正确响应,我的服务器也会向我的客户端回复服务器故障。

我的服务器能够解析有关其具有权威性的区域的查询,但不能解析外部域的查询。

内容named.conf.options

options {                                                                                                                       
    directory "/var/cache/bind";                                                                                                                                                                                                                    
    forwarders {                                                                                                                    
        8.8.8.8;                                                                                                        
    };
    dnssec-validation auto;                                                                                                                                                                                                                         
    auth-nxdomain no;    # conform to RFC1035                                                                               
    listen-on-v6 { any; };
};

我尝试过添加

allow-recursion { any; };
allow-query { any; };
allow-query-cache { any; };

但它并没有改变行为。

我也尝试过:

  • 重新安装 bind9
  • 重新安装整个操作系统
  • 切换到 Ubuntu 16.04
  • 删除区域配置
  • 上述内容的不同组合

我也在某处读到过这可能是由于我的路由器中的安全配置造成的,但我不知道如何或是否应该解决它。

有人能帮我解决这个问题吗?

编辑日志文件内容:

29-May-2021 15:47:35.187 resolver: notice: DNS format error from 192.112.36.4#53 resolving ./NS: non-improving referral

这条线路多次出现,IP 地址也不同。我猜它们是根服务器。

答案1

该错误通常是由转发区域其次是代表团

您可以使用这个简单的设置重现错误

  • F-Server 是一个 DNS 服务器,它将 domain.com 转发到 A-Server
  • A-服务器是权威性为了域名.com
  • A-Server 有一个代表团为了子域名.com指向B-Server
  • B-服务器是权威性为了子域名.com

发生的事情是

  • 客户端向 F-Server 查询abcd.sub.域名.com
  • F-服务器将查询转发至服务器
  • 服务器响应 NS 记录,引用子域名.com代表团
  • F-服务器收到 NS 记录,但由于推荐无改善而未遵循它们

经验法则是代表团设置或已转发设置。不能同时进行。尤其是不能先转发,然后委派。

在这种情况下,最快的解决方法是为子区域创建另一个转发区域。在 Windows 术语中,这是另一个条件转发器。在 Bind 中,它只是另一个转发区域语句。

相关内容