搭建权威DNS的逻辑思路

如果公司想要搭建自己的权威DNS集群用于管理公司所有域名的解析, 需要先注册一个一级域名, 比如说sre.im, 然后确定权威DNS的域名和对应的VIP的关系, 比如:

1
2
3
ctc1.dns.sre.im, 对应vip地址为123.2.2.2
cuc1.dns.sre.im, 对应vip地址为231.3.3.3
等等...

每个vip对应一组服务器, 通过ospf协议做负载均衡, 每台服务器的 DNS 配置完全一致.

服务器上的配置为:

1
2
3
4
5
zone sre.im
sre.im 600 IN NS ctc1.dns.sre.im
sre.im 600 IN NS cuc1.dns.sre.im
ctc1.dns.sre.im 600 IN A 123.2.2.2
cuc1.dns.sre.im 600 IN A 231.3.3.3

以上NS记录可以没有, 但必须有A记录. 一般都会在这里加入NS记录, 这样当用户查询的时候就可以直接缓存在递归DNS本地, 递归DNS不用每次都去上一级权威DNS获取列表, 如果有权威DNS横向扩容的需求, 可以直接在这里加NSA记录解析, 不用上报给上一级权威DNS添加新的胶水记录就可以.

然后向COM权威DNS申请添加胶水记录:

1
2
3
4
sre.im 172800 IN NS ctc1.dns.sre.im
sre.im 172800 IN NS cuc1.dns.sre.im
ctc1.dns.sre.im 172800 IN A 123.2.2.2
cuc1.dns.sre.im 172800 IN A 231.3.3.3

这样我们自建的权威DNS就可以对我们购买的所有域名做解析管理. 比如说我们注册了一个域名360.cn, 想让我们自建权威DNS管理它的解析, 自建权威DNS配置为:

1
2
3
zone 360.cn
360.cn IN NS ctc1.dns.sre.im
360.cn IN NS cuc1.dns.sre.im

这里可以不加NS记录, 加的好处是可以在递归DNS本地缓存下来, 递归DNS不用先去CN权威DNS上获取这个列表了, 减少了解析流程, 从而加速解析.

然后向CN权威DNS申请变更360.cnNS记录, CN权威DNS配置:

1
2
360.cn IN NS ctc1.dns.sre.im
360.cn IN NS cuc1.dns.sre.im

也就是每管理一个域名, 都要配置一个相应的zone, 同时配置该域名的NS记录. 有一个特殊情况, 如果该域名的NS记录是该域名的子域名, 则需要同时配置NS记录A记录, 再申请把这对胶水记录添加到该域名的上级权威DNS.

如果要解析权威DNS域名本身的A记录, 比如dig ctc1.dns.sre.im, 则由COM权威DNS返回sre.im的所有 NS 服务器的 IP 地址, 然后递归DNS根据相关算法选择一个最快的 IP 去查询ctc1.dns.sre.im, 最后由我们自建权威DNS返回A记录结果.