前言

偶然看到有群友在使用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改回默认!