Linux运维实战之DNS(bind)服务器的安装与配置
2016-04-10 21:15
746 查看
转自/article/4515252.html
上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器。
【本次博文的主要内容】
bind服务器简介(包括客户端工具dig的介绍)
配置正向解析DNS服务器
配置反向解析DNS服务器
配置辅助DNS服务器并在主辅之间实现区域传送
一、BIND服务器简介:
Bind是BerkeleyInternetNameDomainService的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国DARPA资助伯克利大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器有都是用Bind来架设的。
【什么是“服务”及服务的特性】
1、什么是套接字:
套接字socket,简单来说就是IP:port(IP地址端口对)。以电话系统为例,电话的通话双方相当于相互通信的两个进程,区号是它的IP地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要使用一部电话,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方的区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接收连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话相当于关闭socket,撤销连接。
端口:
TCP:0~65535
UDP:0~65535
小于1024的端口为知名端口;Linux系统中0~1023的端口只有root用户有开放关闭的权利(服务都是以root用户身份启动,之后以一个系统用户的身份运行。)
例如:DNS服务监听在tcp的53号端口(DNS区域传送)和udp的53号端口,Web服务监听在TCP的80端口。
2、服务的特性:
运行于后台,处于监听(listen)状态
监听的原理:
如上图所示,
(1)当DNS服务端程序安装并启动之后,它首先通过socket()系统调用向内核注册使用一个套接字,并调用bind()系统调用将本地socket地址(包括本地主机地址和本地端口)与所创建的socket号联系起来。一旦注册成功,守护进程named就处于监听状态(即named进程处于阻塞状态,等待客户端的连接)。注意,服务器必须首先启动,直到它执行完socket()调用进入等待状态后,方能接受客户请求,假如客户机先启动,则connect()将返回出错代码,连接不成功。
(2)之后,DNS的请求报文发送到DNS的服务器的网卡上,而网卡是硬件,能够与硬件打交道的只有内核。内核内部的TCP/IP协议栈将请求报文解包查看其IP首部和TCP首部(即检查请求报文中的套接字是什么)。
(3)内核查看文件句柄fd(filedeiscriptor)数据库以确认是否有相关的应用程序进程注册了该套接字。如果有,则将请求报文发送给该进程。
Tips:以上是我对监听过程的简单理解,难免有错误之处,如发现错误还望指正哈!
3、DNS服务器类型:
缓存服务器:不负责解析,仅为加速,不需要注册
主DNS服务器:负责解析本地客户端请求
辅助DNS服务器:辅助服务器的区域数据都是从主服务器复制而来,其数据都是只读的
4、bind详解:
包名:bind
进程:named
协议:dns
使用端口:53(tcp,udp)
相关包:
bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性。
bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)
bind-libs:bind服务器端和客户端都使用到的公共库文件
bind-utils:bind客户端工具
程序文件:/usr/sbin/named
bind权限相关:
安装完named会自动创建用户named系统用户
Tips:早期Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越复杂,导致BUG和漏洞越来越多。黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号(named)来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限。
【配置文件】:
主配置文件:named.conf,每个语句都要使用分号结尾;其功能如下:
定义区域
定义各区域的全局配置
定义视图
定义日志
【bind客户端工具】
[/code]
dig命令:
语法:dig-t资源记录类型名称@server-ip
工作机制:
不加"@server-ip":根据/etc/resolv.conf配置的解析文件来查询
例如:
说明:
(1)加"@server-ip":根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。
(2)注意标志位:
注:dig命令不会查缓存,而是直接查服务器
例如:
常用选项:
dig-xIP@server-ip:查询反向解析
dig-t资源记录类型名称+trace:追踪解析过程
[root@CentOS01~]#dig-tAwww.baidu.com+trace
;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1<<>>-tAwww.baidu.com+trace
;;globaloptions:+cmd
#首先找根
.480984INNSg.root-servers.net.
.480984INNSj.root-servers.net.
.480984INNSd.root-servers.net.
.480984INNSk.root-servers.net.
.480984INNSc.root-servers.net.
.480984INNSh.root-servers.net.
.480984INNSb.root-servers.net.
.480984INNSl.root-servers.net.
.480984INNSe.root-servers.net.
.480984INNSm.root-servers.net.
.480984INNSa.root-servers.net.
.480984INNSi.root-servers.net.
.480984INNSf.root-servers.net.
;;Received496bytesfrom218.2.135.1#53(218.2.135.1)in1654ms
#然后找.com
com.172800INNSa.gtld-servers.net.
com.172800INNSb.gtld-servers.net.
com.172800INNSc.gtld-servers.net.
com.172800INNSd.gtld-servers.net.
com.172800INNSe.gtld-servers.net.
com.172800INNSf.gtld-servers.net.
com.172800INNSg.gtld-servers.net.
com.172800INNSh.gtld-servers.net.
com.172800INNSi.gtld-servers.net.
com.172800INNSj.gtld-servers.net.
com.172800INNSk.gtld-servers.net.
com.172800INNSl.gtld-servers.net.
com.172800INNSm.gtld-servers.net.
;;Received491bytesfrom128.63.2.53#53(128.63.2.53)in921ms
#然后找baidu.com.
baidu.com.172800INNSdns.baidu.com.
baidu.com.172800INNSns2.baidu.com.
baidu.com.172800INNSns3.baidu.com.
baidu.com.172800INNSns4.baidu.com.
baidu.com.172800INNSns7.baidu.com.
;;Received201bytesfrom192.55.83.30#53(192.55.83.30)in402ms
#最后找到最终结果
www.baidu.com.1200INCNAMEwww.a.shifen.com.
a.shifen.com.1200INNSns1.a.shifen.com.
a.shifen.com.1200INNSns2.a.shifen.com.
a.shifen.com.1200INNSns3.a.shifen.com.
a.shifen.com.1200INNSns5.a.shifen.com.
a.shifen.com.1200INNSns4.a.shifen.com.
;;Received228bytesfrom61.135.165.235#53(61.135.165.235)in81ms[/code]
dig-taxfrzone:验证完全区域传送
host命令:
语法:host-t资源记录类型名称
例如:
二、DNS(bind)服务器的配置:
经过上面关于bind服务的介绍后,下面我们就来具体配置bind服务哈。我们的配置分四个:
配置正向解析的bind
配置反向解析的bind
配置辅助bind
实现主辅DNS之间的区域传送
【实验环境规划】
VMwarestation10
BIND服务器:两台CentOS6.4虚拟机做主辅DNS
一台windowsserver2008R2做辅助DNS
一台windows7做客户端
DomainName:test.com.192.168.1.0/24
主DNS:LinuxMaster.test.com.192.168.1.58
辅助DNS:LinuxSlave.test.com.192.168.1.59
Win2008Slave.test.com.192.168.80.3(在windows2008R2上实现)
web主机:www.test.com.192.168.1.58192.168.1.59192.168.80.3
ftp主机:ftp.test.com.CNAMEwww.test.com.
mx邮件服务器:mx.test.com.192.168.1.58
1、配置正向解析
【将一台主机配置成可正向解析的DNS之步骤】
第一步:使用YUM安装DNS所使用的软件包(BIND)
第二步:创建或修改主配置文件(/etc/named.conf)
第三步:创建区域数据文件(/var/named/***.zone)
第四步:使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误
第五步:确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
第六步:重启服务或重新加载配置文件
第七步:更改iptables和selinux的设置(如果不了解此两项可以暂时关闭它们)
第八步:分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录
具体配置过程如下:
第一步:通过yum安装bind:
[/code]
第二步:自己创建或修改主配置文件(/etc/named.conf)
首先我们来看看主配置文件的内容哈:
[/code]
注释如下三行:
//listen-onport53{127.0.0.1;};
//listen-on-v6port53{::1;};
//allow-query{localhost;};
启动named服务:
验证named服务是否已经启动:
配置开机启动:
至此,一台缓存DNS服务器就配置好了!
【编辑区域配置文件/etc/named.rfc1912.zones】
在里面新建一个区域,格式如下:
我们这里新建的区域如下:
第三步:创建区域数据文件(/var/named/***.zone)
在/var/named下建立“ZONE_NAME.zone”文件,通常只包含宏定义和资源记录,且第一个记录必须是SOA记录(格式如下);
[/code]
注:以上各资源记录的写法及含义在上次博文中已经详细讨论过(/article/4515251.html),这里不再赘述了哈!
第四步:使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误
第五步:确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
(1)检查主配置文件的权限:
(2)检查区域解析库文件/var/named/test.com.zone的权限:
更改权限:
第六步:重新启动服务或重新加载配置文件:
第七步:更改iptables和selinux的设置(如果不了解此两项可以暂时关闭它们)
第八步:分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录
(1)使用dig命令在Linux主机上进行DNS资源查询:
(2)使用nslookup命令在Windows系统平台下测试DNS相关资源记录:
至此,一台能够正向解析的bind服务器就配置好了哈!
2、配置反向解析bind服务器:
正向解析与反向解析各自采用不同的解析库,一台DNS服务器可以只有正向解析库或只有反向解析库,也可以同时提供正向/反向解析。
反向区域的区域名称格式:
ReverseIP.in-addr.arpa.
例如:假设网络地址为172.16.100.1那么规则命名为100.16.172.in-addr.arpa
这里我本地的内网IP为192.168.1.0,所以则写成1.168.192.in-addr.arpa
第一步:修改配置文件/etc/named.conf,添加反向解析区域配置文件
第二步:创建反向区域解析文件168.192.zone
第三步:检查语法错误
第四步:设置权限
第五步:重新加载配置文件
第六步:用windows客户端验证解析:
至此,我们就把主bind服务器配置好了哈(既可以正向解析又可以反向解析)
三、rndc的相关知识:
1、什么是rndc:
RemoteNameDomainController,远程名称域控制器
rndc通过一个TCP连接与名字服务器通信,发送经过数字签名认证的命令。在当前版本的rndc和named中,唯一支持的认证算法是HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的key_id签名。
监听端口:953/tcp
语法:
[/code]
2、rndc的调试和日志:
调试:显示程序运行中的详细信息(会产生I/O,正常情况下建议关闭)
调试级别:0,1,2,3...
提升调试级别:
rndctrace
rndctraceLEVEL
rndcnotrace
打开查询日志:记录查询动作(会增加磁盘I/O)
rndcquerylog
例如:
四、辅助DNS服务器的配置
注意:辅助DNS是针对区域来说的;如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将不向其发送通知;
主辅DNS之间的区域传送原理在上次博文中已经详细讨论过,这里就不在赘述。想要了解的可以看上一篇博文/article/4515251.html。
1、区域的定义:
[/code]
2、辅助DNS和区域传送的配置:
第一步:先创建一个辅助DNS(分别在LinuxSlave和win2008的虚拟主机中实现)
(1)在LinuxSlave主机上安装bind服务并做相应的配置:编辑/etc/named.rfc1912.zones,添加如下记录:
检查语法错误:
(2)在主DNS服务器所在的LinuxMaster主机上的区域文件/var/named/test.com.zone和/var/named/168.192.zone中添加相应的记录:
检查语法错误、重读配置文件:
在主DNS服务器上,用dig命令做下检测,看看新增加的记录是否出现:
【在windowsserver2008R2上配置辅助DNS】
准备工作:配置好网络,使得win2008虚拟机能够ping通主DNS服务器并安装好DNS相关组件。
打开DNS管理工具,创建辅助区域:
完成后右键区域点击刷新即从主DNS同步了区域:
随便点击几个资源记录看一下,发现都是灰色的无法编辑哈(辅助DNS的数据来自于主DNS,一般是只读的)
在主DNS服务器上查看日志,检验主辅DNS之间的区域传送:
第二步:实现从主DNS服务器完全同步区域数据文件,查看日志文件验证辅助服务器是否完成同步:
说明:以下的实验没有windows辅助DNS参与了,因此相应的NS记录和A记录被我手动删除了哈!
在辅助DNS服务器上用dig命令检测下是否能从主DNS服务器同步数据(完全区域传送)
在辅助DNS服务器上查看对应的区域文件是否已经有了:
再来看看辅助DNS上这些区域文件的内容是什么:
查看日志:
第三步:在主DNS服务器上新增一条资源记录并查看日志文件,然后到辅助DNS服务上查看日志是否完成增量区域数据同步
查看日志/var/log/messages发现,由于我忘记把序列号加1了,所以报错说序列号没有更改,同步到辅助DNS失败
把序列号加1后再来看日志:
在辅助DNS服务器上查看日志情况:
查看辅助DNS服务器上的区域文件:
一切OK哈!
第四步:在windows客户端用nslookup命令来验证辅助DNS的配置:
一切OK哈!
DNS服务器的基本配置就这么多哈,下面来简单总结下:
1、每个DNS服务器必须要有一个对应的NS资源记录;
2、创建slave的时候,其配置文件类型必须是typeslve;必须指定主服务器的IP地址;
3、可以使用dig-taxfrtest.com@server_IP从主DNS服务器拉取所有解析库资源记录;
4、主辅同步完成后,将自动在slave服务器上的slaves/目录下生成zone文件,这些区域文件是从主DNS同步过来的,一般为只读,不建议更改slave的zone文件;
5、在主DNS上修改区域文件时,必须将SOA记录的serial加1因为slave是通过serial值来进行判断更新的(windows系统上是自动完成的);
6、DNS的日志默认全部保存在/var/log/messege文件中;
7、DNS的解析依赖于解析库,所以就算是所配置的内容是完全不存在的也可以解析(且正向解析和反向解析的解析库是各自独立的)。需要注意,正向解析里没有PTR记录,而反向解析库里不需要A记录、MX记录和CNAME记录
本次博文的内容就这么多,下次博文主要讨论DNS安全、子域授权、acl、view、转发域及日志子系统。欢迎各位大大拍砖~~
本文出自“技术日志”博客,请务必保留此出处/article/4515252.html
上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器。
【本次博文的主要内容】
bind服务器简介(包括客户端工具dig的介绍)
配置正向解析DNS服务器
配置反向解析DNS服务器
配置辅助DNS服务器并在主辅之间实现区域传送
一、BIND服务器简介:
Bind是BerkeleyInternetNameDomainService的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国DARPA资助伯克利大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上半数以上的DNS服务器有都是用Bind来架设的。
【什么是“服务”及服务的特性】
1、什么是套接字:
套接字socket,简单来说就是IP:port(IP地址端口对)。以电话系统为例,电话的通话双方相当于相互通信的两个进程,区号是它的IP地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于socket号。任何用户在通话之前,首先要使用一部电话,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方的区号,相当于给出网络地址)。对方假如在场并空闲(相当于通信的另一主机开机且可以接收连接请求),拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话相当于关闭socket,撤销连接。
端口:
TCP:0~65535
UDP:0~65535
小于1024的端口为知名端口;Linux系统中0~1023的端口只有root用户有开放关闭的权利(服务都是以root用户身份启动,之后以一个系统用户的身份运行。)
例如:DNS服务监听在tcp的53号端口(DNS区域传送)和udp的53号端口,Web服务监听在TCP的80端口。
2、服务的特性:
运行于后台,处于监听(listen)状态
监听的原理:
如上图所示,
(1)当DNS服务端程序安装并启动之后,它首先通过socket()系统调用向内核注册使用一个套接字,并调用bind()系统调用将本地socket地址(包括本地主机地址和本地端口)与所创建的socket号联系起来。一旦注册成功,守护进程named就处于监听状态(即named进程处于阻塞状态,等待客户端的连接)。注意,服务器必须首先启动,直到它执行完socket()调用进入等待状态后,方能接受客户请求,假如客户机先启动,则connect()将返回出错代码,连接不成功。
(2)之后,DNS的请求报文发送到DNS的服务器的网卡上,而网卡是硬件,能够与硬件打交道的只有内核。内核内部的TCP/IP协议栈将请求报文解包查看其IP首部和TCP首部(即检查请求报文中的套接字是什么)。
(3)内核查看文件句柄fd(filedeiscriptor)数据库以确认是否有相关的应用程序进程注册了该套接字。如果有,则将请求报文发送给该进程。
Tips:以上是我对监听过程的简单理解,难免有错误之处,如发现错误还望指正哈!
3、DNS服务器类型:
缓存服务器:不负责解析,仅为加速,不需要注册
主DNS服务器:负责解析本地客户端请求
辅助DNS服务器:辅助服务器的区域数据都是从主服务器复制而来,其数据都是只读的
4、bind详解:
包名:bind
进程:named
协议:dns
使用端口:53(tcp,udp)
相关包:
bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性。
bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)
bind-libs:bind服务器端和客户端都使用到的公共库文件
bind-utils:bind客户端工具
程序文件:/usr/sbin/named
bind权限相关:
安装完named会自动创建用户named系统用户
Tips:早期Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越复杂,导致BUG和漏洞越来越多。黑客利用服务的漏洞入侵系统,能获得root级别的权限,从而控制整个系统。为了减缓这种攻击所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号(named)来运行进程。这种方式的好处在于该服务被攻击者利用漏洞入侵时,由于进程权限很低,攻击者得到的访问权限又是基于这个较低权限。
【配置文件】:
[root@CentOS01~]#rpm-qcbind /etc/logrotate.d/named/etc/named.conf#主配置文件 /etc/named.rfc1912.zones#区域配置文件(用include指令包含在主配置文件) /etc/named.root.key#根区域的key文件以实现事务签名; /etc/rndc.conf#rndc(远程名称服务器控制器)配置文件 /etc/rndc.key#rndc加密密钥 /etc/sysconfig/named /var/named/named.ca#13个根服务器存放文件/var/named/named.empty
/var/named/named.localhost /var/named/named.loopback
重点只需要关心主配置文件:
主配置文件:named.conf,每个语句都要使用分号结尾;其功能如下:
定义区域
定义各区域的全局配置
定义视图
定义日志
【bind客户端工具】
[root@Centos~]#rpm-qlbind-utils
/usr/bin/dig#最常用的DNS服务器测试工具
/usr/bin/host#一款轻量级DNS测试工具
/usr/bin/nslookup#DNS查询工具,在众多平台上都有实现(windows上也有)
/usr/bin/nsupdate#更新工具
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz
[/code]
dig命令:
语法:dig-t资源记录类型名称@server-ip
工作机制:
不加"@server-ip":根据/etc/resolv.conf配置的解析文件来查询
例如:
说明:
(1)加"@server-ip":根据指定的DNS服务器来解析,绕过了本地解析库中设置的DNS服务器。
(2)注意标志位:
注:dig命令不会查缓存,而是直接查服务器
例如:
常用选项:
dig-xIP@server-ip:查询反向解析
dig-t资源记录类型名称+trace:追踪解析过程
dig-taxfrzone:验证完全区域传送
host命令:
语法:host-t资源记录类型名称
例如:
二、DNS(bind)服务器的配置:
经过上面关于bind服务的介绍后,下面我们就来具体配置bind服务哈。我们的配置分四个:
配置正向解析的bind
配置反向解析的bind
配置辅助bind
实现主辅DNS之间的区域传送
【实验环境规划】
VMwarestation10
BIND服务器:两台CentOS6.4虚拟机做主辅DNS
一台windowsserver2008R2做辅助DNS
一台windows7做客户端
DomainName:test.com.192.168.1.0/24
主DNS:LinuxMaster.test.com.192.168.1.58
辅助DNS:LinuxSlave.test.com.192.168.1.59
Win2008Slave.test.com.192.168.80.3(在windows2008R2上实现)
web主机:www.test.com.192.168.1.58192.168.1.59192.168.80.3
ftp主机:ftp.test.com.CNAMEwww.test.com.
mx邮件服务器:mx.test.com.192.168.1.58
1、配置正向解析
【将一台主机配置成可正向解析的DNS之步骤】
第一步:使用YUM安装DNS所使用的软件包(BIND)
第二步:创建或修改主配置文件(/etc/named.conf)
第三步:创建区域数据文件(/var/named/***.zone)
第四步:使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误
第五步:确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
第六步:重启服务或重新加载配置文件
第七步:更改iptables和selinux的设置(如果不了解此两项可以暂时关闭它们)
第八步:分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录
具体配置过程如下:
第一步:通过yum安装bind:
[root@Centos~]#yuminstall-ybind
Loadedplugins:fastestmirror,security
Loadingmirrorspeedsfromcachedhostfile
SettingupInstallProcess
ResolvingDependencies
-->Runningtransactioncheck
--->Packagebind.x86_6432:9.8.2-0.17.rc1.el6willbeinstalled
-->ProcessingDependency:portreserveforpackage:32:bind-9.8.2-0.17.rc1.el6.x86_64
-->Runningtransactioncheck
--->Packageportreserve.x86_640:0.0.4-9.el6willbeinstalled
-->FinishedDependencyResolution
DependenciesResolved
==========================================================================================
PackageArchVersionRepositorySize
==========================================================================================
Installing:
bindx86_6432:9.8.2-0.17.rc1.el6cdrom4.0M
Installingfordependencies:
portreservex86_640.0.4-9.el6cdrom23k
TransactionSummary
==========================================================================================
Install2Package(s)
Totaldownloadsize:4.0M
Installedsize:7.3M
DownloadingPackages:
------------------------------------------------------------------------------------------
Total34MB/s|4.0MB00:00
Runningrpm_check_debug
RunningTransactionTest
TransactionTestSucceeded
RunningTransaction
Installing:portreserve-0.0.4-9.el6.x86_641/2
Installing:32:bind-9.8.2-0.17.rc1.el6.x86_642/2
Verifying:32:bind-9.8.2-0.17.rc1.el6.x86_641/2
Verifying:portreserve-0.0.4-9.el6.x86_642/2
Installed:
bind.x86_6432:9.8.2-0.17.rc1.el6
DependencyInstalled:
portreserve.x86_640:0.0.4-9.el6
Complete!
[/code]
第二步:自己创建或修改主配置文件(/etc/named.conf)
首先我们来看看主配置文件的内容哈:
[root@CentOS02~]#cat/etc/named.conf
//C/C++风格的语法,注释用//或/**/
//named.conf
//
//ProvidedbyRedHatbindpackagetoconfiguretheISCBINDnamed(8)DNS
//serverasacachingonlynameserver(asalocalhostDNSresolveronly).
//
//See/usr/share/doc/bind*/sample/forexamplenamedconfigurationfiles.
//
options{
listen-onport53{127.0.0.1;};
listen-on-v6port53{::1;};
directory "/var/named";//指明存放区域文件根目录,下面给出的相对路径都是相对此目录
dump-file "/var/named/data/cache_dump.db";
statistics-file"/var/named/data/named_stats.txt";
memstatistics-file"/var/named/data/named_mem_stats.txt";
allow-query{localhost;};//允许哪些主机查询
recursionyes;//是否允许递归查询
dnssec-enableyes;
dnssec-validationyes;
dnssec-lookasideauto;
/*PathtoISCDLVkey*/
bindkeys-file"/etc/named.iscdlv.key";
managed-keys-directory"/var/named/dynamic";
};
logging{//定义日志
channeldefault_debug{
file"data/named.run";
severitydynamic;
};
};
zone"."IN{//定义根区域文件名称
typehint;
file"named.ca";//使用的是相对路径,默认存放在/var/named/named.ca
};
//把另外两个文件也包含进来,作为主配置文件的一部分
include"/etc/named.rfc1912.zones";//定义区域配置文件
include"/etc/named.root.key";//根区域的key文件,与事务签名相关
[/code]
注释如下三行:
//listen-onport53{127.0.0.1;};
//listen-on-v6port53{::1;};
//allow-query{localhost;};
启动named服务:
验证named服务是否已经启动:
配置开机启动:
至此,一台缓存DNS服务器就配置好了!
【编辑区域配置文件/etc/named.rfc1912.zones】
在里面新建一个区域,格式如下:
zone"区域名称"IN{
typemaster|slave|forward;//注意每个语句要以分号结尾
file"ZONE_NAME.zone";
};//注意要以分号结尾
我们这里新建的区域如下:
第三步:创建区域数据文件(/var/named/***.zone)
在/var/named下建立“ZONE_NAME.zone”文件,通常只包含宏定义和资源记录,且第一个记录必须是SOA记录(格式如下);
$TTL600;
name[TTL]INRR_Typevalue
(1)一个FQDN可对应同多个IP;(负载均衡)
(2)多个FQDN可对应一个IP:(一台主机有多个名称,且可以用CNAME定义)
[/code]
注:以上各资源记录的写法及含义在上次博文中已经详细讨论过(
第四步:使用相关命令(named-checkconf、named-checkzone)测试配置文件及区域文件是否存在语法错误
第五步:确保主配置文件和各区域解析库文件的权限为640,属主为root,属组为named;
(1)检查主配置文件的权限:
(2)检查区域解析库文件/var/named/test.com.zone的权限:
更改权限:
第六步:重新启动服务或重新加载配置文件:
第七步:更改iptables和selinux的设置(如果不了解此两项可以暂时关闭它们)
第八步:分别使用(dig/nslookup)在Linux/Windows主机进行查询DNS相关资源记录
(1)使用dig命令在Linux主机上进行DNS资源查询:
(2)使用nslookup命令在Windows系统平台下测试DNS相关资源记录:
至此,一台能够正向解析的bind服务器就配置好了哈!
2、配置反向解析bind服务器:
正向解析与反向解析各自采用不同的解析库,一台DNS服务器可以只有正向解析库或只有反向解析库,也可以同时提供正向/反向解析。
反向区域的区域名称格式:
ReverseIP.in-addr.arpa.
例如:假设网络地址为172.16.100.1那么规则命名为100.16.172.in-addr.arpa
这里我本地的内网IP为192.168.1.0,所以则写成1.168.192.in-addr.arpa
第一步:修改配置文件/etc/named.conf,添加反向解析区域配置文件
第二步:创建反向区域解析文件168.192.zone
第三步:检查语法错误
第四步:设置权限
第五步:重新加载配置文件
第六步:用windows客户端验证解析:
至此,我们就把主bind服务器配置好了哈(既可以正向解析又可以反向解析)
三、rndc的相关知识:
1、什么是rndc:
RemoteNameDomainController,远程名称域控制器
rndc通过一个TCP连接与名字服务器通信,发送经过数字签名认证的命令。在当前版本的rndc和named中,唯一支持的认证算法是HMAC-MD5,在连接的两端使用共享密钥。它为命令请求和名字服务器的响应提供TSIG类型的认证。所有经由通道发送的命令都必须被一个服务器所知道的key_id签名。
监听端口:953/tcp
语法:
rndc[-baddress][-cconfig][-sserver][-pport]
[-kkey-file][-ykey][-V]command
commandisoneofthefollowing:
reloadReloadconfigurationfileandzones.#重新加载配置文件和区域文件
reconfigReloadconfigurationfileandnewzonesonly.#重新加载配置文件和新的区域文件
freezeSuspendupdatestoalldynamiczones.
statsWriteserverstatisticstothestatisticsfile.#将服务器统计信息写入统计文件中
stopSavependingupdatestomasterfilesandstoptheserver.
haltStoptheserverwithoutsavingpendingupdates.
flushFlushesalloftheserver'scaches.#清空DNS缓存
statusDisplaystatusoftheserver.#显示bind服务器的工作状态
[/code]
2、rndc的调试和日志:
调试:显示程序运行中的详细信息(会产生I/O,正常情况下建议关闭)
调试级别:0,1,2,3...
提升调试级别:
rndctrace
rndctraceLEVEL
rndcnotrace
打开查询日志:记录查询动作(会增加磁盘I/O)
rndcquerylog
例如:
四、辅助DNS服务器的配置
注意:辅助DNS是针对区域来说的;如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将不向其发送通知;
主辅DNS之间的区域传送原理在上次博文中已经详细讨论过,这里就不在赘述。想要了解的可以看上一篇博文
1、区域的定义:
zone“区域名称”IN{
typeslave;#区域类型为辅助
file"slaves/ZONE_NAME.zone";#区域文件必须保存在slaves目录下,放在其他目录没有权限
masters{#指出主服务器是谁,注意:花括号前后要有一个空格
MASTER_DNS_IP;
MASTER_DNS2_IP;
};
};
[/code]
2、辅助DNS和区域传送的配置:
第一步:先创建一个辅助DNS(分别在LinuxSlave和win2008的虚拟主机中实现)
(1)在LinuxSlave主机上安装bind服务并做相应的配置:编辑/etc/named.rfc1912.zones,添加如下记录:
检查语法错误:
(2)在主DNS服务器所在的LinuxMaster主机上的区域文件/var/named/test.com.zone和/var/named/168.192.zone中添加相应的记录:
检查语法错误、重读配置文件:
在主DNS服务器上,用dig命令做下检测,看看新增加的记录是否出现:
【在windowsserver2008R2上配置辅助DNS】
准备工作:配置好网络,使得win2008虚拟机能够ping通主DNS服务器并安装好DNS相关组件。
打开DNS管理工具,创建辅助区域:
完成后右键区域点击刷新即从主DNS同步了区域:
随便点击几个资源记录看一下,发现都是灰色的无法编辑哈(辅助DNS的数据来自于主DNS,一般是只读的)
在主DNS服务器上查看日志,检验主辅DNS之间的区域传送:
第二步:实现从主DNS服务器完全同步区域数据文件,查看日志文件验证辅助服务器是否完成同步:
说明:以下的实验没有windows辅助DNS参与了,因此相应的NS记录和A记录被我手动删除了哈!
在辅助DNS服务器上用dig命令检测下是否能从主DNS服务器同步数据(完全区域传送)
在辅助DNS服务器上查看对应的区域文件是否已经有了:
再来看看辅助DNS上这些区域文件的内容是什么:
查看日志:
第三步:在主DNS服务器上新增一条资源记录并查看日志文件,然后到辅助DNS服务上查看日志是否完成增量区域数据同步
查看日志/var/log/messages发现,由于我忘记把序列号加1了,所以报错说序列号没有更改,同步到辅助DNS失败
把序列号加1后再来看日志:
在辅助DNS服务器上查看日志情况:
查看辅助DNS服务器上的区域文件:
一切OK哈!
第四步:在windows客户端用nslookup命令来验证辅助DNS的配置:
一切OK哈!
DNS服务器的基本配置就这么多哈,下面来简单总结下:
1、每个DNS服务器必须要有一个对应的NS资源记录;
2、创建slave的时候,其配置文件类型必须是typeslve;必须指定主服务器的IP地址;
3、可以使用dig-taxfrtest.com@server_IP从主DNS服务器拉取所有解析库资源记录;
4、主辅同步完成后,将自动在slave服务器上的slaves/目录下生成zone文件,这些区域文件是从主DNS同步过来的,一般为只读,不建议更改slave的zone文件;
5、在主DNS上修改区域文件时,必须将SOA记录的serial加1因为slave是通过serial值来进行判断更新的(windows系统上是自动完成的);
6、DNS的日志默认全部保存在/var/log/messege文件中;
7、DNS的解析依赖于解析库,所以就算是所配置的内容是完全不存在的也可以解析(且正向解析和反向解析的解析库是各自独立的)。需要注意,正向解析里没有PTR记录,而反向解析库里不需要A记录、MX记录和CNAME记录
本次博文的内容就这么多,下次博文主要讨论DNS安全、子域授权、acl、view、转发域及日志子系统。欢迎各位大大拍砖~~
本文出自“
相关文章推荐
- Linux下MySQL导入导出数据
- Centos 7 远程桌面客户端
- Linux内核如何装载和启动一个可执行程序
- Linux之ssh连接保持与重用
- Linux 控制 配置 减少 交换分区 SWAP 虚拟内存使用
- Linux jar包 后台运行
- Linux jar包 后台运行
- linux进程调度策略
- linux 《vmware下克隆的centos无法配置固定ip》
- linux内核分析 第七周读书笔记
- linux ssh -l 命令运用
- Centos7 Ansible安装
- CentOS 6的系统启动流程
- lab7:Linux内核如何装载和启动一个可执行程序
- Linux学习(3)——文件管理命令
- 十款最常见的Linux发行版
- 苹果后门、微软垄断与Linux缺位
- Linux 下編輯 PDF 檔的工具
- Linux内核分析——可执行程序的装载
- vnc服务器的搭建