2-7-搭建DNS服务器实现域名解析

时间:2021-06-03 07:29:06

学习服务的方法:

了解服务的作用:名称,功能,特点

安装服务

配置文件的位置,端口

服务开启和关闭的脚本

修改配置文件(实战举例)

排错(从上到下,从内到外)

----------------------------------------

大纲:

DNS服务器常见概念

DNS服务器安装及相关配置

实战:配置DNS服务器解析

实战:使用DNS支持递归查询.

实战:搭建DNS转发服务器

实战:搭建DNS主从服务器

实战:zone文件中的其它记录信息. 通过DNS做负载均衡

实战:DNS主从密钥认证

测试工具:nslookup dig

----------------------------------------

DNS服务器常见概念

DNS服务概述:

DNS(Domain Name System--域名系统),在TCP/IP 网络中有着非常重要的地位,能够提供域名和IP地址的解析服务.

DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一颗倒置的树,这个逻辑的树形结构称为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息.

注:DNS域名空间中,树的最大深度不得超过127层,树中每个节点最长可以存储63个字符.

2-7-搭建DNS服务器实现域名解析

一些名词的解释:

1. 域和域名

DNS树的每个节点代表一个域.通过这些节点,对整个域名空间进行划分,成为一个层次结构.

域名空间的每个域的名字,通过域名进行表示.

域名:通常由一个完全合格域名(FQDN)标识.FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com.

例如,google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示.

注意:通常,FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z和减号(-).点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用.

域名不区分大小.

由最顶层到下层,可以分成:根域、*域、二级域、子域.

Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织.

“.”全球有13个根(root)服务器

DNS 根域下面是*域,也由Internet 域名注册授权机构管理.共有3 种类型的*域.

组织域:采用3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动.比如com 为商业机构组织,edu 为教育机构组织,gov 为*机构组织,mil 为军事机构组织,net 为网络机构组织,org 为非营利机构组织,int 为国际机构组织.

地址域:采用两个字符的国家或地区代号.如cn 为中国,kr 为韩国,us 为美国.

反向域:这是个特殊域,名字为in-addr.arpa,用于将IP 地址映射到名字(反向查询).

对于*域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织.当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配域中主机名与IP 地址的映射信息.

2、区(Zone)

区是DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录.

使用区的概念,DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器.

3、主域名服务器与辅助域名服务器

当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定期与区主控服务器通信,查看区数据是否改变.如果改变了,它就启动一次数据更新传输.每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,就无法解析该区的名称.

辅助服务器的优点:

1)容错能力

配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称.一般把区的主服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能直接查询另一个子网上的名称服务器.

2)减少广域链路的通信量

如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询.

3)减轻主服务器的负载

辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数.

4、DNS 相关概念

(1)DNS 服务器

运行DNS 服务器程序的计算机,储存DNS 数据库信息.DNS 服务器会尝试解析客户机的查询请求.

在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在.

(2)DNS 缓存

DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存.当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析.

2)DNS查询过程:

看一个DNS查询过程:

通过8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的

2-7-搭建DNS服务器实现域名解析

<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器.

<2> 当本地的域名服务器收到请求后,就先查询本地的缓存.

如果有查询的DNS 信息记录,则直接返回查询的结果.

如果没有该记录,本地域名服务器就把请求发给根域名服务器.

<3> 根域名服务器再返回给本地域名服务器一个所查询域的*域名服务器的地址.

<4> 本地服务器再向返回的域名服务器发送请求.

<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址.

<6> 本地域名服务器将查询请求发送给返回的DNS 服务器.

<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应).

<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机.

5、两种查询方式:

(1)递归查询

递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机.如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机.

(2)迭代查询

DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止.

6、正向解析与反向解析

1)正向解析

正向解析是指域名到IP 地址的解析过程.

2-7-搭建DNS服务器实现域名解析

2)反向解析

反向解析是从IP 地址到域名的解析过程.反向解析的作用为服务器的身份验证.

http://dns.aizhan.com/  #一个反向解析服务器

2-7-搭建DNS服务器实现域名解析

7、DNS资源记录

1)SOA 资源记录(全区唯一)

每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录.

SOA 定义了域的全局参数,进行整个域的管理设置.一个区域文件只允许存在唯一的SOA 记录.

2)NS 资源记录

NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析.每个区在区根处至少包含一个NS 记录.

3)A 资源记录

地址(A)资源记录把FQDN 映射到IP 地址. 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址.

