0 起因
晚上被告知自己的几个服务器好像都上不了,连接不过去,然后祭出 PING ,返回的说是无法找到服务器的地址(喵喵喵???
那就自己搭建自己域名的权威DNS吧Orz……
1 环境
国内一组服务器,地点上海,托管于AliCloud
日本一组服务器,地点东京,托管于Vultr
美国两 一 组服务器,地点洛杉矶,德州,托管于Vultr
服务器采用 Ubuntu 16.04 LTS
2 软件
采用bind9 嗯就那样,算是主流
3 拓扑
日本的服务器作为 boxjan.li 和另外一个子域名的 主服务器 有提供对应服务的 服务的,则作为从服务器从主服务器上复制一份 只做了正向区域
4 搭建过程
首先
sudo apt update
sudo apt install bind9
按提示敲Y 回车就可以了
然后这个版本的全部配置文件都在 /etc/bind/
中
name.conf 是bind的配置文件,其他的配置文件都被包含在里面, name.conf. 为前缀的是更详细的配置文件,local 一般用于定义一个zone,options 一般设置转发, default-zones 就是一些默认的空间了, db. 为前缀的是数据库文件,一般就包含各个zone解析的内容
4.0 通用设置
作为权威服务器,就做好本分工作就行,非本区域的查询都拒绝,在name.conf.opions 中的大括号内 增加了
recursion no;
allow-transfer { none; };
如果,你觉得可以作为平时用的DNS 也可以不更改 以上内容
4.1 主服务器
在name.conf.local 文件中添加一下内容(example.com 请根据实际修改)
zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer {
@ip_slave; //从服务器IP
};
};
在 /etc/bind/ 创建 db.example.com文件
大致为一下内容(复制时请去掉注释
$TTL 300 //默认生存时间
@ IN SOA ns.example.com. root.example.com. ( // SOA 记录 此处的域名皆为 FQDN
2 ; Serial //序号
300 ; Refresh //下游服务器传输刷新时间
60 ; Retry //下游服务器传输失败重试间隔时间
2419200 ; Expire //有效期
604800 ) ; Negative Cache TTL //过期时间
;
@ IN NS ns
ns IN A 0.0.0.0
ns IN AAAA ::1
www IN A 0.0.0.1
其余解析类型请自行查找
4.2 从服务器(slave)
在name.conf.local 文件中添加一下内容(example.com 请根据实际修改)
zone "example.com" {
type slave;
file "/etc/bind/db.example.com";
masters { @ip_master; };//主服务器IP
};
4.3 备注
所有改动结束后请重启 bind9/etc/inti.d/bind9 restart
如果在主从服务器同步时出现类似以下内容或其他问题
client IP#xxxxx: bad zone transfer request: 'example.com/IN': non-authoritative zone (NOTAUTH)
请将两边的服务器都重启下,应该即可解决
5 LASTEST
去域名注册商 把ns给改了,更换之前 新的ns.example.com 应能从其它DNS服务器被解析
最后补充一下, 最终考虑到更新的问题,boxjan.li 还是换到了do家上他家用的是cloudflare的服务器,所以除了中国,其他地区都不慢;boxjan.com则是托管在 cloudxns 上,他家提供了免费的 国家线路划分,速度还不慢,比ali好多了
以上