DNS服务器(二):使用bind实现主从DNS服务器数据同步

1、bind简介数据库

   Linux中一般使用bind来实现DNS服务器的架设,bind软件由isc(www.isc.org)维护。在yum仓库中能够找到软件,配置好yum源,直接使用命令yum install bind就能够安装。当前bind的稳定版本为bind9,bind的服务名称为named,监听的端口为53号端口。bind的主要配置文件为/etc/named.conf,此文件主要用于配置区域,并指定区域数据库文件名称。区域数据库文件一般保存于/var/named/目录下,用于定义区域的资源类型。windows


2、使用bind架设DNS服务器安全

实例操做:以域名wubinary.com为例配置一个DNS服务器,实现正向解析与反向解析。bash


一、使用setup命令配置DNS服务器的IP地址,咱们以192.168.0.70这个IP地址为例,在本地架设一个DNS服务器。服务器

wKiom1MhK6Tw2HWjAAEbY8_qch8244.jpg


二、bind配置文件为/etc/named.conf,此文件用于定义区域。每一个区域的数据文件保存在/var/named目录下。网络

named.conf各参数项说明:ide

options {
//全局选项
}
zone "ZONE name"{
//定义区域
}
logging{
//定义日志系统
}



named.conf文件内容以下:测试

options {
    listen-on port 53 { 127.0.0.1; }; #定义监听端口及IP地址
    listen-on-v6 port 53 { ::1; }; #定义监听的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     { localhost; };#容许查询的IP地址
    recursion yes; #是否容许递归查询
    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;
    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
};
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";

注意:bind的配置文件/etc/named.conf里必需要定义的三个区域是:根、127.0.0.1和127.0.0.1的反解。spa

以上options选项中有许可能是咱们用不到,咱们先把它们注释掉。结果以下:debug

options {
//  listen-on port 53 { 127.0.0.1; };
//  listen-on-v6 port 53 { ::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; };
//  recursion yes;
//  dnssec-enable yes;
//  dnssec-validation yes;
//  dnssec-lookaside auto;
    /* Path to ISC DLV key */
//  bindkeys-file "/etc/named.iscdlv.key";
//  managed-keys-directory "/var/named/dynamic";
};


三、打开/etc/named.rfc1912.zones文件,添加一个区域。

wKiom1MhoOXRXddjAABW4Lo8ADY328.jpg

type: 用于定义区域类型,此时只有一个DNS服务器,因此为master,type可选值为:hint(根的)|master(主的)|slave(辅助的)|forward(转发)

file:用于定义区域数据文件路径,默认该文件保存在/var/named/目录。

区域添加好后,使用命令:named-checkconf 或 service named configtest测试配置文件语法格式。

wKioL1MhpBziRlrDAABgaEdyQkw314.jpg

出错了!原来少了一个分号,配置文件的格式是每行后面都必须加分号结束,而且有花括号的地方,花括号两边必需要有空格。


wKioL1MhpLviJaXMAAA6rOO9Lrc905.jpg

没有提示则表示文件语法正常。


四、新建数据库文件/var/named/wubinary.com.zone,并添加资源记录。

资源记录的格式:
         name        [ttl]      IN      RRtype      Value
        资源记录名  有效时间    IN       类型    资源记录的值


SOA: 只能有一个,并且必须是第一个
         name: 只能是区域名称,一般能够简写为@
         value: 主DNS服务器的FQDN
NS: 能够有多条
         name: 区域名称,一般能够简写为@
         value: DNS服务器的FQDN(可使用相对名称)
A: 只能定义在正向区域文件中
         name: FQDN(可使用相对名称)
         value: IP
MX: 能够有多个
        name: 区域名称,用于标识smtp服务器
        value: 包含优先级和FQDN
                    优先级:0-99,数字越小,级别越高;
CNAME:
          name: FQDN
          value: FQDN

PTR: IP --> FQDN, 只能定义在反向区域数据文件中,反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
        name: IP, 逆向的主机地址,主机地址反过来写加上.in-addr.arpa.
        value: FQDN

wKiom1MibDbhZKddAADj-E2v8hg789.jpg

$TTL为定义的宏,表示下面资源记录ttl的值都为600秒。

@符号可表明区域文件/etc/named.conf里面定义的区域名称,即:"wubinary.com."。

