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

我在BIND上运行一个“隐藏的主要主”DNS设置,因此只有辅助对外界可见。 防火墙目前允许来自互联网的stream量同时在udp / 53和tcp / 53上,一切似乎都正常。

但是,每天我都会看到来自外部地址的“拒绝通知来自非主站”的日志条目,这些日志条目与我无关。 我明白日志条目在那里告诉我什么,但我宁愿没有我的日志中的所有这些“噪音”。

因为只有第二方面向互联网,我能否安全地拒绝来自互联网的tcp / 53stream量,以防止“拒绝非主方通知”条目,或者是否有充分的理由让tcp / 53stream量进入辅stream? 主站在同一个防火墙后面,不会受到这个防火墙更改的影响。

如果答案超过了512字节,TCP也被使用,不仅用于区域传输。
我不会阻止你的防火墙。

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

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

你还应该检查你为什么从外面得到通知。 这意味着你的IP被列在某个域的NSlogging中。 如果可能的话,这个通知会通知你 – 这可能表明你的dnsconfiguration与你的想法有所不同。

我假设你在这个实例中应用的(未说明的)逻辑假设DNS只使用TCP进行区域传输,而且由于你没有向区域传输到Internet,所以你认为切断它应该是安全的TCP端口53的stream量从互联网到您的辅助。

为了制定答案,首先需要了解DNS为什么同时使用UDP和TCP,以及何时使用UDP和TCP。

原始DNS规范指出,UDP DNS数据包的最大大小是512字节。 如果答案会超过这个,服务器会要求客户端使用TCP重新发送请求,服务器通过TCP提供答案。 请注意,这不仅仅是区域转移,而是任何大的回答。 一个典型的DNS应答数据包通常会足够小以适应限制,但底线是,即使您不在区域间传输到Internet,您也必须允许TCP到您的DNS服务器。

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