我正在为学校在装有 Ubuntu 18.06 的虚拟机中设置 DNS 服务器,在转发我的服务器无权处理的请求时,我遇到了奇怪的行为。我的服务器询问 中指定的 DNS 服务器named.conf.options
。forwarders
即使它收到了解析查询的正确响应,我的服务器也会向我的客户端回复服务器故障。
我的服务器能够解析有关其具有权威性的区域的查询,但不能解析外部域的查询。
内容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 中,它只是另一个转发区域语句。