4)PTR 资源记录

相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN. 用于反向查询,通过IP地址,找到域名.

5)CNAME 资源记录

别名记录(CNAME)资源记录创建特定FQDN 的别名.用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名.

:ping百度时,解析到了百度的别名服务器.百度有个cname=www.a.shifen.com.的别名

2-7-搭建DNS服务器实现域名解析

6)MX 资源记录

邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器.

邮件交换服务器是为DNS 域名处理或转发邮件的主机.处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者.转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队.

以上是相关概念.

2-7-搭建DNS服务器实现域名解析

模式: C/S 模式

DNS服务器的安装及相关配置:

DNS服务器的安装:

BIND 简介:全称为Berkeley Internet Name Domain(伯克利因特网名称域系统).BIND 主要有三个版本:BIND4、BIND8、BIND9.

BIND8 融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等.

yum -y install bind bind-chroot bind-utils

bind  ---> #该包为DNS服务的主程序包

bind-chroot ---> #该包提高安全性

# bind-chroot是bind的一个功能包,使bind可以在一个chroot的模式下运行.

# 也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,

# 只是系统中的一个子目录.这样做的目的是为了提高安全性.

# 因为在chroot模式下,bind只可以方位这个子目录的范围.

# 而不能进入这个子目录外其他的地方.

bind-utils ---> #该包为客户端工具,默认安装,用于搜索余名指令

DNS服务器的使用:

/etc/init.d/named <start | restart | stop | status >

service named <start | restart | stop | status >

#<start 启动 | restart 重启 | stop 停止 | status 状态 >

chkconfig add named #添加named开机启动项

chkconfig named on #设置named开机自启动

chkconfig --list named #查看named开机启动状态

DNS服务器监听端口:

vim /etc/services

PORT: udp/tcp  53   ---> 客户端查询

PORT: udp/tcp 953  ---> 主从服务器同步

DNS服务器配置文件:

rpm -ql bind

/etc/named.conf ---> 核心配置文件

没有安装bind-chroot情况下,可以备份配置文件后,直接修改/etc/name.conf.

(推荐)安装了bind-chroot情况下,直接运行

/etc/init.d/named start

后,执行mount命令,在对/var/named/chroot/etc/named.conf 进行修改

----------------- start and mount log -------------------

[root@xiaogan120 ~]# /etc/init.d/named start

Generating /etc/rndc.key:                                  [  OK  ]

Starting named:                                            [  OK  ]

[root@xiaogan120 ~]# mount

/dev/sda2 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sda1 on /boot type ext4 (rw)

/dev/sda5 on /var type ext4 (rw)

/dev/sr0 on /mnt type iso9660 (ro)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

/etc/named on /var/named/chroot/etc/named type none (rw,bind)

/var/named on /var/named/chroot/var/named type none (rw,bind)

/etc/named.conf on /var/named/chroot/etc/named.conf type none (rw,bind)

/etc/named.rfc1912.zones on /var/named/chroot/etc/named.rfc1912.zones type none (rw,bind)

/etc/rndc.key on /var/named/chroot/etc/rndc.key type none (rw,bind)

/usr/lib64/bind on /var/named/chroot/usr/lib64/bind type none (rw,bind)

/etc/named.iscdlv.key on /var/named/chroot/etc/named.iscdlv.key type none (rw,bind)

/etc/named.root.key on /var/named/chroot/etc/named.root.key type none (rw,bind)

[root@xiaogan120 ~]#

---------------------- END ------------------------

配置文件详解:

vim /var/named/chroot/etc/named.conf   #启动服务后,尽量使用这个路径.

options  :对全局生效,定义了监听地址和端口,目录,临时目录,状态目录等配置信息

logging : 日志信息

zone  : 针对某个区域生效

重点说一下type参数:

type 字段指定区域的类型,对于区域的管理至关重要,一共分为六种:

1. Master:

主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据

2. Slave:

辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS 服务器会从主DNS服务器同步所有区域数据.

3. Stub:

stub 区域和slave 类似,但其只复制主DNS 服务器上的NS 记录而不像辅助DNS 服务器会复制所有区域数据.

4. Forward:

一个forward zone 是每个域的配置转发的主要部分.一个zone 语句中的type forward可以包括一个forward 和/或forwarders 子句,它会在区域名称给定的域中查询.如果没有forwarders 语句或者forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有关转发的配置.

5. Hint:根域名服务器的初始化组指定使用线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表.

