「系统架构」如何搭建自己的DNS服务器?

搭建自己的DNS服务器是一个很常见的诉求,尤其是在公司内部 。linux下架设DNS服务器通常是使用BIND程序来实现,BIND是美国加利福尼亚大学伯克利分校开发的软件,是一套域名服务器软件包,该软件实现了 DNS 解析协议,可以在 Linux 系统上通过这个软件包来提供域名解析服务 。
1、安装BIND
通常Linux系统会自带BIND软件,检查自己的服务器是否已安装,可以执行如下命令来检测:

「系统架构」如何搭建自己的DNS服务器?

文章插图
 
如果出现如上图执行结果,则表示当前系统已经安装了BIND软件 。反之,则没有 。安装BIND,你可以使用 yum install -y bind* 命令 。安装结果大概如下:
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
BIND软件安装完毕后,你可以通过 systemctl start named.service 命令来启动BIND软件 。BIND启动成功后,通过 netstat -npl|grep named 查看运行结果,如下:
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
从结果中我们可以看到 named 进程是 BIND 软件的运行进程,它可以同时支持 udp/tcp 两种协议,默认使用53端口 。此外 named 进程同时监听了953端口,主要用于为远程管理工具提供控制通道 。
2、配置BIND
【「系统架构」如何搭建自己的DNS服务器?】安装了BIND后,你还需要配置一下BIND 。Bind的主配置文件是etc/name.conf,该文件是文本文件,一般需手动生成 。除了主配置文件外,/var/named目录下的所有文件都是DNS服务器的相关配置文件,这些配置文件共同保证BIND的正常运行 。下面详细讲述这些文件的配置 。
1)name.conf 文件,用来定义bind服务程序的运行
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
通常情况下只需要修改 listen-on 和 allow-query 两项即可,如下:
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
这里分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求 。
2)/etc/named.rfc1912.zones 文件,用来保存域名和IP地址对应关系的所在位置 。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件 。
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
解析新域名时,就是在此文件中增加新的解析规则 。如下:
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
3)named.ca 文件,这是根域配置文件,根域配置文件设定根域的域名数据库,包括根域中13台DNS服务器的信息 。几乎所有系统的这个文件都是一样的,一般情况下,用户不需要进行修改 。
4)正向域名解析数据库文件,这里对应第 2)步中 file 字段指定的文件,它的作用是定义域名到ip的对应关系 。
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
5)反向域名解析数据库文件,这里也是对应第 2)步中 file 字段指定的文件,它的作用是定义ipd到域名的对应关系 。
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
3、域名解析
域名解析分为正向解析和反向解析,正向解析是将域名解析到ip,反向解析是将ip解析到域名 。
3.1 正向解析
1)修改区域配置文件 /etc/named.rfc1912.zones,为 example.com 定义一条正向解析规则,如下:
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
2)修改数据配置文件 example.com.zone
「系统架构」如何搭建自己的DNS服务器?

文章插图
 
3.2 反向解析
在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件 。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面 。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题 。
1)修改区域配置文件 /etc/named.rfc1912.zones,为 example.com 定义一条反向向解析规则,如下:
「系统架构」如何搭建自己的DNS服务器?


推荐阅读