我有一个主网络,其中有三台主服务器(分别称为 A、B 和 C)。它们都是路由器、我的 4 台(服务)NTP 服务器中的 3 台以及我的 5 台 DNS 服务器中的 2 台。DNS 服务器(bind9)都配置为sortlist
在每个子网上首先返回子网上的地址,然后返回主网络上的地址,然后返回其他地址;这样就可以正常工作了。
问题出现在外围网络主机上的 NTP 服务器中。出于某种原因,连接到 B 网络的服务器将尝试在其路由网络地址上与 C 通信,而不是在其主网络地址上(反之亦然)。更奇怪的是,它们不会对 A 执行相同的操作。它仅在 IPv6 上执行此操作,如果我添加-4
到server
行中,它会按预期工作。(它似乎更喜欢 IPv6 而不是 IPv4,我认为这是合理的。)
所以问题是,是否有一些魔法可以让 ntpd 遵守 IPv6 上的 DNS 服务器的顺序?
# ntpd -version
ntpd 4.2.8p15@1.3728-o Wed Sep 23 11:46:38 UTC 2020 (1)
2
最佳答案
1
这不是 NTP 的设计工作方式。如果您给它一个包含四个 NTP 服务器的列表,它就可以并且应该联系所有服务器,这实际上是它获得完全准确时间的唯一方法。(否则它只能获得一个对等方的时间视图,而这绝不是完整的画面。)
在 NTP 最佳实践 RFC 中了解有关此内容的更多信息:
您应该向您的 NTP 服务器提供一份完全可联系的对等服务器列表。
11
-
我给它 4
server
行。每个名称有该主机的 4 或 6 个 IP 地址。列表是有序的。我如何让它转到更近的地址?它不应该多次联系任何给定的主机。
– -
嗨@DavidG。,使用您的实际配置和 DNS 条目会容易得多,但本质上如果您希望它仅联系您首选地址上的主机,您应该给它仅包含这些地址的 DNS 名称。
–
-
例如,如果您给 ntpd 一行类似这样的内容
server pool.my.domain.name
,并且 DNS 查找pool.my.domain.name
包含地址192.168.0.1
、192.168.1.1
、192.168.2.1
和192.168.3.1
,它无法知道它们都是同一台主机,并且会联系每个地址。这就是它设计的工作方式,如果它们是路由器,那么它联系哪个实际上应该没有任何区别。
– -
我考虑过这两种方法。我不想在公共论坛上提供我的具体地址。我考虑过在 DNS 或 NTP 配置中仅列出首选地址,但我还想在所有主机上使用统一的配置。
–
-
如果您有 4 个 NTP 主机,每个主机都有 4 个地址,那么最好为每个主机创建一个 DNS 条目,其中包含该主机的所有地址,然后让 ntpd 使用指令确定哪个地址提供最佳响应
pool
。它将从联系所有地址开始,但最终将修剪多余的主机,直到达到最佳配置。
–
|
–
–
|