----------------- /var/named/chroot/etc/named.conf -------------------

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

// 在/usr/share/doc/bind*/sample/ 文件夹中可查卡named配置案例

options {

listen-on port 53 { any; }; #监听地址,和端口 IPV4

listen-on-v6 port 53 { any; };  #监听地址,和端口 IPV6

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; }; #允许解析的IP地址

recursion yes; # 开启递归查询

dnssec-enable yes; #开启加密

dnssec-validation yes; #在递归查询服务器上开启DNSSEC验证

/* Path to ISC DLV key */

bindkeys-file "/etc/named.iscdlv.key"; #isc dlv key 的地址

managed-keys-directory "/var/named/dynamic"; #key的保存目录

};

logging { #日志

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

zone "." IN {

type hint;

file "named.ca";

};

include "/etc/named.rfc1912.zones";

include "/etc/named.root.key";

-----------------  END -------------------

实验手册:

实验环境:

Server:   xiaogan64 ( CentOS6.8 ) IP: 192.168.31.64 ( eth0 )

Client:   xiaogan63 ( CentOS6.8 ) IP: 192.168.31.63 ( eth0 )

Client端:

配置网卡选择vmnet6模式,ip地址 192.168.64.63

网关 192.168.64.1(server eth1 IPAddr)

Server端:

配置eth0 选择桥接模式,IP 192.168.31.64

配置eth1 选择vmnet6模式,IP 192.168.64.1

安装DNS服务

yum -y install bind bind-chroot bind-utils

启动bind服务

/etc/init.d/named start

service named start

挂载文件系统

mount

2-7-搭建DNS服务器实现域名解析

添加开机启动项及相关设置

chkconfig --list named

chkconfig add named

chkconfig named on

chkconfig named off

1. 实战:配置DNS服务器解析

修改配置文件:

vim /var/named/chroot/etc/named.conf

修改options如下:

10 options {

11         listen-on port 53 { any; }; # 监听任意IPV4地址53号端口

12         listen-on-v6 port 53 { any; }; #IPV6 同上

13         directory       "/var/named";

14         dump-file       "/var/named/data/cache_dump.db";

15         statistics-file "/var/named/data/named_stats.txt";

16         memstatistics-file "/var/named/data/named_mem_stats.txt";

17         allow-query     { any; }; # 允许任何地址通过

18         recursion yes; # 默认,支持递归查询

19

20         dnssec-enable yes;

21         dnssec-validation yes;

22   dnssec-lookaside auto; # 添加这一行

23         /* Path to ISC DLV key */

24         bindkeys-file "/etc/named.iscdlv.key";

25

26         managed-keys-directory "/var/named/dynamic";

27 };

添加zone如下:

41 zone "xiaogan.cn" IN { # 指定区域名为 xiaogan.cn

42         type master; # 指定工作模式 为主dns服务器

43         file "xiaogan.cn.zone"; # 指定配置文件为 xiaogan.cn.zone

44 };

:wq保存退出!

建立zone配置文件 xiaogan.cn.zone

cd /var/named/chroot/var/named

cp -a named.localhost xiaogan.cn.zone

# 在拷贝配置文件的时候,尽量使用-a选项 (拷贝所有属性)

# 不然,有时候,你都不知道怎么回事,什么都对了,就是实验不成功!!!我就是因为这个问题纠结了好几天!!!

# ls -l xiaogan.cn.zone

# -rw-r----- 1 root named 289 Oct 12 20:56 /var/named/chroot/var/named/xiaogan.cn.zone

vim xiaogan.cn.zone

修改如下: 配置信息 ; # 注释信息

1 $TTL 1D

# 设置有效地址解析记录的默认缓存时间,默认为1天也就是1D。

2 xiaogan.cn.      IN SOA  dns.xiaogan.cn. root.xiaogan.cn. (

# 起始授权记录SOA 定义了域的全局参数,进行整个域管理设置,一个区域文件只允许存在唯一的SOA记录

# 原来的@表示当前的域xiaogan.cn.,为方便大家记忆,我们这里,直接写成xiaogan.cn.

# 设置SOA记录为:dns.xuegod.cn. 

# 在此配置文件中写域名时,都把根. 也要写上。

# 域管理邮箱root.xuegod.cn.0由于@有其他含义,所以用“.”代替@。

3                                         0       ; serial

# 更新序列号,用于标示数据库的变换,可以在10位以内,如果存在辅助DNS区域,建议每次更新完数据库,手动加1.

4                                         1D      ; refresh

# 刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天

5                                         1H      ; retry

# 重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时

6                                         1W      ; expire

# 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周

7                                         3H )    ; minimum

# 设置无效地址解析记录(该数据库中不存在的地址)默认缓存时间。设置无效记录,最少缓存时间为3小时

8 xiaogan.cn.     NS      dns.xiaogan.cn.

# 域名服务器记录,指定该域名xiaogan.cn由dns.xiaogan.cn进行分析,每个区在区根处至少包含一个NS记录.

9 dns.xiaogan.cn. A       192.168.31.1

# 把FQDN(完全合格域名标识)映射到IP地址

# 即 把 dns.xiaogan.cn 映射到 192.168.64.1 位置

10 www.xiaogan.cn. A       192.168.31.1

# 同上

11 www2.xiaogan.cn. CNAME  www.xiaogan.cn.

# 定义别名 www.xiaogan.cn 的别名为 www2.xiaogan.cn

2-7-搭建DNS服务器实现域名解析

NS @ ;域名服务器记录,用于设置当前域的DNS服务器的域名地址,

A 127.0.0.1 ; 设置域名服务器的A记录,地址为ipv4的地址127.0.0.1,可以设置成192.168.100.102

AAAA ::1 ; 设置域名服务器的A记录,地址为ipv6的地址。

保存退出,并重启named服务

/etc/init.d/named restart

客户端:修改DNS

vim /etc/resolv.conf

nameserver 192.168.31.64

为了避免不必要的误解,我们同时也修改了网卡配置文件(因为计算机的DNS可以在这两个文件中定义

/etc/reslove.conf

/etc/sysconfig/network-scripts/ifcfg-eth0)

ping www.xiaogan.cn

ping www2.xiaogan.cn

2-7-搭建DNS服务器实现域名解析

2. 实战:使用DNS支持递归查询.

vim /var/named/chroot/etc/named.conf

20 #       dnssec-enable yes;

21 #       dnssec-validation yes;

22 #       dnssec-lookaside auto;

# 但是要把这三条内容注释了,其它内容不用改,这样客户端才能通过这个DNS进行递归查询。把dns加密通讯功能关闭,才可以和根服务器时行迭代查询。

测试:

ping www.baidu.com

# 时好,时坏,我也不知道怎么回事,更新一下时间就又好了,好神奇!!!

三、搭建DNS转发服务器

家庭路由器就是一个典型的转发服务器

# 注意,开启转发,需要保证时间一致!!!

# ntpdate time.windows.com

1、vim /var/named/chroot/etc/named.conf

改:

把上面添加的

zone "xuegod.cn"IN{

type master;

file "xuegod.cn.zone";

};

这三行内容注释或者删除,再添加两行内容:

forward  only ;   //仅执行转发操作 ,only:仅转发;first:先查找本地zone,再转发

forwarders  { 8.8.8.8; };    //指定转发查询请求的DNS服务器列表

即:

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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; };

