搭建自己的DNS服务器是一个很常见的诉求,尤其是在公司内部。linux下架设DNS服务器通常是使用BIND程序来实现,BIND是美国加利福尼亚大学伯克利分校开发的软件,是一套域名服务器软件包,该软件实现了 DNS 解析协议,可以在 Linux 系统上通过这个软件包来提供域名解析服务。
1、安装BIND
通常Linux系统会自带BIND软件,检查自己的服务器是否已安装,可以执行如下命令来检测:
如果出现如上图执行结果,则表示当前系统已经安装了BIND软件。反之,则没有。安装BIND,你可以使用 yum install -y bind* 命令。安装结果大概如下:
BIND软件安装完毕后,你可以通过 systemctl start named.service 命令来启动BIND软件。BIND启动成功后,通过 netstat -npl|grep named 查看运行结果,如下:
从结果中我们可以看到 named 进程是 BIND 软件的运行进程,它可以同时支持 udp/tcp 两种协议,默认使用53端口。此外 named 进程同时监听了953端口,主要用于为远程管理工具提供控制通道。
2、配置BIND
安装了BIND后,你还需要配置一下BIND。Bind的主配置文件是etc/name.conf,该文件是文本文件,一般需手动生成。除了主配置文件外,/var/named目录下的所有文件都是DNS服务器的相关配置文件,这些配置文件共同保证BIND的正常运行。下面详细讲述这些文件的配置。
1)name.conf 文件,用来定义bind服务程序的运行
通常情况下只需要修改 listen-on 和 allow-query 两项即可,如下:
这里分别表示服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。
2)/etc/named.rfc1912.zones 文件,用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
解析新域名时,就是在此文件中增加新的解析规则。如下:
3)named.ca 文件,这是根域配置文件,根域配置文件设定根域的域名数据库,包括根域中13台DNS服务器的信息。几乎所有系统的这个文件都是一样的,一般情况下,用户不需要进行修改。
4)正向域名解析数据库文件,这里对应第 2)步中 file 字段指定的文件,它的作用是定义域名到ip的对应关系。
5)反向域名解析数据库文件,这里也是对应第 2)步中 file 字段指定的文件,它的作用是定义ipd到域名的对应关系。
3、域名解析
域名解析分为正向解析和反向解析,正向解析是将域名解析到ip,反向解析是将ip解析到域名。
3.1 正向解析
1)修改区域配置文件 /etc/named.rfc1912.zones,为 example.com 定义一条正向解析规则,如下:
2)修改数据配置文件 example.com.zone
3.2 反向解析
在DNS域名解析服务中,反向解析的作用是将用户提交的IP地址解析为对应的域名信息,它一般用于对某个IP地址上绑定的所有域名进行整体屏蔽,屏蔽由某些域名发送的垃圾邮件。它也可以针对某个IP地址进行反向解析,大致判断出有多少个网站运行在上面。当购买虚拟主机时,可以使用这一功能验证虚拟主机提供商是否有严重的超售问题。
1)修改区域配置文件 /etc/named.rfc1912.zones,为 example.com 定义一条反向向解析规则,如下:
注意:反向解析是把IP地址解析成域名格式,因此在定义zone(区域)时应该要把IP地址反写,比如原来是192.168.10.0,反写后应该就是10.168.192,而且只需写出IP地址的网络位即可。
2)修改数据配置文件 245.168.192.arpa
4、重启服务
修改了配置文件后,一定要重启服务器,这样配置的内容才能生效。