分类写成教程了,其实就是闲谈,平时我们如果注意观察的话就会发现挺多大厂域名的 DNS 都比较有个性,比如 qq.com 这个域名的 DNS 服务器为NS1.QQ.COM——NS4.QQ.COM,而我们自己的 DNS 服务器基本上就是千篇一律的f1g1ns1.dnspod.net/xxx.dnspod.net/dns(1-32).hichina.com/ns(1-8).alidns.com等等,那如何用自己的域名做域名 DNS 服务器地址让我们的域名服务器看起来更个性化一些呢?答案就是贴牌(当然有能力你也可以自建)。
所谓贴牌 DNS 就是使用解析厂商提供的解析服务,但是 DNS 服务器的域名,替换成你自己的,这个东西叫法比较多,包括像:贴牌 DNS/Vanity Nameservers/DNS Branding/Custom Nameservers/white-label name servers 等等,我比较喜欢 Vanity Nameservers 这个名称,直译过来就是“虚荣的域名服务器”,满足自己的虚荣心哈哈哈(开个玩笑),这东西对一般人来说其实没啥用,不过如果你是域名代理商、云厂商这种不想自建 DNS 服务又想给用户提供解析搞个还是可以的,当然如果你有能力自建 DNS 服务的话,那就更好了。

前提条件

  • 域名:这个域名什么后缀都可以,但注册商必须支持添加 DNS host(Glue record),国内我尝试过的有腾讯云和阿里,其他厂商不太清楚(厂商基本上都有这个能力,但是能不能自助注册就是另一个问题了),国外的话大多数都支持。
  • 解析服务商:不需要看厂商本身是否支持贴牌 DNS,但解析厂商需要满足以下条件:第一点,支持设置 SOA 和 NS 记录(首先可以排除 DNSPod、Azure dns 和阿里云,甚至国内大部分的域名解析服务商了),第二点,不指向这个厂商的 DNS 服务器厂商不会把你解析停了的。满足上面那两个条件的国内好像太少了(之前有华为云),国外的话还是挺多的,比如CloudNS、Route53、NS1、GCP DNS等等,当然除了这些还有很多其他的厂商也支持,这里就不过多赘述了。

操作步骤

本来想以华为云为例写个详细教程来着,写教程的时候发现华为云不支持设置 SOA 了,既然这样就只写流程吧。

找解析服务商

按照上面的条件找一家解析服务商:

  1. 支持设置 SOA 和 NS 记录
    满足这两个条件的国内厂商基本没有了,像阿里云、腾讯云 DNSPod、华为云 都仅支持设置 NS 记录,不支持设置 SOA(不支持设置SOA好像也没啥大问题),其中腾讯云设置 NS 记录还要通过 API,不能直接操作,建议大家去国外找找,大多数都支持,我个人用的是cloudNS。
  2. 不指向这个厂商的 DNS 服务器厂商不会把你解析停了的
    比如腾讯云 DNSPod 免费版,长时间不指向它给的 DNS 服务器就会暂停解析,我们打造自己品牌的名称服务器肯定不会指向他们的,那这种就不行了。

在解析服务商添加域名

把域名添加到你选择的解析服务商的平台,并记录解析服务商给你分配的 DNS 服务器地址,比如谷歌提供给笔者的是ns-cloud-c1.googledomains.com,ns-cloud-c2.googledomains.com,ns-cloud-c3.googledomains.com,ns-cloud-c4.googledomains.com。

获取服务商提供的 DNS 服务器对应的 IP 地址

这里我们需要获取服务商提供的 DNS 服务器对应的 IP 地址,刚刚已经让大家记录了原来的 NS 记录,现在我们需要获取服务商提供的 DNS 服务器对应的 IP 地址,比如上面 Google Cloud DNS 提供给笔者的是ns-cloud-c1.googledomains.com,ns-cloud-c2.googledomains.com,ns-cloud-c3.googledomains.com,ns-cloud-c4.googledomains.com,那么我们需要获取这四个 DNS 服务器对应的 IP 地址,这里我们可以使用 nslookup 命令来获取,举个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
rttw@Kincaid:~$ nslookup ns-cloud-c1.googledomains.com
Server: 192.168.160.1
Address: 192.168.160.1#53

Non-authoritative answer:
Name: ns-cloud-c1.googledomains.com
Address: 216.239.32.108
Name: ns-cloud-c1.googledomains.com
Address: 2001:4860:4802:32::6c

rttw@Kincaid:~$ nslookup ns-cloud-c2.googledomains.com
Server: 192.168.160.1
Address: 192.168.160.1#53

Non-authoritative answer:
Name: ns-cloud-c2.googledomains.com
Address: 216.239.34.108
Name: ns-cloud-c2.googledomains.com
Address: 2001:4860:4802:34::6c

前往域名注册商添加 DNS host(Glue Record)

