搭建linux DNS服务器
Linux系统下架设DNS服务器通常是使用Bind程序来实现的。Bind是Berkeley Internet Name Domain Service的简写,是一款架设DNS服务器的开放源代码软件。Bind原本是美国DARPA资助伯克里大学开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器都是用Bind来架设的。
Bind经历了第4版、第8版和最新的第9版,第9版修正了以前版本中的许多错误,并提升了执行时的效能。Bind能够运行在当前大多数的操作系统系统平台之上。目前Bind软件由ISC(Internet Software Consortium,因特网软件联合会)这个非赢利性机构负责开发和维护。ISC的官方网站域名为http://www.isc.org/,包含了Bind的最新错误修复和更新。
今天我们介绍利用bind程序搭建linux下的主DNS服务器、唯缓存DNS服务器、辅助DNS服务器、DNS根提示以及关于bind穿越iptables防火墙设置等
1.主DNS服务器环境配置:
/etc/sysconfig/network-scripts/ifcfg-eth0文件内容如下图所示:
/etc/sysconfig/network文件内容如下图所示:
/etc/hosts文件内容如下图所示:
重新启动network 服务方法如下图所示:
/etc/resolv.conf文件内容如下图所示:
2.安装所需bind软件包。
首先将linux5的安装光盘挂载到/media目录下,并且进入光盘目录的Server目录,然后安装bind-9.3.3、bind-chroot-9.3.3、caching-nameserver-9.3.3等软件包,最后设置named服务开机自动启动,具体操作方法如下图所示:
3.生成bind主配置文件named.conf
由于bind-9软件包安装完毕后,默认没有该服务的主配置文件,所以需要手工进入/var/named/chroot/etc目录,将原有的named.caching-nameserver.conf文件复制一份,生成bind的主配置文件named.conf(在使用cp复制时需要带权限一同复制,所以需要加-a或-p选项),最后需要将/var/named/chroot/etc/named.conf 文件链接到/etc/下。具体操作如下图所示:
4.编辑bind主配置文件named.conf,内容如下所示:将named.conf配置文件中的部分内容保留(如下图中①部分所示),其它原内容删除,并添加其它相关内容。
说明:
上图中②的作用是设置DNS转发器(即建立唯缓存服务器),如果本DNS服务器无法解析,则本DNS服务器向202.106.46.151转发解析请求;
上图中③是bind 9.x版本的新功能,作用是:当多台DNS服务器进行区域转移(复制)或DNS更新时对数据进行加密处理;
上图中④是新建立一个正向查找区域,区域名为"example.com",该区域的类型为"主要区域",区域数据库文件为"example.com.zone";
上图中⑤是新建立一个反向查找区域,区域名为"24.172.in-addr.arpa",该区域的类型为"主要区域",区域数据库文件为"172.24.zone";
每个区域的区域数据库文件名是自定义的(可随意起名,上图中的example.com和172.24.zone文件名都是随意命名的),但每个区域的名称是不能随意的(上图中的example.com和24.172.in-addr.arpa),而且反向区域的名称必须是"倒置"的(格式如上例中所示xx.xxx.in-addr.arpa)。
为了在主DNS服务器上控制允许哪些辅助DNS服务器复制DNS区域,可以在options区中添加allow-transfer { 辅助DNS服务器IP地址; }; ,当然该语句也可以写在zone区中;如果该语句写在options中,它可以控制整个DNS服务器上的所有区域复制;如果该语句写在zone区中,它只能控制它所在区域的复制。例:在上图①中再添加 allow-transfer { 172.24.0.4; }; 语句即可以控制该服务器上的所有区域都允许 172.24.0.4复制。
5.建立DNS的正向区域和反向区域文件:
由于步骤4中的DNS正向和反向区域数据库文件名分别为example.com.zone和172.24.zone,所以我们需要在/var/named/chroot/var/named目录中建立以上两个文件,操作如下图所示:
编辑正向区域数据库文件(vim example.com.zone),并添加如下图所示内容:
其中:
$TTL 7200 为该区域记录缓存的生存周期
@ 代表区域名称
IN 代表该记录是标准的internet 记录
SOA 为记录类型 ,例如:A 记录、PTR记录、MX记录、CNAME记录、NS记录等
20912301 为序列号
15M 为辅助区域每隔15分钟到主区域复制
10M 为辅助区域如果复制不成功,每隔10分钟重试一次
1H 为如果辅助区域隔1小时还没有与主区域复制,将自动过期,并删除复制来的文件,并不再为客户端提供解析服务
1D 为 缓存那些不能解析的记录时间为1天(缓解上一级DNS的压力,提高解析速度)
编辑反向区域数据库文件(vim 172.24.zone),添加如下图所示内容:
6.启动bind服务,操作如下图所示:
7.测试解析bind服务是否正确,操作如下图所示:
二、搭建辅助DNS服务器
1.辅助DNS服务器环境配置:
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-eth0 ,内容如下所示:
重新启动network服务之后,使用ifconfig eth0查看该服务器IP地址,如下图所示:
2.安装bind所需软件包,并生成bind主配置文件named.conf,具体操作如下图所示:
说明:由于图中①所示语句中没有使用-a或-p选项,所以新文件named.conf的属组与原文件named.Caching-nameserver.Conf的属组不相同,导致DNS服务无法启动。因此需要修改bind主配置文件named.conf的属组,具体操作如下图所示:
3.编辑bind主配置文件named.conf,并添加如下图所示的内容:
说明:
上图中③是新建立DNS正向查找区域,区域名为example.com,该区域的类型为"辅助区域",区域数据库文件名为"example.com.zone",该辅助区域是从"172.24.254.254"的主区域复制而来。(注意:辅助区域名称要与主区域名称必须相同)
上图中是新建立DNS反向查找区域,区域名为24.172.in-addr.arpa,该区域的类型为"辅助区域",区域数据库文件名为"172.24.zone",该辅助区域是从"172.24.254.254"的主区域复制而来。
辅助区域数据库文件必须存储在/var/named/chroot/var/named/slaves/目录中,所以上图中的正向、反向数据库文件必须指定为"slave/*.*.zone"。
4.启动辅助DNS服务器的bind服务
首先进入/var/named/chroot/var/named/slaves/目录,使用ls查看,您会发现没有任何内容,然后再启动named服务,再使用ls查看,您会发现正向、反向区域数据库文件都已经复制过来。具体操作如下图所示:
如上图所示辅助DNS服务器的区域数据库文件已经复制成功。
当然如果主DNS区域数据库文件发生变化时,需要手工将"区域序列号"增加,然后在辅助DNS上重新启动named服务或使用命令:rndc refresh 区域名 两种方法都可以实现区域数据库文件的同步。
三、设置DNS根示功能:
如果希望设置linux DNS服务器的根提示功能,可以在bind主配置文件named.conf中添加根区域,具体操作如下图所示:
然后重新启动named 服务即可。
四、关于iptables防火墙设置:
DNS服务使用UDP的53号端口为客户端提供解析服务,但多台DNS之间的数据复制是通过TCP的53号端口进行。所以如果您的DNS服务器上运行了iptables防火墙,请在iptables中同时开启tcp的53号端口和udp的53号端口。操作方法如下图所示:
关于DNS服务器就讨论到这里,(DNS的内容非常的多,使用方法与技术繁多)如果有问题请与我联系。
流星:caiyuanji (at) 163.com QQ:85104942
一、搭建主DNS服务器与唯缓存服务器