前面几篇文章我们介绍了域名解析,介绍了如何通过 dig 命令洞察 DNS 解析的过程,并从 DNS 协议的层面分析了全球为什么只有13组根域名服务器,本文向大家介绍如何自己动手快速搭建一组主从架构的 DNS 服务器。
动手前的准备
搭建 DNS 服务器需要准备一台 centos 的机器,我们可以通过腾讯云开发者实验室领取免费的实验机器。假设我们领取到的机器的外网 IP 为123.207.8.164/内网 IP 为10.135.87.104(可以通过 ifconfig 查看),现在我们可以开始动手实践了。
安装 BIND 软件
BIND 是美国加利福尼亚大学伯克利分校开发的软件,是一套域名服务器软件包,该软件实现了 DNS 解析协议,可以在 Linux 系统上通过这个软件包来提供域名解析服务。
- 查看 BIND 软件是否安装:rpm -qa | grep ^bind,若软件包不全或者不是最新,可以通过 yum 进行安装;
- 通过 yum 命令安装 BIND 软件包:yum install -y bind*,安装成功后截图如下所示;
- 启动 DNS 服务:systemctl start named.service(同时可以设置开机启动:systemctl enable named.service),启动成功后可以通过 netstat -npl|grep named 查看结果
从结果可以看到 named 进程是 BIND 软件的运行进程,提供 DNS 解析服务,可以同时支持 udp/tcp 两种协议,默认使用53端口,此外 named 进程同时监听了953端口,主要用于为远程管理工具提供控制通道。
修改 DNS 服务器配置
- 修改 /etc/named.conf 配置文件,将监听 IP 修改为 10.135.87.104,allow-query 取值修改为 any,如截图所示;
- 修改 /etc/named.rfc1912.zones 配置文件,将加入 zone 配置,这里我们以 qq.com 为例进行介绍,新增配置代码块如下所示,表示本 DNS 服务器包含 qq.com 域名的解析库;
zone "qq.com" IN {
type master;
file "data/qq.com.zone";
};
- 新增 /var/named/data/qq.com.zone 配置文件,配置文件的内容如下所示;
$TTL 1D
@ IN SOA dns.qq.com. webmaster.qq.com. (
20191124 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS dns.qq.com.
dns.qq.com. IN A 123.207.8.164
www.qq.com. IN A 8.8.8.8
- 通过命令 systemctl restart named.service 重启 DNS 服务器,通过 netstat -npl|grep named 截图如下所示;
验证 DNS 服务器有效性
- 通过 PC 电脑执行命令 dig -t a www.qq.com 查看现网真实的 www.qq.com 的解析情况,结果如下图所示;
- 通过修改 PC 电脑的 /etc/resolv.conf 配置文件指定 nameserver,将 PC 的默认 DNS 服务器设置为我们搭建的 DNS 服务器;
- 再次通过 PC 电脑执行命令 dig -t a www.qq.com 查看解析情况,如我们所预期的,域名www.qq.com 被解析到8.8.8.8,同时 qq.com的权威服务器变成了 dns.qq.com(指向 IP 为123.207.8.164),与我们搭建的 DNS 服务器配置一致;
- 通过命令 nslookup www.qq.com 验证 www.qq.com 域名的解析结果,如图所示;
至此,我们完成了简单 DNS 服务器的搭建,支持对域名 www.qq.com 进行正向解析,即将域名解析为 IP。