Ubuntu 20.04 服务器是互联网网关,同时也是 DNS 转发器。外部查找被转发到互联网,本地请求被定向到作为内部 DNS 服务器的 Windows 域控制器。网关最近更新到 22.04,这破坏了内部主机的解析。转发配置没有任何变化,那么为什么它以前可以工作,但现在却失败了?
答案1
回答我自己的问题,希望能节省其他人解决最近情况所需的时间和精力
设备升级到 22.04 后,内部 DNS 查询返回收到 FORMERR 解析。这很令人困惑,因为使用 Windows 服务器本地执行 nslookup 有效,但指向 Windows DNS 的 dig 命令失败。事实证明,当设置了启用 EDNS cookie 选项的请求时,这是来自 Windows DNS 的标准消息。默认情况下,最新版本的 bind 启用了 EDNS cookie。将以下内容添加到 named.conf 以禁用 cookie 后,服务重新启动,一切都按预期运行。
In BIND 9.10.x the option to do this is "request-sit no; "
From BIND 9.11.0 onwards, it is "send-cookie no; "send-cookie no; "
从 BIND 9.11.0 开始,所有版本都启用了 DNS COOKIES。请注意,cookie 策略在最初的实施中非常宽松,以降低影响,而在 BIND 9.11.26、9.16.10、9.17.8 及更高版本中则“收紧”,如下所述。要在 BIND 9.10 分支中使用它,请使用“configure --enable-sit”构建 BIND。对于从 BIND 9.10.3 及更高版本开始的 Windows 版本,它默认启用。