我有一个 PowerDNS 服务器,我正在尝试在其中创建 NS 记录。这就是我的域example.com
:
cluster NS node1.cluster.example.com
cluster NS node2.cluster.example.com
node1.cluster A 1.1.1.1
node2.cluster A 1.1.1.2
1.1.1.1 和 1.1.1.2 是外部名称服务器。
我想要的是:
- 挖 cluster.example.com
- 将我的 DNS 请求转移到节点 1 或节点 2 之一
- DNS 请求已在那里得到解决
我拥有的:
挖 cluster.example.com
;; QUESTION SECTION: ;cluster.example.com. IN A ;; AUTHORITY SECTION: cluster.example.com. 3600 IN NS node2.cluster.example.com. cluster.example.com. 3600 IN NS node1.cluster.example.com. ;; ADDITIONAL SECTION: node2.cluster.example.com. 3600 IN A 1.1.1.2 node1.cluster.example.com. 3600 IN A 1.1.1.1
我没有从挖掘中得到答案。
虽然dig cluster.example.com @1.1.1.2
效果很好。
我在 DNS 方面没有太多能力,所以非常感谢您的帮助。
答案1
如果你发明语法,那是行不通的。
NS前面的是域名;如果你不放在那里,它默认为当前的,例如example.com.
。
根据 DNS 默认行为,它将当前域名添加到对象(例如集群)中,并且它变成cluster.example.com.
未定义的。
如果你想定义一个基于 DNS 的集群,那就是:
NS cluster.example.com.
cluster A 1.1.1.1
cluster A 1.1.1.2
或进一步说明我的评论:
example.com. NS cluster.example.com.
cluster A 1.1.1.1
cluster A 1.1.1.2
请注意,我特意为两台主机进行了定义cluster
,并且没有使用节点 1 和节点 2,因为 NS 记录不应指向 CNAME。
让 NS 记录指向 CNAME 是不好的,并且可能与当前的 BIND 服务器发生严重冲突。事实上,当前的 BIND 实现将忽略此类记录,可能导致蹩脚的委派。 BIND 中进行了一定量的安全检查,以防止欺骗 DNS NS 记录。此外,据报道,较旧的 BIND 服务器将陷入无限查询循环,试图找出别名服务器的地址,从而导致发送连续的 DNS 请求流。
或者,如果您仍然想要拥有node1
和node2
名称:
example.com. NS cluster.example.com.
cluster A 1.1.1.1
cluster A 1.1.1.2
node1 A 1.1.1.1
node2 A 1.1.1.2
附带说明一下:使用基于 DNS 的集群方法会产生影响,其中一个节点发生故障时,通常无法获得预期的结果,因为客户端会选择他们想要通信的节点。
还有更先进(也更可靠)的创建 DNS 集群的方法,即DNS任播,这超出了本答案的范围。