一、什么是DNS服务.

DNS服务是互联网的基础性服务之一.全称为Domain Name System(域名系统).DNS是因特网上作为域名和IP地址相互映射的一个分布式数据库,提供将域名转换成对应IP地址的信息条目,能够使用户更方便的通过域名(如baidu.com)去访问互联网,而不用去记住能够被机器直接读取的IP地址。这种将域名转换成ip地址的方法称为域名解析.

二、企业自建DNS的目的.

其实互联网上已有现成的DNS服务器,那么企业内部为什么还要自建DNS服务器呢?

主要原因如下:

节省内网域名解析占用的上网带宽;

方便解析内网服务器IP地址;

内网有域环境,域中的计算机通过内网的DNS定位域控制器(Windows)

...

三、DNS基础原理详解.

1、DNS采用C/S架构,服务器端工作在TCP/UDP协议的53号端口.是应用层的协议.

2、BIND: Bekerley Internet Name Domain (伯克利因特网名字域系统), ISC (www.isc.org)

3、对于DNS服务使用TCP和UDP协议的解释:

a. TCP:面向连接的协议; (每次连接前须三次握手,断开时须四次断开,使得传输一段很小的数据时浪费大量时间,所以dns多使用53/udp). b. UDP: User Datagram Protocol(用户数据报文协议), 无连接的协议

c. DNS在进行区域传送时使用TCP协议,其它时候则使用UDP协议;

d. TCP是一种可靠的连接,保证了数据的准确性。 e. named进程查询时使用的是UDP协议的53号端口发送UDP报文。响应通过UDP报文返回,除非他们大于512K,这种情况使用TCP。服务器之间的"区域传送"则都使用TCP。

4、区域传送:

当一个辅助(从)DNS服务器启动时,它需要与主DNS服务器通信,并加载(同步)数据信息,这就叫做区域传送(zone transfer)。 5、DNS域名:

根域:全球所有的DNS都要听从于它;

顶级域名:Top Level Domain:tld;

.com .edu .mil .gov .net .org ...

三类:组织域,国家域(.cn, .iq, .hk, .tw, ...),反向域

二级域名:

google.com youtube.com baidu.com ...

三级域名:

www.google.com mail.google.com stu.google.com

最多127级域名

6、DNS查询类型

a. 递归查询

客户端只发出一次请求一定要得到最终结果;(主机向本地域名服务器的查询一般都是采用递归查询.)

b. 迭代查询

服务器发出多次请求,层层请求后返回最终结果;(本地域名服务器向根域名服务器的查询(域名服务器之间的查询)一般都是采用迭代查询)

图解:

  1. 名称服务器: 域内负责解析本域内名称的主机; 根服务器: 指13组服务器,异地多活.
  2. DNS解析类型:

正向解析: Name --> IP (绝大多数都能正向解析)

反向解析: IP --> Name (部分解析不了,该解析类型常用在邮件服务反向解析,来判断是否为垃圾邮件)

注:正反向解析是两个不同的名称空间,是两棵不同的解析树;

  1. DNS服务器的类型:

主DNS服务器 辅助(从)DNS服务器 缓存DNS服务器 转发器

主DNS服务器:维护所负责解析的域内解析库服务器;解析库由管理员维护;
从DNS服务器:从主DNS服务器或其他的从DNS服务器那里"复制"(区域传送)一份解析库;
从DNS服务器到主DNS服务器处的传送,之间有一系列定义,主要定义在SOA资源记录当中,包括:
序列号:解析库的版本号(同步后主从一致);前提是主服务器解析库内容发生变化,其序列号递增(每
次加1);(数字最长不要超过十位);
刷新时间:从服务器从主服务器请求同步解析库的时间间隔;
重试时间间隔:从服务器从主服务器请求同步解析库失败时,再次尝试的时间间隔,重试时间须小于刷
新时间,否则无意义.
过期时长:从服务器始终联系不到主服务器时,多久之后放弃从服务器角色,停止提供服务;
通知"机制:主服务器发生变化后,会通知从服务器及时更新解析库,即使更新时间没到也会通知从服
务器,避免从服务器落后主服务器太多.

  1. 区域传送类型:

a. 全量传送:传送整个解析库; b. 增量传送:传送解析库发生变化的那部分内容;

  1. 对从服务器及区域传送的理解:

从服务器要从主服务器同步.首先,从服务器如何知道主服务器已更新解析库? 主要在于序列号,主服务器每更新一次解析库,序列号都会主动加1; 正常情况下,主从服务器的序列号相同.从服务器通过刷新时间从主服务器处对比序列号并请求同步解析库的时间间隔.还有重试时间间隔和过期时长.

  1. 一次完整的查询/解析请求经过的流程: Client --> 本地hosts文件 --> DNS Service Local Cache -->DNS Server(Iesursion) --> Server Cache-->Iteration
  2. 区域解析库:

