如果我只允许来自 Internet 的 udp/53 流量,我的 DNS 辅助服务器是否可以正常工作?

如果我只允许来自 Internet 的 udp/53 流量,我的 DNS 辅助服务器是否可以正常工作?

我在 BIND 上运行了“隐藏主要主机”DNS 设置,因此只有辅助主机对外界可见。防火墙当前允许从 Internet 到辅助主机上的 udp/53 和 tcp/53 的流量,一切似乎都运行正常。

然而,每天我都会看到一大堆来自与我无关的外部地址的“拒绝非主服务器通知”日志条目。我明白这些日志条目在告诉我什么,但我不想在我的日志中看到所有这些“噪音”。

由于只有辅助服务器面向互联网,我可以安全地拒绝来自互联网的 tcp/53 流量以防止出现“拒绝非主服务器的通知”条目吗?或者是否有充分的理由允许 tcp/53 流量流向辅助服务器?主服务器位于同一防火墙后面,不会受到此防火墙更改的影响。

答案1

如果答案超过 512 字节,也会使用 TCP,而不仅仅是区域传输。
我不会在防火墙上阻止它。

答案2

标准机制是,如果响应大于 512 字节,DNS 服务器将截断响应。DNS 客户端应使用 TCP 重新发送查询以获取完整响应。IPv6 AAAA 和 DNSSEC 查询响应很容易超出 512 字节的限制。具有长主机名的 CNAME 查询也可能超出此限制。

如果您确定您的 CNAME 不太长并且不打算使用 DNSSEC 和 IPv6 解析,则可以在防火墙上阻止 tcp/53 端口。

您还应该检查为什么会收到来自外部的通知。这意味着您的 IP 列在某个域的 NS 记录中。如果可能的话,嗅探一下这个通知 - 它可能表明您的 DNS 配置与您想象的不同。

答案3

我假设您在这种情况下应用的(未说明的)逻辑是假设 DNS 仅使用 TCP 进行区域传输,并且由于您没有对 Internet 进行区域传输,因此您认为切断从 Internet 到您的辅助设备的 TCP 端口 53 流量应该是安全的。

要得出答案,首先需要了解 DNS 为什么同时使用 UDP 和 TCP,以及何时使用其中一种。

原始 DNS 规范规定,UDP DNS 数据包的最大大小为 512 字节。如果答案超过此限制,服务器将要求客户端使用 TCP 重新发送请求,然后服务器通过 TCP 提供答案。请注意,这不仅适用于区域传输,也适用于任何较大的答案。典型的 DNS 答案数据包通常足够小,可以满足此限制,但最重要的是,即使您没有向 Internet 进行区域传输,您也必须允许 TCP 访问您的 DNS 服务器。

答案4

请参阅 RFC 5966。严格来说,该 RFC 适用于 DNS 软件实现者,但它解释了为什么运算符DNS 服务器也应该允许 TCP。

相关内容