recursion yes;    //允许递归查询

#dnssec-enable yes;  //注释这三行

#dnssec-validation yes;

#dnssec-lookaside auto;

forward  only ;   //仅执行转发操作 ,only:仅转发;first:先查找本地zone,再转发

forwarders  { 8.8.8.8; };    //指定转发查询请求的DNS服务器列表

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

};

四、搭建DNS主从服务器

1、搭建一个主DNS服务器A。配置内容如下:

[root@localhost etc]# vim named.conf

#dnssec-enable yes;

#dnssec-validation yes;

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

options {

listen-on port 53 { any ; };

listen-on-v6 port 53 { any; };

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; };

recursion yes;

        #dnssec-enable yes;

        #dnssec-validation yes;

        #dnssec-lookaside auto;

/* Path to ISC DLV key */

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

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

}

zone "." IN {

type hint;

file "named.ca";

};

zone "xuegod.cn" IN {

type master;

file "xuegod.cn.zone";

        allow-transfer { 192.168.31.0/24; };

#指定允许哪个网段的从DNS服务器,可以同步主DNS服务器zone文件,不写默认为所有。

};

include "/etc/named.rfc1912.zones";

2、从DNS服务器的配置

##主从时间一定要保持一致

安装程序:

yum install bind bind-chroot bind-utils   -y

[root@xuegod64 Packages]# service named restart

Stopping named:                                            [  OK  ]

Starting named:                                            [  OK  ]

