本文介绍如何使用 BIND 9+CloudNS+NS1 (NSONE) 搭建高可用 DNS 服务,一般来讲,对于高可用的场景来说,单一的 DNS 服务商提供的 DNS 服务无法满足灾备的需求,所以我们需要使用多个 DNS 服务商来进行冗余备份,本文将指导您使用 BIND 9 作为主 DNS 服务器(不对外提供服务),CloudNS 和 NS1 (NSONE) 作为从 DNS 服务器(对外提供服务)来搭建高可用 DNS 服务。
本文部分内容将指导您如何使用自己的域名作为 DNS 服务器地址,以下简称Vanitydns,如果您不需要实现该效果,可以按说明跳过相关步骤。
前提条件
服务器/云服务器:BIND 9 对配置要求不高,如您的解析记录数量较少,一般 1 核 1G 的服务器即可满足需求;该服务器 53 端口需要对外开放,如果您使用的是云服务器,需要在云平台的安全组中添加 53 端口的入站规则(TCP&UDP)。
系统环境:本示例中使用的是 Debian12
DNS 服务域名(Vanitydns 需要):为了实现服务的高可用性,至少需要两个域名,这两个域名需要在不同注册局&注册商(如.com和.org;腾讯云和阿里云),以避免某家注册商或注册局服务出现异常,且注册商需要支持添加 DNS host(Glue record)。笔者使用的是 AWS Route53 和 Dynadot 两家注册商,以及 vanitydns.com 和 vanitydns.org 两个注册局不同的域名。不考虑高可用性的情况下,只需要一个域名即可。
DNS 服务商服务(Vanitydns 需要):CloudNS 需要付费服务,具体费用根据您的需求而定;NS1 (NSONE) 提供免费服务,但需要申请账号,若使用量超出 NS1 (NSONE) 免费额度,则需要付费,具体费用根据您的需求而定。NS1 (NSONE) 注册账号需要人工审核,审核通过后才能完成注册,审核时间一般为 1-2 个工作日。
传送门:
操作步骤 安装 BIND 9 1 2 sudo apt updatesudo apt install BIND 9
BIND 9 基础配置 配置文件路径:/etc/bind/named.conf.options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 options { directory "/var/cache/bind" ; // If there is a firewall between you and nameservers you want // to talk to, you may need to fix the firewall to allow multiple // ports to talk. See http://www.kb.cert.org/vuls/id/800113 // If your ISP provided one or more IP addresses for stable // nameservers, you probably want to use them as forwarders. // Uncomment the following block, and insert the addresses replacing // the all-0's placeholder. // forwarders { // 0.0.0.0; // }; //======================================================================== // If BIND logs error messages about the root key being expired, // you will need to update your keys. See https://www.isc.org/bind-keys //======================================================================== dnssec-validation auto; listen-on-v6 { any; }; listen-on { any; }; allow-query-cache { none; }; allow-query { any; }; recursion no; // 禁用递归查询 rate-limit { responses-per-second 500; // 速率限制:每秒最多响应500次,由于不对外提供服务,一般不需要配置 }; };
如您需要记录相关日志,可在下面添加日志配置,详细配置请参考 BIND 9 日志配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 logging { channel default_log { file "/var/log/named/default" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel auth_servers_log { file "/var/log/named/auth_servers" versions 100 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel dnssec_log { file "/var/log/named/dnssec" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel zone_transfers_log { file "/var/log/named/zone_transfers" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel ddns_log { file "/var/log/named/ddns" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel client_security_log { file "/var/log/named/client_security" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel rate_limiting_log { file "/var/log/named/rate_limiting" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel rpz_log { file "/var/log/named/rpz" versions 3 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel queries_log { file "/var/log/named/queries" versions 600 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity info; }; channel query-errors_log { file "/var/log/named/query-errors" versions 5 size 20m; print-time yes ; print-category yes ; print-severity yes ; severity dynamic; }; channel default_syslog { print-time yes ; print-category yes ; print-severity yes ; syslog daemon; severity info; }; channel default_debug { print-time yes ; print-category yes ; print-severity yes ; file "named.run" ; severity dynamic; }; category default { default_syslog; default_debug; default_log; }; category config { default_syslog; default_debug; default_log; }; category dispatch { default_syslog; default_debug; default_log; }; category network { default_syslog; default_debug; default_log; }; category general { default_syslog; default_debug; default_log; }; category zoneload { default_syslog; default_debug; default_log; }; category resolver { auth_servers_log; default_debug; }; category cname { auth_servers_log; default_debug; }; category delegation-only { auth_servers_log; default_debug; }; category lame-servers { auth_servers_log; default_debug; }; category edns-disabled { auth_servers_log; default_debug; }; category dnssec { dnssec_log; default_debug; }; category notify { zone_transfers_log; default_debug; }; category xfer-in { zone_transfers_log; default_debug; }; category xfer-out { zone_transfers_log; default_debug; }; category client{ client_security_log; default_debug; }; category security { client_security_log; default_debug; }; category rate-limit { rate_limiting_log; default_debug; }; category spill { rate_limiting_log; default_debug; }; category database { rate_limiting_log; default_debug; }; category rpz { rpz_log; default_debug; }; category trust-anchor-telemetry { default_syslog; default_debug; default_log; }; category queries { queries_log; }; category query-errors {query-errors_log; }; };
创建域名区域文件
区域文件记录了域名的解析记录,每个域名都需要一个区域文件,区域文件默认可以存放在 /var/cache/bind
目录下,也可以自定义存放路径,本示例中使用的是默认路径,区域文件无特殊命名规则,可以使用域名作为文件名(不需要指定后缀),或使用 .txt/.zones/.zone/.db 等作为后缀,本文未指定后缀。
此处以 yjz.hk 为例,在 /var/cache/bind
下创建 yjz.hk 的区域文件,文件名为 yjz.hk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 $TTL 1d ; default TTL for zone$ORIGIN yjz.hk.@ IN SOA ns1.example.com. hostmaster.example.com. ( 2023112701 ; serial number 1h ; refresh 3m ; update retry 2w ; expiry 1m ; minimum ) @ 86400 IN NS ns1.vanitydns.com. @ 86400 IN NS ns2.vanitydns.com. @ 86400 IN NS ns3.vanitydns.org. @ 86400 IN NS ns4.vanitydns.org. @ 300 IN A 104.26.7.130 @ 300 IN A 104.26.6.130 @ 300 IN A 172.67.70.42 @ 300 IN AAAA 2606:4700:20::681a:682 @ 300 IN AAAA 2606:4700:20::ac43:462a @ 300 IN AAAA 2606:4700:20::681a:782
$TTL:默认 TTL,如果某条记录没有指定 TTL,则使用默认 TTL
$ORIGIN:域名,如果某条记录没有指定域名,则使用 $ORIGIN
@:代表域名本身,如 yjz.hk
IN:代表 Internet
SOA:Start of Authority,域名的权威记录,每个域名只能有一个 SOA 记录,其中 ns1.example.com. 代表主名称服务器,hostmaster.example.com. 代表域名管理员邮箱地址,2023112701 代表序列号,1h 代表刷新时间,3m 代表重试时间,2w 代表过期时间,1m 代表最小 TTL。注意:在 zone 文件中,所有完整的域名后面都需要加上一个点,如 ns1.example.com.,否则会自动加上 $ORIGIN,变成 ns1.example.com.yjz.hk;此外序列号在每次修改 zone 文件后都需要递增,否则从 DNS 服务器无法同步获取到最新的解析记录。
NS:Name Server,域名服务器,每个域名至少需要两个 NS 记录,如果您未使用 Vanitydns,请配置CloudNS和NS1 (NSONE) 提供的 NS 服务器地址(建议总共不超过 4 个,每家各配置两个,后面会教大家如何获取两家提供的NS,这里随便写两个域名即可,如pns41.cloudns.net., pns42.cloudns.net., dns1.p01.nsone.net., dns2.p01.nsone.net.),如果您使用了 Vanitydns,请配置您用来提供 DNS 服务的 NS 服务器地址,如 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org.。
A:Address,IPv4 地址,如果您的域名需要解析 IPv4 地址,请添加 A 记录。
AAAA:IPv6 地址,如果您的域名需要解析 IPv6 地址,请添加 AAAA 记录。
创建 Slave/Secondary 区域
Slave/Secondary 区域是指从 DNS 服务器,它从主 DNS 服务器获取域名的解析记录,然后提供给客户端,本示例中使用的是 CloudNS 和 NS1 (NSONE) 作为 Slave/Secondary 区域,BIND 9 作为主 DNS 服务器,所以需要在 CloudNS 和 NS1 (NSONE) 上创建 Slave/Secondary 区域。
CloudNS 创建 Slave/Secondary 区域
登录 CloudNS 管理控制台 ,点击创建区域
选择备用域
填写域名和主 DNS 服务器地址,主 DNS 服务器地址填写 BIND 9 服务器的 IP 地址
点击创建
,完成创建
创建完成后点击页面的基础设置
记录下用于传输的 IP 地址,后面配置 BIND 9 区域文件时需要用到
CloudNS 的 NS 服务器地址可在控制面板可用的名称服务器查看
NS1 (NSONE) 创建 Slave/Secondary 区域
登录 NS1 (NSONE) 管理控制台 ,点击+
填写域名并选择Secondary Zone
,主 DNS 服务器地址填写 BIND 9 服务器的 IP 地址
点击Save Zone
,完成创建
请注意,NS1 域名内需要填写 FQDN,即需要填写完整的域名,如 yjz.hk.,而不是 yjz.hk
NS1 (NSONE) 用于AXFR/IXFR传输的 IP 地址为192.135.223.10
NS1 (NSONE) 的辅助 DNS 服务器地址可在区域控制面板中的Name Servers
查看
修改域名区域文件中的 DNS 服务器地址 至此我们已经获取到了两家厂商的 NS 服务器地址,需要根据实际获取到的地址修改区域文件中的 NS 记录和 SOA 记录,以 yjz.hk 为例,修改后的 SOA 和 NS 记录如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 $TTL 1d ; default TTL for zone$ORIGIN yjz.hk.@ IN SOA pns41.cloudns.net. hostmaster.yjz.hk. ( 2023112702 ; serial number 1h ; refresh 3m ; update retry 2w ; expiry 1m ; minimum ) @ 86400 IN NS pns41.cloudns.net. @ 86400 IN NS pns42.cloudns.net. @ 86400 IN NS dns1.p01.nsone.net. @ 86400 IN NS dns2.p01.nsone.net.
如果您使用的是 Vanitydns,请将上面的 NS 记录修改为您用来提供 DNS 服务的 NS 服务器地址,如 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org.,SOA 记录中的主名称服务器也需要修改为您用来提供 DNS 服务的 NS 服务器地址,如 ns1.vanitydns.com.。
配置 BIND 9 加载区域文件 配置文件路径:/etc/bind/named.conf.local
,在原有配置的基础上添加以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 zone "yjz.hk" { type master; file "/var/cache/bind/yjz.hk" ; allow-transfer { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; also-notify { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; };
zone:域名,需要与区域文件中的域名保持一致
type:区域类型,主 DNS 服务器填写 master
file:区域文件路径,需要与区域文件实际路径保持一致
allow-transfer:允许传输的 IP 地址,填写 CloudNS 和 NS1 (NSONE) 提供的用于传输的 IP 地址
also-notify:通知的 IP 地址,用于通知 CloudNS 和 NS1 (NSONE) 更新解析记录,填写 CloudNS 和 NS1 (NSONE) 提供的用于传输的 IP 地址
重载 BIND 9 配置 检查配置文件是否正确 重载配置前需要检查配置文件是否正确,使用以下命令检查配置文件是否正确:
1 sudo named-checkconf /etc/bind/named.conf
如果配置文件正确,则不会有任何输出,如果配置文件有错误,则会输出错误信息,需要根据错误信息修改配置文件,修改完成后再次检查配置文件是否正确,直到没有错误信息为止。
检查区域文件是否正确 此外还需要检查区域文件是否正确,使用以下命令检查区域文件是否正确,请注意替换域名:
1 sudo named-checkzone yjz.hk /var/cache/bind/yjz.hk
如果区域文件正确,您将会看到如下输出:
1 2 zone yjz.hk/IN: loaded serial 2023112702 OK
如有误,请根据错误信息修改区域文件,修改完成后再次检查区域文件是否正确,直到没有错误信息为止。
重载配置 配置文件检查完成后,使用以下命令重载配置:
1 sudo systemctl reload BIND 9
检查 Slave/Secondary 区域是否正常 配置完成后,需要检查 Slave/Secondary 区域是否正常同步
CloudNS 检查 Slave/Secondary 区域是否正常同步 请点击区域控制面板中的检查 SOA
,查看 SOA 记录是否和主 DNS 服务器保持一致,如下图所示:
NS1 (NSONE) 检查 Slave/Secondary 区域是否正常同步 请点击区域控制面板中的ZONE SETTINGS
,查看SECONDARY ZONE STATUS
是否为OK
,以及SERIAL
是否和主 DNS 服务器保持一致,如下图所示:
前往域名注册商修改域名 DNS 服务器地址 请前往域名注册商修改域名 DNS 服务器地址,地址需要与 NS 记录保持一致,具体操作方法请参考域名注册商提供的文档,这里不再赘述。使用 Vanitydns 请在完成后续配置后再修改域名 DNS 服务器地址,否则可能会遇到异常操作。
至此,相关的配置已经完成,如您不需要开启 DNSSEC、不需要使用自己的域名作为 DNS 服务器地址,那到此结束;如果你需要相关的配置,那请看后续操作;
后续操作(可选) 开启 DNSSEC DNSSEC 是一种用于保护 DNS 服务器免受 DNS 欺骗的技术,DNSSEC 通过数字签名的方式来验证 DNS 服务器的响应是否被篡改,从而保证 DNS 服务器的响应是可信的,关于其原理,这里不再赘述。
修改 BIND 9 配置文件 配置文件路径:/etc/bind/named.conf.local,需要在原有配置文件中添加dnssec-policy
和inline-signing
配置,添加完如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 zone "yjz.hk" { type primary; file "/var/cache/bind/yjz.hk" ; dnssec-policy default; inline-signing yes ; allow-transfer { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; also-notify { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; };
重载 BIND 9 配置 配置文件修改完成后,使用以下命令重载配置:
1 sudo systemctl reload BIND 9
当然,重载前记得按上面的方法检查配置文件是否正确哦~
获取 DNSSEC 相关信息 我们需要获取 DNSKEY 或者 DS 记录,以及 NSEC3 记录,这些记录用于在域名注册商处配置 DNSSEC,以 yjz.hk 为例,获取 DNSSKEY 和 DS 记录的命令如下:
通常您将会在输出中看到类似于K+域名+数字+数字.key
的以 key 结尾文件,例如Kyjz.hk.+013+383xx.key
,DNSKEY 记录和 DS 记录都在该文件中:
大多域名注册商目前都需要 DS 记录,但是也有少数域名注册商需要 DNSKEY 记录,建议根据实际情况选择配置 DNSKEY 记录或 DS 记录,如果您不知道域名注册商需要哪种记录,请联系域名注册商客服。
获取 DS 记录的命令如下:
1 dnsssec-dsfromkey -2 Kyjz.hk.+013+383xx.key
通常您将会看到类似于以下输出:
1 yjz.hk. IN DS 38356 13 2 25FAD7782FB5654CE99D71F8D82EC690FC1640976D306062BD118E5005xxxxxxx
将其在域名注册商配置即可,如您不会配置,可以联系域名注册商客服,将其提供给客服协助配置。
获取 DNSKEY 记录的命令如下:
1 cat Kyjz.hk.+013+383xx.key
通常您将会看到类似于以下输出:
1 2 3 4 5 6 ; This is a key-signing key, keyid xxxxx, for yjz.hk. ; Created: xxxxxxxxxxxxxxxxxxx ; Publish: xxxxxxxxxxxxxxxxxxx ; Activate: xxxxxxxxxxxxxxxxxx ; SyncPublish: xxxxxxxxxxxxxxx yjz.hk. 3600 IN DNSKEY 257 3 13 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
最后一行则为 DNSKEY 记录,将其在域名注册商配置即可,如您不会配置,可以联系域名注册商客服,将其提供给客服协助配置。
CloudNS 和 NS1 (NSONE) 都会自动从主 DNS 服务器同步 DNSSEC 相关信息,所以您无需再去手动配置。
检查 DNSSEC 是否正常 在注册商完成配置后,需要检查 DNSSEC 是否正常,您可访问:https://dnsviz.net/,输入您的域名进行检查。
使用自己的域名作为 DNS 服务器地址(Vanitydns) 创建 Glue record
如您需要使用自己的域名作为 dns 服务器,则需要在域名注册商处创建 Glue record,Glue record 是指将域名和 IP 地址绑定的记录,用于解决域名解析时的循环依赖问题,例如:域名 yjz.hk 的 NS 服务器地址为 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org.,那么在解析 yjz.hk 时,需要先解析 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org.,然后再解析 yjz.hk,这样就会出现循环依赖问题,所以我们需要在域名注册商处创建 Glue record,将 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org. 和 IP 地址绑定,这样在解析 yjz.hk 时,就可以直接解析到 ns1.vanitydns.com.,ns2.vanitydns.com.,ns3.vanitydns.org.,ns4.vanitydns.org. 的 IP 地址,从而解决循环依赖问题。
获取 Glue record 相关信息 前往注册商创建 Glue record 之前,我们需要获取 dns 服务器对应的 IP 地址:
CloudNS 获取 dns 服务器对应的 IP 地址 前往 CloudNS 区域控制面板,点击基础设置
,记录下可用的名称服务器
中的 IP 地址,如下图所示:
NS1 (NSONE) 获取 dns 服务器对应的 IP 地址 NS1 没有直接提供 IP 地址,需要使用 nslookup 命令获取,以 dns1.p01.nsone.net. 为例,获取 IP 地址的命令如下:
1 nslookup dns1.p01.nsone.net.
通常您将会看到类似于以下输出:
1 2 3 4 5 6 7 8 9 rttw@zach:~$ nslookup dns1.p01.nsone.net. Server: 192.168.0.1 Address: 192.168.0.1#53 Non-authoritative answer: Name: dns1.p01.nsone.net Address: 198.51.44.1 Name: dns1.p01.nsone.net Address: 2620:4d:4000:6259:7:1:0:1
其中 Address 为 IP 地址,将其记录下来,以备后用
前往注册商创建 Glue record 以 dynadot 为例,前往域名管理控制台,点击服务器
,点击注册域名服务器
,填写域名和 IP 地址,如下图所示:
主机名称:填写您用来提供 DNS 服务的域名,如 ns4.vanitydns.org
IP 地址:填写您用来提供 DNS 服务的域名对应的 IP 地址,如185.136.96.79
,注意 dynadot 创建时只能填写一个 IP 地址,可在后续修改继续添加
两家 DNS 服务商总共有 16 个 IP 地址(不含CloudNS免费IP),如何将这 16 个 IP 地址分散到四个 NS 服务器域名由你自己来决定,笔者的做法是 CloudNS 提供的 8 个 IP 地址,分配给了ns1.vanitydns.com
和ns2.vanitydns.com
,NS1 (NSONE) 提供的 8 个 IP 地址,分配给了ns3.vanitydns.org
和ns4.vanitydns.org
。
四个 NS 服务器域名都需要注册 Glue record,否则会出现循环依赖问题。
在某些注册商,Glue Record 被称为 DNS Host,如 腾讯云。
创建区域文件 创建区域文件的方法与前面创建 yjz.hk 区域文件的方法相同,此处不再赘述,以 vanitydns.org 为例,创建的区域文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ORIGIN vanitydns.org.@ 180 IN SOA ns3.vanitydns.org. admin.vanitydns.com. 2023112702 3600 180 1209600 180 ns3 86400 IN A 198.51.44.1 ns3 86400 IN A 198.51.45.1 ns3 86400 IN A 47.107.117.38 ns4 86400 IN A 198.51.44.65 ns4 86400 IN A 198.51.45.65 ns4 86400 IN A 129.211.27.223 ns3 86400 IN AAAA 2620:4d:4000:6259:7:1:0:1 ns3 86400 IN AAAA 2a00:edc0:6259:7:1:0:0:2 ns4 86400 IN AAAA 2620:4d:4000:6259:7:1:0:3 ns4 86400 IN AAAA 2a00:edc0:6259:7:1:0:0:4 @ 86400 IN NS ns3.vanitydns.org. @ 86400 IN NS ns4.vanitydns.org.
A/AAAA记录指向的 IP 需要与 Glue record 中填写的 IP 地址保持一致
NS 记录指向所对应的域名,需要与 Glue record 中填写的域名保持一致
在创建完vanitydns.org
区域文件后,也别忘以相同的办法了配置vanitydns.com
区域文件,否则会出现循环依赖问题
修改 BIND 9 配置文件 配置文件路径:/etc/bind/named.conf.local
,需要在原有配置文件中添加这两个新的区域文件,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 zone "vanitydns.com" { type primary; file "/var/named/vanitydns.com" ; dnssec-policy default; inline-signing yes ; allow-transfer { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 213.239.242.238; 213.133.105.6; 193.47.99.3; 2a01:4f8:0:a101::a:1; 2a01:4f8:d0a:2004::2; 2001:67c:192c::add:a3; //hetzner 47.107.117.38; 129.211.27.223; //CN 192.135.223.10; //NS1 }; also-notify { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 213.239.242.238; 213.133.105.6; 193.47.99.3; 2a01:4f8:0:a101::a:1; 2a01:4f8:d0a:2004::2; 2001:67c:192c::add:a3; //hetzner 47.107.117.38; 129.211.27.223; //CN 192.135.223.10; //NS1 }; }; zone "vanitydns.org" { type primary; file "/var/named/vanitydns.org" ; dnssec-policy default; inline-signing yes ; allow-transfer { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; also-notify { 109.201.133.196; 108.62.121.219; 185.10.17.44; 185.206.180.140; 185.136.96.79; 185.136.97.79; 185.136.98.79; 185.136.99.79; 185.206.180.205; 2a00:1768:1001:9::196; 2604:9a00:2100:b000:1::1; 2a07:8dc0:19::5d:37ff:fea5:bacd; 2a0b:1640:1:1:1:1:762:9aa6; 2a06:fb00:1::1:79; 2a06:fb00:1::2:79; 2a06:fb00:1::3:79; 2a06:fb00:1::4:79; 2a0b:1640:1:3::13; // cloudns 192.135.223.10; //NS1 }; };
创建 Slave/Secondary 区域 参照前面的步骤,前往 CloudNS 和 NS1 创建 Slave/Secondary 区域,此处不再赘述。
重载 BIND 9 配置 配置文件修改完成后,使用以下命令重载配置:
1 sudo systemctl reload BIND 9
当然,重载前记得按上面的方法检查配置文件是否正确哦~
检查 Slave/Secondary 区域是否正常 参照前面的步骤,检查 Slave/Secondary 区域是否正常同步,此处不再赘述。
前往域名注册商修改域名 DNS 服务器地址 请前往域名注册商修改域名 DNS 服务器地址,地址需要与 NS 记录保持一致,具体操作方法请参考域名注册商提供的文档,这里不再赘述。
注意:请分别修改vanitydns.com
和vanitydns.org
的 DNS 服务器地址后,再去修改yjz.hk
的 DNS 服务器地址,否则可能会遇到异常操作。
常见问题
看完之后感觉有点懵? 确实,这文章写的有点不适合小白,遇到任何问题发邮件或者前往 GitHub 仓库 提 issue 都可以。
更改 DNS 服务器失败? 看起来大概是下面这样,如果你是腾讯云注册的域名,可在腾讯云域名控制台找到“技术交流群”点击扫码加群寻求帮助,其他域名服务商可以给笔者发邮件或者前往 Github 仓库 提 issue。