前言
偶然看到有群友在使用AWS Route53服务配置了 White-label NS,但是由于AWS官方文档过于晦涩难懂,充满了三哥的味道,在实践后产生了这篇文章。
什么是 White-label Nameserver
一个通常会有两个或多个NS服务器,访问需要通过NS服务器将域名解析为对应的IP地址,但是细心的你可能会发现,一些域名的NS服务器是他们自己的子域名。
举个例子,我们可以 dig google.com NS
,能够看到以下结果
;; ANSWER SECTION:
google.com. 2086 IN NS ns4.google.com.
google.com. 2086 IN NS ns2.google.com.
google.com. 2086 IN NS ns3.google.com.
google.com. 2086 IN NS ns1.google.com.
google.com 的 NS 服务器是 ns*.google.com,这就是我们所说的White-label服务器
准备内容
一个AWS账号、一个未在Route53添加的域名(如果已添加,需要删掉)
配置
登入 AWS 控制台,并进入Cloudshell
在登入后,可以在页面左下角找到 Cloudshell 并进入,可以省去配置 AWS CLI 相关的操作

创建一个可复用的 Delegation 集合
$ aws route53 create-reusable-delegation-set --caller-reference $(date +%s%N)
{
"Location": "https://route53.amazonaws.com/2013-04-01/delegationset/N01767511WWQCGAUHPTL8",
"DelegationSet": {
"Id": "/delegationset/N01767511WWQCGAUHPTL8",
"CallerReference": "1739966925686476885",
"NameServers": [
"ns-1605.awsdns-08.co.uk",
"ns-556.awsdns-05.net",
"ns-1121.awsdns-12.org",
"ns-483.awsdns-60.com"
]
}
}
这样我们就可以拿到一个 ID 和下面的 NS 服务器列表,需要复制出来整个结果,后面还需要用到这些内容
如果你手快没复制到上面的内容,可以通过下面的命令再次查看
$ aws route53 list-reusable-delegation-sets
通过可复用的 Delegation 集合托管我们的域名
我们以 example.com 作为示例域名,需要在下面命令中将它替换成你自己的域名
$ aws route53 create-hosted-zone --caller-reference $(date +%s%N) --delegation-set-id /delegationset/N01767511WWQCGAUHPTL8 --name example.com
至此,Cloudshell的工作已经结束了,你可以关掉它了。
规划我们自己的 Nameserver 子域名
我们需要分配4个子域名依次对应上面的4个NS服务器
比如:
ns1.example.com -> ns-1605.awsdns-08.co.uk
ns2.example.com -> ns-556.awsdns-05.net
以此类推
修改域名的 NS 和 SOA 记录
进入域名托管区中,对NS和SOA记录进行修改
NS记录值填写为(替换根域名为你自己的)
ns1.example.com
ns2.example.com
ns3.example.com
ns4.example.com

SOA记录填写为(替换根域名为你自己的)
ns1.example.com. hostmaster.example.com. 1 7200 900 1209600 60

为了让生效速度更快,以上TTL值都填写成 60,后续可以根据更改回原始默认TTL
NS服务器 A 记录 TTL:172800
NS记录TTL:172800
SOA记录TTL:900
SOA Negative Caching TTL:86400
如果修改 SOA Negative Caching TTL ,则 SOA 记录内容应该变更成
ns1.example.com. hostmaster.example.com. 1 7200 900 1209600 86400
查询A和AAAA记录
接下来我们对上面四个AWS提供的NS服务器的A记录和AAAA记录进行查询,并保存下来
$ dig +noall +answer ns-1605.awsdns-08.co.uk AAAA
ns-1605.awsdns-08.co.uk. 3591 IN AAAA 2600:9000:5306:4500::1
$ dig +noall +answer ns-1605.awsdns-08.co.uk A
ns-1605.awsdns-08.co.uk. 3600 IN A 205.251.198.69
这样我们就可以确定了我们的1号NS服务器的A记录和AAAA记录应该是这两个IP地址
在添加NS服务器1-4的A和AAAA记录
将我们自己的NS服务器域名在 Route53 上解析到AWS提供的服务器IP上,TTL可填写至3600或更长时间

到这里还没结束,我们还需要在域名注册商处添加 Glue Record,才能顺利使用上子域名作为NS服务器
不同的注册商有不同的 Glue Record 添加方法,以实际为准,下面以 Porkbun 举例


修改域名的NS服务器为你自己的
接下来就可以在注册商处修改NS服务器为你自己的NS服务器了,等待1-2小时记录就可以生效了。
此时你已经拥有了一个酷炫的 White Label NS服务器
最后
别忘记把TTL改回默认!