[root@localhost etc]# vim named.conf

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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; };

recursion yes;

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

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

zone "." IN {

type hint;

file "named.ca";

};

zone "xuegod.cn" IN {

        type slave;

        file "slaves/xuegod.cn.zone.file";

        masters { 192.168.31.64; };

};

include "/etc/named.rfc1912.zones";

注:这样从DNS服务器就可以从主DNS服务器上获取DNS解析记录信息了。写时注意slave slaves  master  单词的书写,有的加s有的不加

重启从DNS服务器会在:/var/named/chroot/var/named/slaves文件夹下自动创建一个文件xuegod.cn.zone.file 这个文件是从DNS服务器从主DNS服务器上获取的数据这样随便一个DNS就可以获取主DNS服务器的解析记录,不安全,文章的后面会讲如何进行主从认证。

注:主DNS记录中应该有两NS记录,一条是主DNS的NS记录,一条是从DNS服务器的域名记录。

测试:

service named restart

ls /var/named/chroot/var/named/slaves/   #看到这个文件,说明成功了

xuegod.cn.zone.file

五、zone文件中的其它记录信息。 通过DNS做负载均衡

编辑主DNS服务器上的配置文件:

cd  /var/named/chroot/var/named

[root@localhost named]# vim xuegod.cn.zone

cat /var/named/chroot/var/named/xuegod.cn.zone

$TTL 1D

xuegod.cn. IN SOA dns.xuegod.cn. root.xuegod.cn. (

1 ; serial

1D ; refresh

1H ; retry

1W ; expire

3H ) ; minimum

xuegod.cn. NS dns.xuegod.cn.

dns.xuegod.cn. A   192.168.31.64

www.xuegod.cn. 1  A      192.168.31.64 #DNS做简单的负载均衡,1表示此记录在客户端保存1秒

www.xuegod.cn. 1  A       192.168.31.64

www.xuegod.cn. 1  A       192.168.31.1

www1.xeugod.cn.  CNAME   www.xuegod.cn.

xuegod.cn.        MX  10  mail.xuegod.cn.   #添加邮件记录

mail.xuegod.cn.    A    192.168.31.64

bbs.xuegod.cn.     CNAME  www.xuegod.cn.

六、DNS主从密钥认证

主服务器重启时,会主动给从服务器发送信息,让从服务器更新自己的记录,通讯端口采用TCP 的53端口。

注:TSIG (主从DNS的时间必须一样)

1、同步时间:

vim /etc/ntp.conf  //查看ntp服务器

ntpdate 0.rhel.pool.ntp.org #同步时间

2、生成密钥,进行主从认证。

在主DNS服务器上操作。

rpm -qf `which dnssec-keygen`

bind-9.7.3-8.P3.el6.x86_64

(1)、dnssec-keygen -a hmac-md5 -b 128 -n HOST 名字

cd /var/named/chroot/

dnssec-keygen -a hmac-md5 -b 128 -n HOST abc  #生成一对 对称钥匙

-a hmac-md5:采用hmac-md5加密算法。

-b 128:生成的密钥长度为128位。

-n 密钥类型。我们选择主机类型:HOST 。

-n <nametype>: ZONE | HOST | ENTITY | USER | OTHER

(DNSKEY generation defaults to ZONE)

abc #为生成密钥的名字

生成时速度有点慢,因为生成密钥需要一些随机事件,因此我们可以通过移动鼠标或执行

[root@xuegod63 etc]# find /   

来产生一些随机事件。

等待大约2分钟,查看生成的密钥对:

[root@xuegod63 chroot]# ls

dev  etc  Kabc.+157+36589.key  Kabc.+157+36589.private  usr  var

[root@xuegod63 chroot]# cat Kabc.+157+54214.private   

Private-key-format: v1.2

Algorithm: 157 (HMAC_MD5)

Key: nVk1s0B6XVB4BFfkr+vdfQ==   #这是密钥

[root@xuegod63 chroot]# cat Kabc.+157+54214.key

abc. IN KEY 512 3 157 nVk1s0B6XVB4BFfkr+vdfQ==

(2)、修改主DNS配置:

[root@xuegod63 chroot]# vim /var/named/chroot/etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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; };

recursion yes;

dnssec-enable yes;   #取原来注释

dnssec-validation yes; #取原来注释

dnssec-lookaside auto; #取原来注释

/* Path to ISC DLV key */

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

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

zone "." IN {

type hint;

file "named.ca";

};