我们刚刚已经获取了服务商提供的 DNS 服务器对应的 IP 地址,现在我们用这些 IP 地址来添加 DNS host(Glue Record):
添加 DNS host(Glue Record)的方法这里不在介绍,大家自己去看对应的域名注册商的文档吧,下面是腾讯云和阿里云的添加文档:
腾讯云: https://cloud.tencent.com/document/product/242/54158
阿里云: https://help.aliyun.com/document_detail/59949.html
示例图片:
添加 DNS Host

注意:最少要有两组 DNS 服务器,比如笔者想用的是 ns1.vanitydns.com和ns2.vanitydns.com,把上面获取到的 IP 地址平分到这两组 DNS host 即可。

图文里的域名和 IP 不符,大家不用在意,只是举个例子

前往解析服务商为名称服务器添加 A 和 AAAA 记录

这里我们需要前往解析服务商为名称服务器添加 A 和 AAAA 记录,比如笔者的是 ns1.vanitydns.com和ns2.vanitydns.com,那么我们需要前往解析服务商为这两个名称服务器添加 A 和 AAAA 记录指向 DNS 服务器 IP 地址,注意这里指向 DNS 服务器 IP 地址设置的要和前面添加 DNS host(Glue Record)的 IP 地址一致,比如笔者设置 DNS host 时:
ns1.vanitydns.com 指向 1.12.34.55,1.12.34.56,2402:4e00::1
ns2.vanitydns.com 指向 1.23.34.57,1.12.34.58,2402:4e00::2
那在去解析服务商为这两个名称服务器添加 A 和 AAAA 记录,和上面 host 保持一致:
ns1.vanitydns.com. 3600 IN A 1.12.34.55
ns1.vanitydns.com. 3600 IN A 1.12.34.56
ns1.vanitydns.com. 3600 IN AAAA 2402:4e00::1
ns2.vanitydns.com. 3600 IN A 1.23.34.57
ns2.vanitydns.com. 3600 IN A 1.23.34.58
ns2.vanitydns.com. 3600 IN AAAA 2402:4e00::2

修改 NS 和 SOA 记录

添加完解析后在解析服务商修改 NS 和 SOA 记录,NS 记录指向的是你自定义名称服务器,比如笔者的是NS1.VANITYDNS.COM和NS2.VANITYDNS.COM,那就把 NS 记录的值改成这两个,注意 TTL 尽量设置的长一点,比如 3600-86400,SOA 记录主要注意修改主 NS 服务器和邮箱地址,其他的可以不用管,比如笔者的是:

1
vanitydns.com. 300 IN SOA ns1.vanitydns.com. admin.vanitydns.com. 2023020601 3600 180 1209600 300

其中 300 是 TTL,ns1.vanitydns.com 是主 NS 服务器,admin.vanitydns.com 是邮箱地址,2023020601 是序列号,3600 是刷新时间,180 是重试时间,1209600 是过期时间,300 是最小 TTL。需要修改的也仅有主 NS 服务器和邮箱地址,其他的可以不用管。
听起来可能有点难懂,放个修改示例的截图吧:
这是笔者用的 cloudNS,修改示例:
修改示例1

这是Google Cloud DNS,修改示例:
修改示例2

PS:在 DNS 记录中,邮箱地址中的 @ 符号需要用 . 代替。是不是有同学还想问主名称服务器是啥,假如你想自定义的 NS 是 ns1.vanitydns.com 和 ns2.vanitydns.com,那么 ns1.vanitydns.com 就是主名称服务器,ns2.vanitydns.com 就是备用名称服务器。(懂得自然懂,不懂照做就行)

修改域名 DNS 服务器

完成上面的所有步骤后你就可以修改域名的 DNS 服务器地址为你自己的了,具体如何修改请参考你的域名服务商的帮助文档。
修改完成后就可以看效果了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
rttw@Kincaid:~$ whois vanitydns.com
Domain Name: VANITYDNS.COM
Registry Domain ID: 2754575975_DOMAIN_COM-VRSN
Registrar WHOIS Server: whois.google.com
Registrar URL: http://domains.google.com
Updated Date: 2023-01-29T07:52:29Z
Creation Date: 2023-01-29T00:16:12Z
Registry Expiry Date: 2024-01-29T00:16:12Z
Registrar: Google LLC
Registrar IANA ID: 895
Registrar Abuse Contact Email: [email protected]
Registrar Abuse Contact Phone: +1.8772376466
Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
Name Server: NS1.VANITYDNS.COM
Name Server: NS2.VANITYDNS.COM
DNSSEC: signedDelegation
DNSSEC DS Data: 49548 13 2 D6D5E60B35B2F10CA1052FAA6045E0BC0B201D46547AC3ED1DF5FC9A797BAD0A
URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
>>> Last update of whois database: 2023-02-08T12:31:14Z <<<

常见问题

  1. 看完之后感觉有点懵?
    确实,这文章写的有点不适合小白,遇到任何问题发邮件或者前往 GitHub 仓库提 issue 都可以。
  2. 更改 DNS 服务器失败?
    看起来大概是下面这样,如果你是腾讯云注册的域名,可在腾讯云域名控制台找到“技术交流群”点击扫码加群寻求帮助,其他域名服务商可以给笔者发邮件或者前往 Github 仓库提 issue。
    修改失败