测试从主区域传输从属区域导致连接被拒绝

测试从主区域传输从属区域导致连接被拒绝

我正在使用 bind9 和 webmin 尝试为我们的主名称服务器设置 DNS 辅助服务器。我认为我的情况应该非常简单,但我无法让主服务器将区域传输到从服务器。

我已将主服务器配置为在 Webmin 服务器索引中具有从服务器,然后将其配置为集群从服务器下的从服务器,然后allow_transfer在主服务器上配置从服务器的 IP。iptables -nL显示主服务器和从服务器上的端口 53 和 953 均打开。netstat -lnpt显示named正在监听 53(在主服务器和从服务器上),但是当我运行测试将记录传输到从服务器时,我得到:

Testing transfer of slave zone from 10.191.0.2 .. .. from 10.191.0.2 : 
Failed : ;; Connection to 10.191.0.2#53(10.191.0.2) for 
test.example.com failed: connection refused.

主服务器上区域的配置 .2

zone "test.example.com" {
  type master;
  file "/var/lib/bind/test.example.com.hosts";
  notify yes;
  allow-transfer {
    10.191.0.3;
    };
};

从属设备上的区域配置 .3

zone "test.example.com" {
  type slave;
  masters {
    10.191.0.2;
    };
  file "/var/lib/bind/test.example.com.hosts";
  allow-transfer {
    10.191.0.2;
    };
  allow-update {
    10.191.0.2;
    };
};

我知道我遗漏了一些东西,但我似乎无法弄清楚。

谢谢你的帮助

答案1

让我总结一下,并在答案中添加这种行为的原因,以便将来可能遇到此问题的人...

按照定义,DNS 系统在端口 53 上使用默认的 UDP 协议。但该服务旨在防止答案碎片化,因此一旦答案变大,它就会“回落”到 TCP 协议。

使用 UDP(原则上),您无法保证答案会完全到达,并且一旦 TCP 发送确认,某些部分在传递过程中不会丢失。因此,一旦答案足够小,可以容纳一个部分,就会使用 UDP。一旦答案更大,系统就会将其作为 TCP 发送出去,而不关心碎片和传递顺序。更大答案的示例可能是带有粘合记录的“常规”答案(在哪里询问下一个查询迭代步骤 - 鸡和蛋 ;-) 或 DNSSEC 内容)或刚刚提到的区域传输。

正如 rfc5936 - DNS 区域传输协议 (AXFR) 所述:

因为准确性至关重要,AXFR 请求必须使用 TCP 或其他可靠协议

...

随着 EDNS0 和需要许多小区域的应用程序(例如网络托管和一些 ENUM 场景)的加入,UDP 上的 AXFR 会话现在似乎是理想的选择。但是,AXFR 会话的某些方面仍然难以转换为 UDP。

因此本文档没有在这方面更新 RFC 1035: 未定义通过 UDP 传输的 AXFR 会话

因此,根据引用,您会看到区域传输的 TCP 协议是强制性的。

一般情况下(不仅仅是因为区域传输),您应该在 DNS 服务器上同时允许 TCP/53 和 UDP/53,以使其正常工作。仅允许 UDP/53 只能实现部分可操作性。

-- 编辑(2019 年 6 月 20 日星期四 10:20 UTC)--

还添加了问题的实际答案(AXFR 使用 TCP) - 感谢 Håkan Lindqvist

相关内容