由众多RR组成; 资源记录: Resource Record, RR 记录类型: A, AAAA, PTR, SOA, NS, CNAME, MX等 SOA: Start Of Authority,起始授权记录,一个区域解析库有且仅能有一个SOA记录,而且必须为解析库的第一条记录; A: internet Address, 作用:FQDN --> IP AAAA: FQDN --> IPv6 PTR: PointTeR, IP -->FQDN NS: Name Server,专用于标明当前区域的DNS服务器 CNAME: Canonical Name,别名记录.正式名称 MX: Mail exchanger, 邮件交换器 资源记录定义的格式: 语法:name [TTL] IN rr_type value 注意: (1) TTL可从全局继承; (2) @可用于引用当前区域的名字; (3) 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应; (4) 同一个值也会有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义; SOA: name:当前区域的名字,例如"baidu.com."; value:有多部分组成 (1)当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字; (2)当前区域管理员的邮箱地址;但地址中不能用@符号,一般用.替换,如linuxedu.163.com (3)主从服务协调属性的定义以及否定的答案的统一的TTL. 例如:

baidu.com.86400INSOAns.baidu.com.nsadmin.baidu.com.(
2015042201;序列号
2H;刷新时间
10M;重试时间
1W;过期时间
1D;否定答案的TTL值
)
注:不带单位,默认为秒钟; NS: name:当前区域的名字; value:当前区域的某DNS服务器的名字,例如 ns.baidu.com.; 注:一个区域可以有多个NS记录;例如:

baidu.com.INNSns1.baidu.com.//此处nsx.baidu.com.可写成nsx(注:nsx后面没有点号)

baidu.com.INNSns2.baidu.com.
注: (1)相邻的两个资源记录的name相同时,后续的可省略; (2)对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录; MX: name: 当前区域的名字; value: 当前区域的某邮件服务器(smtp服务器)的主机名; 注:一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高; 例:


baidu.com.INMX10mx1.baidu.com.
INMX20mx2.baidu.com.

注: (1)对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录; A: name:其主机的FQDN,例如www.baidu.com. value:主机名对应主机的IP地址;

例:

www.baidu.com.INA1.1.1.1
www.baidu.com.INA1.1.1.2

mx1.baidu.com.INA1.1.1.3
mx2.baidu.com.INA1.1.1.3

注: 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址,如下:

*.baidu.com.INA1.1.1.4
baidu.com.INA1.1.1.4
AAAA: name:FQDN value: IPv6 PTR: name: IP ,有特定格式; value: FQDN

注: name处的IP有特定格式,需要把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而且有特定后缀:.in-addr.arpa.,所以完整写法为:4.3.2.1.in-addra.arpa. 例如:

4.3.2.1.in-addr.arpaINPTRwww.baidu.com
简写成:
4INPTRwww.baidu.com.
注:网络地址及后缀可省略;主机地址依然需要反着写: CNAME: name: 别名的FQDN; value: 正规名字的FQDN; 例:

web.baidu.com.INCNAMEwww.baidu.com.

  1. 子域授权:

每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权;

类似根域授权tld:

.com.INNSns1.com
.com.INNSns2.com
ns1.com.INA2.2.2.1
ns2.com.INA2.2.2.2
baidu.com. 在.com的名称服务器上,解析库中添加资源记录;

baidu.com.INNSns1.baidu.com.
baidu.com.INNSns2.baidu.com.
baidu.com.INNSns3.baidu.com.
ns1.baidu.com.INA3.3.3.1
ns2.baidu.com.INA3.3.3.2
ns3.baidu.com.INA3.3.3.3
  1. BIND的安装配置: dns服务,程序包名bind, 程序名named 程序包: bind.X86_64 提供服务 bind-libs 提供库文件 bind-utils 提供测试服务,测试服务是否ok
#rpm-qlbind-utils
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
/usr/bin/nsupdate
bind-chroot: /var/named/chroot/ bind-chroot.x86_64 测试环境不可安装. 安全性.



bind: 服务脚本: /etc/rc.d/init.d/named 主配置文件: /etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key 解析库文件: /var/named/ZONE_NAME.ZONE 分正向和反向. named守护进程–用来回答查询结果