每一个区域的资源记录第一条必须是SOA,SOA后面接DNS服务器的域名和电子邮箱地址,此处电子邮箱地址里的@由于有特殊用途,因此此处要用点号代替。SOA后面小括号里的各值所表明的意义以下所示:

@   IN  SOA dns.wubinary.com dnsadmin.wubinary.com (
    2014031201 ;标识序列号,十进制数字,不能超过10位,一般使用日期
    2H ;刷新时间,即每隔多久到主服务器检查一次,此处为2小时
    4M ;重试时间,应该小于刷新时间,此处为4分钟
    1D ;过时时间,此处为1天
    2D ;主服务器挂后,从服务器至多工做的时间,此处为2天)

区域数据文件配置好后,可使用命令named-checkzone检查语法错误。

命令格式:

named-checkzone "zone_name" zone_file_name


wKiom1MhrRbxPX5bAAB1NYPSWeQ386.jpg


五、两个文件都配置好后,记得查看一下文件的所属组。由于bind程序的服务名称为named,bind默认是使用named组的身份操做文件,因此咱们新建的文件所属组都要改成named,而且为了安全起见不能让别人有修改的权限,权限最好改成640。

wKiom1MhrlaTuQcTAADhrvFXTrk034.jpg


六、设置稳当当后咱们就能够开启服务了。

wKioL1MhrqqBSYafAABlHfQch9Y353.jpg


七、使用dig命令测试DNS。

命令格式:

dig [-t type] [-x addr] [name] [@server]

-t: 指定资源类型,用于正解

-x: 指定IP地址,用于反解


wKioL1Mhrzzg-7wbAALAthGQJCs025.jpg

测试成功!


八、以上配置的是DNS服务器的正向解析,接着再配置一下反向解析。编辑配置文件/etc/named.rfc1912.zones,添加一个反解区域。

wKiom1MhtvKTGGS5AABlUmR3vpE311.jpg


由于反向解是和正向解析相反的,因此配置文件192.168.0.70.zone直接能够复制wubinary.com.zone修改。反向解析数据文件里面只有SOA、NS、PTR资源记录,全部A记录都要改成PTR记录,名称为IP地址,IP地址能够写全也能够简写,若是写全则是IP地址反写加上.in-addr.arpa.例如:70.0.168.192.in-addr.arpa. PTR资源记录的值为域名。

wKiom1MhuJ6zfXZKAADKbiLgAj8147.jpg


九、检查配置文件语法。

wKioL1MhuUnB1WuQAADSyFro1sg754.jpg


修改权限

wKioL1MhuY7QFhA3AACKuo6tvHI097.jpg


十、从新载入配置文件,并测试反向解析。

wKioL1MhuevDXAr_AABW69LugbQ320.jpg


使用dig -x 测试反向解析。

wKioL1MhulXzxrX4AALMMIdnwTM862.jpg


反向解析配置成功!

注意:一般在应用中,DNS的反向解析并非很重要,能够不配置,当服务器中有域名做为邮件服务器时,此时能够配置反向解析,由于邮件中过滤垃圾邮件的技术一般是解析邮箱地址,若是IP地址不能反解成一个域名则视为垃圾邮件。


3、使用bind架设辅助DNS服务器,实现主从数据同步

   DNS从服务器也叫辅服DNS服务器,若是网络上某个节点只有一台DNS服务器的话,首先服务器的抗压能力是有限的,当压力达到必定的程度,服务器就会宕机罢工,其次若是这台服务器出现了硬件故障那么服务器管理的区域的域名将没法访问。为了解决这些问题,最好的办法就是使用多个DNS服务器同时工做,并实现数据的同步,这样两台服务器就均可以实现域名解析操做。

   主DNS服务器架设好后,辅助的DNS服务器的架设就相对简单多了。架设主从DNS服务器有两个前提条件,一是两台主机能够不必定处在同一网段,可是两台主机之间必需要实现网络通讯;二,辅助DNS服务器必需要有主DNS服务器的受权,才能够正常操做。此时,咱们以IP地址192.168.0.80做为咱们辅助的DNS服务器的IP地址;

一、设置IP地址;

wKiom1MhwEHTmJ2RAAEJU20xoJE039.jpg


