domain-name-system – 强制转发器DNS请求到TCP模式

我在多宿主服务器上的SLES10(当前绑定9.6)上设置了DNS服务器.可以从所有内部网络查询此服务器,并为所有内部网络提供答案.我们有两个独立的DNS“主”区域.这些区域中的每一个都由许多权威的 Windows-DNS服务器提供服务.

现在我的linux-server是其中一个区域(私有内部区域)的辅助DNS服务器,并充当另一个区域(公共内部区域)的转发器.

直到最近,这种设置工作没有问题.现在我得到 – 在查询公共内部区域时
(例如,通过linux客户端上的host命令)错误消息

;; Truncated,retrying in TCP mode

wireshark-dump揭示了原因:第一个查询在UDP模式下出现,答案不适合UDP(由于权威NS的冗长列表),然后在TCP模式下重试,提供正确的答案.

现在的问题是:
我是否可以配置我的绑定以在TCP模式下查询转发器而不先尝试UDP?

更新:尝试使用ASCII-art …

+--------------+   +--------------+   +-----------------+
| W2K8R2 DNS   |   | SLES 10 DNS  |   | W2K8R2 DNS      |
| Zone private +---+ All internal +---+ Zone public     |
| internal 2x  |   |   Zones      |   | internal 30+ x  |
+--------------+   +-+----------+-+   +-----------------+
                     |          |
                  +--+---+   +--+---+
                  |Client|   |Client|
                  +------+   +------+

解决方法

首先,我不会称之为错误,只是一条信息性消息.

其次,DNS服务器将始终应答UDP查询(至少BIND,我找不到禁用UDP的选项),客户端将始终(?)尝试首先发送UDP查询(例如,resolv.conf中没有选项可以更改也不在JVM中) – 如果它们适合UDP数据包(通常请求)

如果您有特定用例,则可以指定使用TCP,例如在shell脚本中使用’dig tcp’或’host -T’进行解析,你可以使用系统调用’sethostent / gethostbyname / endhostent'(参见手册页)在其他情况下强制TCP.

如果你真的想尝试阻止UDP,我能看到的唯一选择是使用iptable规则,但我不确定该设置是否有效.我希望DNS解析完全失败.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些