DNS服务作为基础的网络服务在互联网中到处存在,学习搭建DNS服务器是网络管理员的基本技能之一。


准备环境:vmware workstation 10

                 redhat 5.10 x86_64  虚拟机2台 

                 主DNS:192.168.195.129  ns1.jwh5566.com

                                192.168.1.114  连外网   主要是客户端用来测试DNS是否递归查询的

                 从DNS:192.168.195.128    ns2.jwh5566.com

                 域名:jwh5566.com

                 代理的客户端:192.168.195.130 131 132...


安装linux,配置本地光盘yum源,配置ip

        此处省略1000字......


查看是否安装dns,dns服务的软件叫做bind,所以

yum list | grep "^bind"

可以看到有2个版本的bind,bind和bind97,bind是为了兼容以前老版本的,所以我们要安装bind97,

系统默认安装了bind-utils,和bind-libs,请卸载

yum remove bind-utils  bind-libs -y


主DNS,192.168.195.129的配置

安装完成后会在/etc下生成/etc/named.conf文件和/var/named/目录


备份/var/named.conf文件,后面自己写

mv /etc/named.conf /etc/named.conf.bak

vim /etc/named.conf 类似如下,后面解释内容

一步一步搭建主从DNS服务器_DNS

一步一步搭建主从DNS服务器_主从_02

options :定义了dns服务的工作特性

            directory:定义dns的区域数据文件所在目录,数据文件就是真正能够查找所需要的IP或者主机名的地方

            allow-recursion:指定允许代理那个网段的客户端去递归查询,不指定的话,互联网上所有的客户机都指定你的dns服务器去递归查询,你的服务器就要忙死了,所以这里指定代理自己域内的客户机去递归查询。(建议指定

"." 区域 :根域

                type:指定了域的类型 hint 表示根域,还有master表示主DNS的配置,slave表示从DNS的配置

                file:表示数据文件路径,此为相对路径,相对于/var/named而言

                named.ca里面记录了全球13台根DNS服务器的IP地址。

                allow-transfer:指定允许传输给其他的DNS服务器的列表

                                        none表示不传输,一般如果指定的话,就只指定给我们自己的从DNS服务器即可,如果开放互联网的话,会有安全隐患。(建议指定)

"localhost" :本地域

                named.localhost:记录localhost的ip是127.0.0.1和::1

"0.0.127.in-addr.arpa":指定反向域查询的数据文件

                named.lookback:记录了127.0.0.1和::1对应的主机名是localhost


重点来了

"jwh5566.com": 我们自己要代理的域

                        allow-transfer:指名允许将这个域信息传输给从服务器

"195.168.195.in-addr.arpa":jwh5566的反向域,即用IP来获得主机名

好了,到目前为止DNS的主配置文件 修改好了,下面去配置数据文件

在/var/named目录下named.ca和named.localhost,loopback都有所以不需要我们编写,我们只需要编写我们自定义的即可。

vim wjh5566.com.zone  这是一个正向解析的数据文件

一步一步搭建主从DNS服务器_DNS_03


$TTL:表示客户机在获得ip或者主机名之后缓存多久时间,这是一个全局的变量

ns1表示

下面每行表示一条记录,一次的格式是

主机名        IN            记录类型        IP

第一行的SOA记录有点特别,我来详细说下

@:表示取主配置文件中的域名,还记得前面引号里面的域名么?不错,@在这里就是只它

IN:关键字

SOA:记录类型, 其他的还有:

            NS:指名这个域的DNS服务器

            A:指名从主机名到IP

            PTR:指名从IP到主机名

            MX:指名邮件服务器

            CNAME:指名是哪个服务器的别名

ns1.jwh5566.com.:指定DNS服务器(注意不要忘了最后的那个点)

admin.jwh5566.com:指定管理员的邮箱地址(注意不是@而是点,因为这@有特殊含义)

括号中的5个数字分别表示

                        2015051701       序列号:每一次更新数据文件,应该将序列号更新,以便从服务器判断从而进行更新
                        1H                      刷新时间:从服务器多久来访问一次,H表示小时
                        5M                     重试时间:从服务器访问失败之后,多久之后重试,M表示分钟
                        2D                      过期时间:此时间之后,判定主服务器down机 ,D表示天
                        6H )                    否定回答的保留时间:即在通知客户机没有查询到结果之后,多久时间不在相应客户机的查询


下面空白的表示继承@的域名,MX后面10表示邮件服务器的优先级一般是1~99



  下面来看看反向解析的数据文件

一步一步搭建主从DNS服务器_DNS_04

可以看到   方向解析的数据文件和正向的很类似

只需要将IP和主机名为止调换即可,但是这里的主机名要写全,因为这里的@不在表示“jwh5566.com”了,你知道表示什么吗?对咯,就是“195.168.192.in-addr.arpa”

至此,主DNS的配置就算完了,对于从DNS的配置就不要这么麻烦了,因为他会同步数据文件的。


从DNS,192.168.195.128的配置     

因为主配置文件大部分都相同,所以我们cp主DNS的配置文件,稍加修改即可,

scp 192.168.195.129:/etc/named.conf /etc/named.conf

vim named.conf

                             一步一步搭建主从DNS服务器_DNS_05

file:数据文件为什么要放在slaves目录下呢?因为named目录默认对于named用户不可写,所以我们用slaves目录

masters:指定主DNS服务器的地址

其他地方都不需要修改,OK




启动主DNS服务器

    service named start

启动从DNS服务器

    service named start

查看主DNS服务器的日志

    tail /var/log/messages

一步一步搭建主从DNS服务器_主从_06

查看从DNS服务器named目录下已经有对应域的数据文件


那么我们在主DNS修改jwh5566.com的数据文件会不会同步过去呢?我们来试一下

编辑数据文件 在里面添加一行记录pop3或者sftp(注意要修改序列号,这里修改为2015051703)

重启dns服务,查看日志

一步一步搭建主从DNS服务器_DNS_07

看到发送的序列号了么 2015051703

注意下最后的IXFR表示增量更新,IXFR ended 表示增量更新结束,看下从DNS服务器的数据文件是不是同步了呢。




测试DNS服务器

dig 命令使用

    dig 命令可以测试DNS服务器

    -t:指定记录类型

    @指定用哪个DNS服务器来查询(注意测试的时候要加哦,否则会默认使用本机系统的的DNS,就是/etc/resove.conf里面的dns服务器来解析的)


例如:查询jwh5566.com的NS的地址

dig -t NS jwh5566.com @192.168.195.129

一步一步搭建主从DNS服务器_DNS_08

可以看到有2个DNS服务器,分别是129和128


查询下www.jwh5566.com的IP地址

dig -t A www.jwh5566.com @192.168.195.129

再执行下,是不是看到两次的DNS服务器在交替呢,这个就是所谓的DNS负载均衡啦

好啦,文章就写到这里,谢谢大家!