[root@localhostnamed]#pwd
/var/named
[root@localhostnamed]#catnamed.localhost
$TTL1D
@[email protected].(
0;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
NS@
A127.0.0.1
AAAA::1
[root@localhostnamed]#
[root@localhostnamed]#catnamed.loopback
$TTL1D
@[email protected].(
0;serial
1D;refresh
1H;retry
1W;expire
3H);minimum
NS@
A127.0.0.1
AAAA::1
PTRlocalhost.
[root@localhostnamed]#

注: (1) 一台物理服务器可同时为多个区域提供解析; (2) 必须要有根区域文件:/var/named/named.ca (3) 应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库; rndc:

remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性的管理功能; 953/tcp 主配置文件: 全局配置:options {} 日志子系统配置:logging {} 区域定义: 本机能够为哪些zone进行解析,就要定义哪些zone; zone "ZONE_NAME" IN {} 注意:任何服务程序如果期望其能够通过网络被其他主机访问,至少应该监听在一个能够与外部主机通信的IP地址上;

四、各类型服务器配置介绍:

缓存DNS服务器:

修改配置文件/etc/named.conf,使DNS服务53号端口监听于外部地址即可;

dnssec作用:防止DNS被污染; 配置麻烦,建议测试做实验时关闭dnssec;即改为no

  1. 主DNS名称服务器: 在缓存名称服务器的基础上加zone的定义即可; (1)在主配置文件/etc/named.rfc1912.zones中定义区域 zone "ZONE_NAME" IN { type {master|slave|hint|forward}; file "ZONE_NAME.zone"; //区域解析库文件路径 }; (2)定义区域解析库文件 出现的内容: 宏(变量)定义; 资源定义;

反向区域配置:

区域名称:网络地址反写.in-addr. 172.16.100. --> 100.16.172.in-addr.arpa. 保留不变的部分当做区域名字 定义区域 zone "ZONE_NAME" IN { type {master|slave|forward}; file "网络地址.zone" };

注: 不需要MX和A,以及AAAA记录,以PTR记录为主;

正向区域中的别名记录(CNAME)在反向区域不需要反解.

3.:通过区域传送实现主从同步:

配置一台正向从DNS服务器:

定义从区域的方法: zone "ZONE_NAME" IN { type slave; masters { MASTER_IP; }; file "slaves/ZONE_NAME.zone"; };

总结: 1: 从服务器应该为一台独立的名称服务器; 2: 主服务器的区域解析库文件中必须有一条NS记录是指向从服务器的; 3: 从服务器只需要定义区域,而无需提供解析库文件;如果是采用rpm方法安装的,解析库文件应该放置于/var/named/slaves目录中;否则需要改/var/named 目录的权限,不然写不进去. 4: 主服务器得允许从服务器作区域传送;区域传送对方会获取本区域的所有解析记录,很危险,应选择性开放; 5: 主从服务器时间应该同步,可通过ntp进行; 6: bind程序的版本应该保持一致;否则,应该从高,主低,达到兼容性要求; 7: 一个区域内只能有一个主DNS服务器,但可以有多个从DNS服务器.一主一从或一主多从

  1. 检查配置语法是否错误的命令:

named-checkconf #named-checkzone 5. 查看服务器的当前系统状态: # rndc status 6.测试命令:

dig的使用 dig [-t type] name [@SERVER] [query options] dig用于测试dns系统,因此不会查询hosts文件进行解析; 查询选项: +[no]trace: 跟踪解析过程 +[no]recurse: 进行递归解析 测试反向解析: dig -x IP @SERVER 模拟区域传送: --查看区域中的所有资源记录,比较危险. dig -t axfr ZONE_NAME @SERVER 资源记录中的某台客户机想解析dns,如果报错,可能是因为防火墙导致的 解析时,如果将该DNS服务器的IP写入本机/etc/resolv.conf文件下,则之后测试时无需在命令行末尾加该DNS Server IP.

host命令: host [-t type] name [SERVER] nslookup命令: nslookup [-t type] [name | -] [server] 交互式模式: nslookup> server IP:指明使用哪个DNS server进行查询; set q=RR TYPE:指明查询的资源记录类型; NAME:要查询的名称;

rndc命令: rndc --> rndc (953/tcp) rndc COMMAND COMMAND: -h: 显示详细帮助信息; reload:重载主配置文件和区域解析库文件; reload zone:重载区域解析库文件; retransfer zone:手动启动区域传送过程,而不管序列号是否增加; notify zone:重新对区域传送发通知; reconfig:重载主配置文件; querylog:开启或关闭查询日志; trace:递增debug级别; //y用于调试排错.正常生产环境须关闭; trace LEVEL:指定使用的级别; [ LEVEL 为数字,自己指定 ] 关于[querylog:开启或关闭查询日志]的详解: 开启查询日志可通过查看log查看到查询日志,此项会消耗系统IO,一般只在排查错误时使用,平时无需打开;

实验部分

实验环境:

CentOS6.7 x 3, Windows7 x 1

主机名:

DNS-master -- 10.68.7.235

DNS-slave -- 10.68.7.231

http -- 10.68.7.234

Windows-Client -- 10.68.7.236

实验要求:

一. 配置缓存域名服务器

二. 配置正向解析和反向解析域名服务器

三. 通过区域传送实现主从同步

四. 搭建http服务,开启windows主机,配好DNS进行访问:

一、配置缓存域名服务器:

配置主配置文件:

[root@DNS-master~]#yum-yinstallbindbind-utilsbind-lib
[root@DNS-master~]#rpm-qabind*
bind-utils-9.8.2-0.37.rc1.el6.x86_64
bind-libs-9.8.2-0.37.rc1.el6.x86_64
bind-9.8.2-0.37.rc1.el6.x86_64
[root@DNS-master~]#servicenamedstart
Generating/etc/rndc.key:[OK]
Startingnamed:[OK]
[root@DNS-master~]#
[root@DNS-master~]#cp/etc/named.conf{,.bak}
[root@DNS-master~]#vim/etc/named.conf
options{
//listen-onport53{127.0.0.1;};//该行为初始行,使用双斜线注释(因为该配置文件为C或C++写成,所以注释符号用//而不用#).
listen-onport53{10.68.7.235;127.0.0.1;};//修改初始行为该行,添加本机IP或外部IP,以期望其能够通过网络被其他主机访问;并添加本地回环地址,以便本机能够解析到.本行也可以删除不要,实现效果相同.
//listen-on-v6port53{::1;};
directory"/var/named";//此项定义工作目录,也就是区域解析库文件路径.此项是关键,其他项都是为安全而设定的.推荐将所有与BIND相关的配置文件(除了named.conf和resolv.conf)放在/var之下的子目录中。例如/var/nam
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{any;};//此项表示允许谁来查询,any表示任何主机.或者可以直接注释掉,注释掉默认为允许任何主机查询.
recursionyes;//此项表示是否允许递归查询.

//dnssec-enableyes;//该行及以下几行通通注释掉;最好把yes改为no,安全设定,可能会影响后面实验的验证.
//dnssec-validationyes;
//dnssec-lookasideauto;

/*PathtoISCDLVkey*/
//bindkeys-file"/etc/named.iscdlv.key";

//managed-keys-directory"/var/named/dynamic";
};
...
[root@DNS-master~]#servicenamedrestart
Stoppingnamed:[OK]
Startingnamed:[OK]
[root@DNS-master~]#
[root@DNS-master~]#ss-tunlp|grep53
udpUNCONN0010.68.7.235:53*:*users:(("named",2510,513))
udpUNCONN00127.0.0.1:53*:*users:(("named",2510,512))
udpUNCONN00::1:53:::*users:(("named",2510,514))
tcpLISTEN03::1:53:::*users:(("named",2510,22))
tcpLISTEN0310.68.7.235:53*:*users:(("named",2510,21))
tcpLISTEN03127.0.0.1:53*:*users:(("named",2510,20))
tcpLISTEN0128::1:953:::*users:(("named",2510,24))
tcpLISTEN0128127.0.0.1:953*:*users:(("named",2510,23))
[root@DNS-master~]#

以上配置完即为缓存名称服务器的配置:监听外部地址即可; 二. 配置主域名服务器的正向解析:

在缓存DNS服务器的基础上添加zone定义

[root@DNS-master~]#vim/var/named/yangbin.com.zone
$TTL1D
$ORIGINyangbin.com.
@INSOAns1.yangbin.comadmin.yangbin.com.(
2016120701
2H
5M
7D
1D
)
INNSns1.yangbin.com.
INNSns2.yangbin.com.
INMX10mx1.yangbin.com.
INMX20mx2.yangbin.com.//该处几行.yangbin.com.可省略。省略后后面没有小数点.


ns1INA10.68.7.235
ns2INA10.68.7.231
mx1INA10.68.7.232
mx2INA10.68.7.233
wwwINA10.68.7.234//这些域名对应的IP,即主机不存在也没关系.也可以一个名称对应多个IP.
webINCNAMEwww

注:

$TTL 1D:

此处可用1D或1d或86400,该时间可自定义,时间越短,缓存有效期就越短,向服务器发起查询请求的次数也就越多,缓存时间越短,服务器压力越大,生成缓存生效的时间越快,反之亦然.

$ORIGIN keeny.xin.:

此处的宏表示当之后所写的名称为相对名称时,会自动在后边补上keeny.xin. ,当然此项也可省略不写,系统会自动这么做.

admin.yangbin.com.: 表示管理员的邮箱,@符号用点号.代替;

在主配置文件/etc/named.rfc1912.zones中定义区域:

[root@DNS-master~]#vim/etc/named.rfc1912.zones
...

结尾添加:

zone"yangbin.com"IN{
typemaster;
file"/var/named/yangbin.com.zone";
allow-update{none;}
};

检查配置文件语法:

[root@DNS-master~]#named-checkconf
[root@DNS-master~]#
[root@DNS-master~]#named-checkzone"yangbin.com"/var/named/yangbin.com.zone
zoneyangbin.com/IN:loadedserial2016120701
OK
[root@DNS-master~]#

查看文件权限,禁止普通用户随意访问从而获悉公司服务器数量:

[root@DNS-master~]#psaux|grepnamed
named25100.01.419314014616?Ssl02:200:00/usr/sbin/named-unamed
root28870.00.0103304892pts/0S+03:020:00grepnamed
[root@DNS-master~]#ll/etc/named.conf
-rw-r-----.1rootnamed1089Aug3002:20/etc/named.conf
[root@DNS-master~]#ll/var/named
total32
drwxrwx---.2namednamed4096Aug3002:13data
drwxrwx---.2namednamed4096Aug3002:13dynamic
-rw-r-----.1rootnamed2075Apr232014named.ca
-rw-r-----.1rootnamed152Dec152009named.empty
-rw-r-----.1rootnamed152Jun212007named.localhost
-rw-r-----.1rootnamed168Dec152009named.loopback
drwxrwx---.2namednamed4096Jul242015slaves
-rw-r--r--.1rootroot451Aug3002:57yangbin.com.zone
[root@DNS-master~]#idnamed
uid=25(named)gid=25(named)groups=25(named)
[root@DNS-master~]#chown:named/var/named/yangbin.com.zone
[root@DNS-master~]#servicenamedrestart
Stoppingnamed:.[OK]
Startingnamed:[OK]
[root@DNS-master~]#

此时,正向解析区域配置完毕!

查看系统当前状态:

[root@DNS-master~]#rndcstatus
version:9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6
CPUsfound:4
workerthreads:4
numberofzones:20
debuglevel:0
xfersrunning:0
xfersdeferred:0
soaqueriesinprogress:0
queryloggingisOFF
recursiveclients:0/0/1000
tcpclients:0/100
serverisupandrunning
[root@DNS-master~]#

通过dig命令在本机测试查询解析:

[root@DNS-master~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
;;Gotanswer:
;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:63733
;;flags:qraardra;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:2

;;QUESTIONSECTION:
;www.yangbin.com.INA

;;ANSWERSECTION:
www.yangbin.com.86400INA10.68.7.234

;;AUTHORITYSECTION:
yangbin.com.86400INNSns2.yangbin.com.
yangbin.com.86400INNSns1.yangbin.com.

;;ADDITIONALSECTION:
ns1.yangbin.com.86400INA10.68.7.235
ns2.yangbin.com.86400INA10.68.7.231

;;Querytime:0msec
;;SERVER:10.68.7.230#53(10.68.7.230)
;;WHEN:TueAug3003:23:232016
;;MSGSIZErcvd:117



[root@DNS-master~]#
在从DNS服务器进行测试,把DNS地址指向主DNS服务器:

[root@DNS-slave~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
;;Gotanswer:
;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:32698
;;flags:qraardra;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:2

;;QUESTIONSECTION:
;www.yangbin.com.INA

;;ANSWERSECTION:
www.yangbin.com.86400INA10.68.7.234

;;AUTHORITYSECTION:
yangbin.com.86400INNSns2.yangbin.com.
yangbin.com.86400INNSns1.yangbin.com.

;;ADDITIONALSECTION:
ns1.yangbin.com.86400INA10.68.7.235
ns2.yangbin.com.86400INA10.68.7.231

;;Querytime:0msec
;;SERVER:10.68.7.235#53(10.68.7.235)
;;WHEN:TueAug3003:38:002016
;;MSGSIZErcvd:117

[root@DNS-slave~]#

注:

1、生产环境下修改相关配置文件后,不能restart,应该使用reload:

# service named reload

2、当一个域名配置有一个以上的ip地址时,查询时会进行轮询.

配置主域名服务器的反向解析服务器

不需要MX和A,以及AAAA记录,以PTR记录为主,别名记录(CNAME)不需要反解.

[root@DNS-master~]#vim/var/named/7.68.10.in-addr.arpa
$TTL1D
$ORIGIN7.68.10.in-addr.arpa.
@INSOAns1.yangbin.comadmin.yangbin.com.(
2016120701
2H
5M
7D
1D
)
INNSns1.yangbin.com.
INNSns2.yangbin.com.
INMX10mx1.yangbin.com.
INMX20mx2.yangbin.com.
235INPTRns1
231INPTRns2
232INPTRmx1
233INPTRmx2
234INPTRwww
[root@DNS-master~]#vim/etc/named.rfc1912.zones
zone"7.68.10.in-addr.arpa"IN{
typemaster;
file"7.68.10.in-addr.arpa";
allow-update{none;};
};
[root@DNS-master~]#named-checkzone"7.68.10.in-addr.arpa"/var/named/7.68.10.in-addr.arpa
zone7.68.10.in-addr.arpa/IN:getaddrinfo(mx1.yangbin.com)failed:Temporaryfailureinnameresolution
zone7.68.10.in-addr.arpa/IN:getaddrinfo(mx2.yangbin.com)failed:Temporaryfailureinnameresolution
zone7.68.10.in-addr.arpa/IN:loadedserial2016120701
OK
//mx1和mx2服务器没有打开,所以此处报错,可以不用理会,解析不受影响.


[root@DNS-master~]#ll/var/named/
total36
-rw-r--r--.1rootroot394Aug3004:107.68.10.in-addr.arpa
drwxrwx---.2namednamed4096Aug3002:13data
drwxrwx---.2namednamed4096Aug3003:14dynamic
-rw-r-----.1rootnamed2075Apr232014named.ca
-rw-r-----.1rootnamed152Dec152009named.empty
-rw-r-----.1rootnamed152Jun212007named.localhost
-rw-r-----.1rootnamed168Dec152009named.loopback
drwxrwx---.2namednamed4096Jul242015slaves
-rw-r--r--.1rootnamed451Aug3003:36yangbin.com.zone
[root@DNS-master~]#chown:named/var/named/7.68.10.in-addr.arpa
[root@DNS-master~]#chmod640/var/named/{7.68.10.in-addr.arpa,yangbin.com.zone}
[root@DNS-master~]#ll/var/named/
total36
-rw-r-----.1rootnamed394Aug3004:107.68.10.in-addr.arpa
drwxrwx---.2namednamed4096Aug3002:13data
drwxrwx---.2namednamed4096Aug3003:14dynamic
-rw-r-----.1rootnamed2075Apr232014named.ca
-rw-r-----.1rootnamed152Dec152009named.empty
-rw-r-----.1rootnamed152Jun212007named.localhost
-rw-r-----.1rootnamed168Dec152009named.loopback
drwxrwx---.2namednamed4096Jul242015slaves
-rw-r-----.1rootnamed451Aug3003:36yangbin.com.zone
[root@DNS-master~]#
[root@DNS-master~]#servicenamedstart
Startingnamed:[OK]
[root@DNS-master~]#
[root@DNS-master~]#rndcstatus
version:9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6
CPUsfound:4
workerthreads:4
numberofzones:21
debuglevel:0
xfersrunning:0
xfersdeferred:0
soaqueriesinprogress:0
queryloggingisOFF
recursiveclients:0/0/1000
tcpclients:0/100
serverisupandrunning
[root@DNS-master~]#

检查语法出现的错误:

[root@DNS-master~]#named-checkzone"7.68.10.in-addr.arpa"/var/named/10.68.7.101.zone.arpa
/var/named/10.68.7.235.zone.arpa:3:SOArecordnotattopofzone(7.68.10.in-addr.arpa.7.68.10.in-addr.arpa)
zone7.68.10.in-addr.arpa/IN:loadingfrommasterfilear/named/10.68.7.101.zone.arpafailed:notattopofzone
zone7.68.10.in-addr.arpa/IN:notloadedduetoerrors.

解决办法:

[root@DNS-master~]#vim/var/named/7.68.10.in-addr.arpa
$ORIGIN7.68.10.in-addr.arpa.//该行直接不要写或者结尾不要忘记加点号(.);

验证:

用本机验证:

[root@DNS-master~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
;;Gotanswer:
;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:53809
;;flags:qraardra;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:2

;;QUESTIONSECTION:
;232.7.68.10.in-addr.arpa.INPTR

;;ANSWERSECTION:
232.7.68.10.in-addr.arpa.86400INPTRmx1.7.68.10.in-addr.arpa.

;;AUTHORITYSECTION:
7.68.10.in-addr.arpa.86400INNSns2.yangbin.com.
7.68.10.in-addr.arpa.86400INNSns1.yangbin.com.

;;ADDITIONALSECTION:
ns1.yangbin.com.86400INA10.68.7.235
ns2.yangbin.com.86400INA10.68.7.231

;;Querytime:0msec
;;SERVER:10.68.7.235#53(10.68.7.235)
;;WHEN:TueAug3004:21:252016
;;MSGSIZErcvd:139

[root@DNS-master~]#

在slave机器上验证:

[root@DNS-slave~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
;;Gotanswer:
;;->>HEADER<<-opcode:QUERY,status:NOERROR,id:16793
;;flags:qraardra;QUERY:1,ANSWER:1,AUTHORITY:2,ADDITIONAL:2

;;QUESTIONSECTION:
;234.7.68.10.in-addr.arpa.INPTR

;;ANSWERSECTION:
234.7.68.10.in-addr.arpa.86400INPTRwww.7.68.10.in-addr.arpa.

;;AUTHORITYSECTION:
7.68.10.in-addr.arpa.86400INNSns1.yangbin.com.
7.68.10.in-addr.arpa.86400INNSns2.yangbin.com.

;;ADDITIONALSECTION:
ns1.yangbin.com.86400INA10.68.7.235
ns2.yangbin.com.86400INA10.68.7.231

;;Querytime:36msec
;;SERVER:10.68.7.235#53(10.68.7.235)
;;WHEN:TueAug3004:22:102016
;;MSGSIZErcvd:139

[root@DNS-slave~]#

在slave机器上模拟全量区域传送: 可以得到对方正向区域所有的资源记录:

[root@DNS-slave~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
yangbin.com.86400INSOAns1.yangbin.com.yangbin.com.admin.yangbin.com.2016120701720030060480086400
yangbin.com.86400INNSns1.yangbin.com.
yangbin.com.86400INNSns2.yangbin.com.
yangbin.com.86400INMX10mx1.yangbin.com.
yangbin.com.86400INMX20mx2.yangbin.com.
mx1.yangbin.com.86400INA10.68.7.232
mx2.yangbin.com.86400INA10.68.7.233
ns1.yangbin.com.86400INA10.68.7.235
ns2.yangbin.com.86400INA10.68.7.231
web.yangbin.com.86400INCNAMEwww.yangbin.com.
www.yangbin.com.86400INA10.68.7.234
yangbin.com.86400INSOAns1.yangbin.com.yangbin.com.admin.yangbin.com.2016120701720030060480086400
;;Querytime:20msec
;;SERVER:10.68.7.235#53(10.68.7.235)
;;WHEN:TueAug3004:25:272016
;;XFRsize:12records(messages1,bytes301)

[root@DNS-slave~]#

在slave机器上模拟全量区域传送: 可以得到对方反向区域所有的资源记录:

[root@DNS-slave~]#[email protected]

;<<>>DiG9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6<<>>[email protected]
;;globaloptions:+cmd
7.68.10.in-addr.arpa.86400INSOAns1.yangbin.com.7.68.10.in-addr.arpa.admin.yangbin.com.2016120701720030060480086400
7.68.10.in-addr.arpa.86400INNSns1.yangbin.com.
7.68.10.in-addr.arpa.86400INNSns2.yangbin.com.
7.68.10.in-addr.arpa.86400INMX10mx1.yangbin.com.
7.68.10.in-addr.arpa.86400INMX20mx2.yangbin.com.
231.7.68.10.in-addr.arpa.86400INPTRns2.7.68.10.in-addr.arpa.
232.7.68.10.in-addr.arpa.86400INPTRmx1.7.68.10.in-addr.arpa.
233.7.68.10.in-addr.arpa.86400INPTRmx2.7.68.10.in-addr.arpa.
234.7.68.10.in-addr.arpa.86400INPTRwww.7.68.10.in-addr.arpa.
235.7.68.10.in-addr.arpa.86400INPTRns1.7.68.10.in-addr.arpa.
7.68.10.in-addr.arpa.86400INSOAns1.yangbin.com.7.68.10.in-addr.arpa.admin.yangbin.com.2016120701720030060480086400
;;Querytime:1msec
;;SERVER:10.68.7.235#53(10.68.7.235)
;;WHEN:TueAug3004:27:432016
;;XFRsize:11records(messages1,bytes329)

[root@DNS-slave~]#

主服务器已配置完毕!

三. 通过区域传送实现主从同步

配置一台正向从DNS服务器:

[root@DNS-slave~]#yum-yinstallbind
[root@DNS-slave~]#vim/etc/named.conf
options{
listen-onport53{10.68.7.231;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{any;};
recursionyes;

dnssec-enableno;
dnssec-validationno;
dnssec-lookasideauto;

/*PathtoISCDLVkey*/
//bindkeys-file"/etc/named.iscdlv.key";

//managed-keys-directory"/var/named/dynamic";
};
...

[root@DNS-slave~]#vim/etc/named.rfc1912.zones
zone"yangbin.com"IN{
typeslave;
masters{10.68.7.235;};
file"slaves/yangbin.com.zone";
};
[root@DNS-slave~]#ll/var/named
total28
drwxrwx---.2namednamed4096Jul242015data
drwxrwx---.2namednamed4096Jul242015dynamic
-rw-r-----.1rootnamed2075Apr232014named.ca
-rw-r-----.1rootnamed152Dec152009named.empty
-rw-r-----.1rootnamed152Jun212007named.localhost
-rw-r-----.1rootnamed168Dec152009named.loopback
drwxrwx---.2namednamed4096Jul242015slaves//系统已自动准备好供写入的文件(file)slaves目录.
[root@DNS-slave~]#

注意:
必须在主服务器的配置文件下有从服务器的ns记录,且ns名称对应的IP为从服务器的IP才行;
启动服务然后查看日志信息:

[root@DNS-slave~]#servicenamedstart
Generating/etc/rndc.key:[OK]
Startingnamed:[OK]
[root@DNS-slave~]#less/var/log/messages
Aug3004:47:26DNS-slavenamed[3287]:zoneyangbin.com/IN:Transferstarted.
Aug3004:47:26DNS-slavenamed[3287]:transferof'yangbin.com/IN'from10.68.7.235#53:connectedusing10.68.7.231#5802
4
Aug3004:47:26DNS-slavenamed[3287]:zoneyangbin.com/IN:transferredserial2016120701
Aug3004:47:26DNS-slavenamed[3287]:transferof'yangbin.com/IN'from10.68.7.235#53:Transfercompleted:1messages,
12records,301bytes,0.001secs(301000bytes/sec)
[root@DNS-slave~]#cat/var/named/slaves/yangbin.com.zone
$ORIGIN.
$TTL86400;1day
yangbin.comINSOAns1.yangbin.com.yangbin.com.admin.yangbin.com.(
2016120701;serial
7200;refresh(2hours)
300;retry(5minutes)
604800;expire(1week)
86400;minimum(1day)
)
NSns1.yangbin.com.
NSns2.yangbin.com.
MX10mx1.yangbin.com.
MX20mx2.yangbin.com.
$ORIGINyangbin.com.
mx1A10.68.7.232
mx2A10.68.7.233
ns1A10.68.7.235
ns2A10.68.7.231
webCNAMEwww
wwwA10.68.7.234
[root@DNS-slave~]#

没有问题!

在主DNS服务器修改区域文件,然后再在slave服务器作区域传送查看结果:

[root@DNS-master~]#vim/var/named/yangbin.com.zone
...

序列号加1
增加如下行:

ftpINA10.68.7.238
[root@DNS-master~]#rndcreload
serverreloadsuccessful

主服务器重载服务器查看结果:

[root@DNS-slave~]#rndcreload
[root@DNS-slave~]#tail-20/var/log/messages
Aug3005:07:02DNS-slavenamed[3287]:client10.68.7.235#34827:receivednotifyforzone'yangbin.com'
Aug3005:07:02DNS-slavenamed[3287]:zoneyangbin.com/IN:Transferstarted.
Aug3005:07:02DNS-slavenamed[3287]:transferof'yangbin.com/IN'from10.68.7.235#53:connectedusing10.68.7.231#44271
Aug3005:07:02DNS-slavenamed[3287]:zoneyangbin.com/IN:transferredserial2016120702
Aug3005:07:02DNS-slavenamed[3287]:transferof'yangbin.com/IN'from10.68.7.235#53:Transfercompleted:1messages,12records,301bytes,0.002secs(150500bytes/sec)
Aug3005:07:02DNS-slavenamed[3287]:zoneyangbin.com/IN:sendingnotifies(serial2016120702)
Aug3005:07:03DNS-slavenamed[3287]:client10.68.7.235#9138:receivednotifyforzone'7.68.10.in-addr.arpa':notauthoritative
[root@DNS-slave~]#
[root@DNS-slave~]#cat/var/named/slaves/yangbin.com.zone
$ORIGIN.
$TTL86400;1day
yangbin.comINSOAns1.yangbin.com.yangbin.com.admin.yangbin.com.(
2016120702;serial
7200;refresh(2hours)
300;retry(5minutes)
604800;expire(1week)
86400;minimum(1day)
)
NSns1.yangbin.com.
NSns2.yangbin.com.
MX10mx1.yangbin.com.
MX20mx2.yangbin.com.
$ORIGINyangbin.com.
ftpA10.68.7.238
mx1A10.68.7.232
mx2A10.68.7.233
ns1A10.68.7.235
ns2A10.68.7.231
webCNAMEwww
wwwA10.68.7.234
[root@DNS-slave~]#

主从复制配置完毕!

四. 搭建http服务,开启windows主机,配好DNS进行访问:

[root@http~]#yum-yinstallhttpd
[root@http~]#curl10.68.7.234

Succeed!

[root@http~]#vim/etc/httpd/conf/httpd.conf ...
在配置文件对应位置增加如下行: ServerNamewww.yangbin.com//也可不加,因为DNS内配置了正反向解析 ...
重启服务!
然后在win7配置好DNS并访问:

实验验证完成

Last modification:July 28, 2018
您的打赏,将全部用于服务器购置及域名续费等,以保证诸如跬步图床等的免费服务