key abckey {           #先定义密钥的名字

        algorithm hmac-md5;

        secret "nVk1s0B6XVB4BFfkr+vdfQ==";

};

zone "xuegod.cn." IN {

type master;

file "xuegod.cn.zone";

allow-transfer { key abckey; };      #采用密钥进行同步

};

include "/etc/named.rfc1912.zones";

重启服务

(3)、从DNS 服务器:192.168.1.64:

#先定义密钥

#采用密钥进行同步

vim /var/named/chroot/etc/named.conf

//

// named.conf

//

// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS

// server as a caching only nameserver (as a localhost DNS resolver only).

//

// See /usr/share/doc/bind*/sample/ for example named configuration files.

//

options {

listen-on port 53 { any; };

listen-on-v6 port 53 { any; };

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; };

recursion yes;

dnssec-enable yes;

dnssec-validation yes;

dnssec-lookaside auto;

/* Path to ISC DLV key */

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

};

logging {

channel default_debug {

file "data/named.run";

severity dynamic;

};

};

zone "." IN {

type hint;

file "named.ca";

};

key abckey {    #先定义密钥名

        algorithm hmac-md5;

        secret "nVk1s0B6XVB4BFfkr+vdfQ==";

};

zone "xuegod.cn." IN {

type slave;

file "slaves/xuegod.cn.zone.file";

masters { 192.168.31.64 key abckey; };   #采用密钥进行同步

};

include "/etc/named.rfc1912.zones";

重启服务进行测试:

[root@xuegod63 chroot]# cd

[root@xuegod63 ~]# service named restart

Stopping named: .                                          [  OK  ]

Starting named:                                            [  OK  ]

[root@xuegod63 ~]#

从DNS服务器:

rm -rf /var/named/chroot/var/named/slaves/xuegod.cn.zone.file

ls /var/named/chroot/var/named/slaves/

测试工具:

nslookup 测试域名解析

(1)非交互式模式

语法: nslookup 域名或IP 地址

例:

root@xuegod63 chroot]# nslookup www.xuegod.cn

Server: 8.8.8.8

Address: 8.8.8.8#53

Non-authoritative answer:

Name: www.xuegod.cn

Address: 112.124.185.97

(2)交互模式

[root@xuegod63 ~]# nslookup

> www.g.cn

Server: 192.168.31.64

Address: 192.168.31.64#53

Non-authoritative answer:

Name: www.g.cn

Address: 203.208.49.178

Name: www.g.cn

Address: 203.208.49.179

Name: www.g.cn

Address: 203.208.49.180

Name: www.g.cn

Address: 203.208.49.176

Name: www.g.cn

Address: 203.208.49.177

dig命令:

linux下使用dig命令来查询域名信息,当然也可以使用nslookup,但dig比nslookup更方便更强大一些。

安装:

[root@xuegod63 ~]# rpm -qf `which dig`

bind-utils-9.7.3-8.P3.el6.x86_64

例:

使用114.114.114.114

DNS服务器解析www.xuegod.cn

[root@xuegod63 ~]# dig @114.114.114.114 www.xuegod.cn

; <<>> DiG 9.7.3-P3-RedHat-9.7.3-8.P3.el6 <<>> @114.114.114.114 www.xuegod.cn

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23192

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:

;www.xuegod.cn. IN A

;; ANSWER SECTION:

www.xuegod.cn. 30 IN A 112.124.185.97

;; Query time: 19 msec

;; SERVER: 114.114.114.114#53(114.114.114.114)

;; WHEN: Wed Mar 11 21:02:29 2015

;; MSG SIZE  rcvd: 47

补充:双线智能DNS:

智能DNS(Bind-view):

智能DNS的原理很简单:在用户解析一个域名的时候,判断一下用户 的IP,然后跟DNS服务器内部的IP表匹配一下,看看用户是电信还是网通用户,然后给用户返回对应的IP地址。目前的域名服务运营商不提供智能DNS服务,所以必须自行架设DNS服务或者使用网上免费的智能DNS服务,如DNSPOD.

https://www.dnspod.cn/

那我们为什么要使用智能DNS服务器:1、因为不同ISP厂商有竞争,使得我们成为受害者,细心的网友一定会发现,南方的网友访问北方的网站一般都比较慢,北方的网友访问南方的网站也很慢。这些都是厂商之间的竞争导致的。

http://gupt12.blog.51cto.com/7651206/1263525

http://linuxfun.me/?p=1023