二、打开辅助DNS服务器的/etc/named.rfc1912.zones文件,添加两个区域记录,这两个记录是主DNS服务器配置文件里已经存在的记录,一个是正向解析记录,一个是反向解析记录。

wKiom1MhxcuyEk8OAADbHcz0azY904.jpg

type: slave,表示此时DNS服务器为辅助DNS服务器,因而下面一行就要定义主DNS服务器的IP地址,辅助DNS服务器才知道去哪里同步数据。辅助DNS服务器的资源类型数据文件一般保存在slaves目录,只需定义一个名称,文件内容一般是自动生成。

配置好后,直接开启DNS服务,而后再回到主DNS服务器上。


三、修改主DNS服务器的数据文件,添加一条辅助DNS服务器记录,给辅助DNS服务器受权。

修改正向解析文件/var/named/wubinary.com.zone。

wKioL1MibIyCvM4OAAEKLvDDY9I387.jpg

添加了一条NS记录,值为,ns2.wubinary.com.,对应的A记录也要增长一条,把IP地址指向对应的辅助DNS服务器的IP地址。修改完成后,记得要把序列号的值加1,用于通知辅助DNS服务器自动更新数据文件。


修改反向解析文件/var/named/192.168.0.70.zone。

wKiom1MhxJSjpfBDAAEJKuymzok519.jpg

一样的也增长了两条记录,一条辅助DNS服务器的NS记录和对应的PTR记录。修改完成后记得所序列号的值加1,用于通知辅助DNS服务器自动更新数据文件。


四、从新加载主DNS服务器的配置文件,这时再到回辅助DNS服务器,在/var/named/slaves/目录下会多了两个文件。

wKioL1MicCeSfVWZAABbAbnRv7w986.jpg


查看文件内容,能够看到该文件和主DNS服务器上的文件内容是同样的。

wKiom1MicXuBJ4UPAAIFeZJY_Bc444.jpg


wKioL1MicWKg6KvjAAHT6shTY_Y949.jpg


五、测试辅助DNS服务器。

wKioL1MiceORwrbiAAMRSAwgBlE719.jpg


wKiom1MichXiCUcuAAM34GOgPm4141.jpg


在辅助DNS服务器上正向解析和反向解析都能测试成功!


4、主从同步数据的安全性

   DNS服务器的数据同步默认是没有限定主机的,也就是说,网络上只要有一台DNS服务器向你的DNS服务器请求数据,都能实现数据同步,那么这样就至关的不安全了。咱们可使用一个选项allow-transfer,指定能够同步数据的主机IP。主DNS服务器的数据能够给别的服务器同步,相对的,辅助DNS服务器的数据也是能够给其它辅助DNS服务器同步,因而,全部的主从DNS服务器都要设置该参数。


一、指定能够从主DNS服务器上同步数据的主机。

修改/etc/named.rfc1912.zones文件:

wKioL1MidHiA318MAAD2Yf-wgA4538.jpg

在每块区域上添加参数allow-transfer,花括号内填写能够同步的主机IP,通常填写辅助DNS服务器的IP地址。可使用dig命令测试,区域同步:

dig -t axfr ZONE_NAME @DNS_SERVCER_IP


wKioL1MidXGBxazoAANaus8FrkI351.jpg

指定IP能够同步数据。


wKioL1MidYrRC02cAACt55kEn3c155.jpg

非指定IP不能够同步数据。


二、指定能够从辅助DNS服务器上同步数据的主机。

修改/etc/named.rfc1912.zones文件:

wKioL1MidfvxVfTDAAEPadV8Pjg491.jpg

咱们只有一台辅助DNS服务器,因此根本不会有主机从这台机器同步数据,因此咱们设置成不容许任何人同步。


5、测试DNS解析的其它命令

   测试DNS解析的命令不仅是dig能够实现,还有两个命令也能够实现相同的效果。

一、host命令

host命令格式:

# host [-t type] {name} [server]


wKiom1MiduaTyZdJAABl1tINhTE881.jpg


二、nslookup命令

这个命令很神奇,在windows的dos里面也可使用:

nslookup>
    server DNS_SERVER_IP
    set q=TYPE
    {name}


wKiom1Mid2Kh6zIbAADufII1MeQ300.jpg

相关文章
相关标签/搜索