码迷,mamicode.com
首页 > 其他好文 > 详细

DNS与bind

时间:2016-07-09 22:22:32      阅读:275      评论:0      收藏:0      [点我收藏+]

标签:dns   bind   

DNS

    dns是属于分布式系统管理庞大的dns数据库;我们在日常的运维活动中,虽然用到配置DNS服务器的机会很少,但是DNS对于我们各项服务,尤其是网页服务尤为重要。


一般情况下我们建立的DNS服务器适用于使用的:

一般是在内网中主机非常多,有很多服务器分别提供不同的服务:如搜索web,图片web,数据web,监控等,这些服务器所提供的用户名与外网联系不大(一般有反向代理,负载均衡在前面),同时为了做好自动化运维,需要每个主机的主机名,建立DNS就是为了更好的管理


DNS  domain name service 监听udp53,tcp53端口

一级域   组织域:.com .org .mil .gov .edu .net

国家域:.cn  .hk   .tw  .jp  .ir  .iq

所向域:.in-addr.arpa后缀

www.zou.com.

这个.为根,可以省略,但dns服务器是不可以省略的,任何服务器主机主要不是自己所管辖的主机通信,都通通交给根


dns服务器

一次查询所经过的该流程:

本地先查找host文件,

host文件没有的话,就找dns的本地缓存,

如果dns服务器负责的域,那直接解析查询自己的数据库返回答案

不过不是自己负责的域,那就找自己的缓存,有就返回答案

dns本地还没有的话,那就找所指向的dns服务器了,具体请看图(这是dns服务器也不知道的情况下走的步骤)

技术分享

上面的查询分为两种:    

    递归:发送一次请求,就会得到最终答案的叫做递归  recursion   路由器向域名代理商查询

    迭代:发多次请求才能得到答案的叫做迭代 iteration     域名代理商帮着去找域名一般为迭代,它要找多次

根域名服务器不和任何主机做递归;

客户端指向dns服务器,一定是允许给本地主机做递归;

在数据库中dns服务器是声明身份


DNS服务器类型:

负责解析至少一个域

主名称服务器

辅助名称服务器

不负责解析

缓存名称服务器


区域数据库文件:

资源记录    resource record   简称RR

资源记录类型有,用于资源的功能:

SOA

start of authority起始授权记录;一个区域解析库有且只能有一个SOA记录,而且必须放在第一条,这个一般是用2015090901, 一旦修改了之后,如果是主从的话,那就最好是修改这个最后的01,手动修改增加1
NS name server  域名服务记录,一个区域解析库可以有多个NS记录;其中一个为主的
MX 

mail exchange  邮件交换器,这个的特殊之处是具有优先级,0-99,数字越小,优先级越高

A address,地址记录,FQDN-->ipv4
PTRpoeter,   ip-->fqdn   负责反向解析

AAAA

address,地址记录, FQDN-->ipv6

CNAMEcanonical name  别名记录(正式名称),给服务器指定的别名记录

dns数据库文件:纯文本文件,只包含资源记录或者宏定义,每行一个资源记录定义格式:

语法:name     [ttl]      IN     RRtype     Value

 

SOA:

    name:当前区域的名字;例如“zou.com.”,或者“2.3.4.in-addr.arpa.”

    value:有多部分组成

        1.当前区域的区名称(也可以使用主DNS服务器)

        2.当前区域管理员的邮箱地址,但是地址不能使用@符号,一般使用点号取代    

        3.(主从服务协调属相的定义以及否定答案的TTL)

            例如:    

                zou.com.   86400    IN    SOA   zou.com.    zhi.zou.com.  (    

                                           2016070316 ; serial            分号为注释,版本最长为10位,随便定义

2H               ; refresh      定义的刷新时间

10M            ;  retry        从新发送时间

1W             ;   expire

1D             ;  negative answer ttl    否定时间的ttl值

)    

任何DNS数据库必须有这一条,而且必须为第一条        

NS:

name:当前区域名称,通常可以简写为@

value :当前区域的某DNS服务器的名字,例如:ns.zou.com.   注:点号不可少

注:一个区域可以有多个NS记录

例如:

zou.com.   86400    IN    NS   ns1.zou.com.

zou.com.   86400    IN    NS   ns2.zou.com.

MX:邮件交换器,可以有多个,、

name:当前区域名称,用于表明一个区域内的smtp服务器

value:当前区域某邮件交换器的主机名,(有优先级,范围为0-99,数字越小优先级越高,第二部分是FQDN)

注:MX记录可以有多个,但每个记录的value之前应该有一个数字,表示其优先级

例如:

zou.com.     600    IN     MX  10   mail.zou.com.        

zou.com.     600     IN    MX  20    mail2.zou.com.

A记录    目录是将FQDN转化成为ip,可以多个主机使用同一个ip,可以做负载均衡

name:某FQDN,例如www.zou.com.

value:某IPv4地址

可以一主机名多个ip,也可以一个ip多个主机名

例如:

www.zou.com.    600     IN    A  1.2.3.4

www.zou.com.       600      IN      A     5.6.7.8

mail.zou.com.        720       IN     A      5.6.7.8

*.zou.com.              1000     IN    A       5.6.7.8         这一条是为了防止用户写错

zou.com.                720       IN    A        5.6.7.8        这一条是为了一些习惯写域名访问网站的用户

@                           900       IN    A        5.6.7.8

AAAA

name :FQDN

value: IPv6

PTR:指针记录,这是保存在另一个文件里的,作为反向解析的,将ip转换成域名的,用于反向解析

name : IP地址,有其特定格式,要ip反过来写,

如 192.168.200.3   则写为3.200 或者3.200.168.192.in-addr.arpa.

value:FQDN,这个fqdn就不用再写一次A记录了

例如:

4.3.2.1.in-addr.arpa.      600     IN     PTR      www.zou.com.

CNAME:   别名

name:  FQDN格式的别名

value: FQDN的正式名称  只要value这个值是域名的时候,就要对这个域名一条A记录

例如:

www.zou.com.  IN    CNAME     webserver.zou.com.    www的正式名称是webserver,web的别名为www

mail   IN    CNAME    www    也可以简短格式

注意:

(1) TTL可以从全局继承

(2)@可以表示当前区域的名称

(3)相邻的两条记录其name相同时,后面可以省略

(4)对于正向区域来说,MX,NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录

(5)同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮训方式响应

(6)同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

 

DNS是一种协议,用软件来实现,其中以bind最为著名,也有powerdns,bind由ISC组织维护,

dns:协议

bind:为软件名称,dns协议的一种实现方式

unbound:7版本上的和bind一样可以提供dns服务的软件

named:bind程序运行的进程名

bind的程序包:

bind-libs   被bind和bind-utils这两个包程序共同用到的库文件

bind-utils   工具组件,bind客户端程序集,例如dig,host,nslookup等

bind       提供dns服务器server程序和解析器库文件以及几个常用的测试程序

bind-chroot    可选装;是一种安全机制,把某些目录当根来用,一旦有人入侵,刚获得named进程的权限,但是这个root只能在/var/named/chroot/内,它会模拟出来etc  root  bin sbin   var等目录,形成一个沙箱,安全起见而设定

只要安装了bind-chroot之后,当你开启named服务的时候就是把你的named的配置文件和数据库文件都会调动/var/named/chroot/目录内,你只用管/var/named/chroot/etc/named.conf   named.rfc.1912.zones

以及/var/named/chroot/var/named/目录下面的文件就可以了。

注:当你关闭named服务的时候,沙箱会先关闭,所以配置文件又回归原先的位置,如/etc/named.conf

named服务并不知道自己处于沙箱只用,所以检查配置文件和zone文件的时候请跟好文件路径

 

安装软件包

~】#yum install bind  bind-utils -y

在centos7上的版本为9.9.4

主配置文件:/etc/named.conf 

包含文件有:

/etc/namd.iscdlv.key

 /etc/named.rfs1912.zones

/etc/named.root.key

解析库文件

/var/namd/ 目录下

ZONE_NAME.zone    里面很多文件一般都是以区域名命名的文件(实际上什么名字都可以)

注:

一台DNS服务器可以同时为多个区域做解析

必须要有根区域解析库文件:namd.ca

还应该有两个区域解析库文件:localhost和127.0.0.1库文件/var/namd/named.{localhost,loopback}

脚本文件:/etc/rc.d/init.d/named

 /etc/sysconfig/named

 

主配置文件格式

全局配置段

option{ ...}

区域配置段

zone{... }       区域选项,定义哪些由本级负责解析的区域,zone  “ZONE NAME"{};

日志配置段

logging{... }      定义日志系统

{}前后都有空格,{}后面要有分号;每一个配置语句必须以分号结尾

*/ str... /*   注释

// str.....      注释

 

缓存名称服务器的配置

监听能与外部主机通信的地址;默认配置里面是写的127.0.0.1的所以要给删了

listen-on port 53;

listen-on port 53{172.16.1.1;};

学习时,建议关闭dnssec功能(设置结果为:)

dnssec-enable no;

dnssec-validation no;

dnssec-lookaside no;

检查配置文件的语法错误

~】# named-checkconf

后面什么也不跟,默认找/etc/namd.conf;当然可以后面跟指定的配置文件名

~】# systemctl start named.service

~】# netstat -ntul           查看端口是否启动

测试工具:  (查询的时候走的udp53端口,如果防火墙没有开启,查询是不能够测试的)

dig命令

作用:用于测试dns系统,因此其不会查询host文件

dig [-t RR_type ]  [-x ip]  [SQDN_name] [@server_ip]

RR_type 资源记录类型

查询选项:

-x    反向解析

+[no]trance        跟踪解析过程

+[no]recurse      进行递归解析

+[no]tcp               协议测试

~】# dig -t A www.magedu.com

模拟完全区域传送:

~】#dig -t axfr DOMAIN [@server]

dig -t  NS  .  找到全球的根目录,因该是13个

dig -t NS . @192.168.200.3让网关去掉根的A记录和/var/named/named.ca的内容是一样的

host命令:

格式:host [-t RR_type]name Server_ip

~】# host -t  A www.baidu.com

~】# host -t MX baidu.com         查看邮件交换器的名字

nslookup命令:

两种模式:

命令行模式

格式:nslookup[-opitons] [name] [server]

交互式模式

nslookup进入交互式模式

>

server ip :  已指定的ip为DNS服务器进行查询

set q=RR_type    要查询的资源记录类型

name     要查询的名称

rndc命令        named服务控制命令

rndc   名称服务器的远程控制工具,删除缓存,(remotename domain contoller)

默认工作在tcp953端口,默认与bind一起安装,默认监听在127.0.0.1(也就是仅允许本地远程本地,本地使用)

 

~】# rndc status

~】# rndc flush      清空服务器缓存,手动强制刷新已达到立即生效的目的

~】# rndc reload    重新装载配置文件和域数据库文件(代替了systemctl reload named)

这个命令后面可以跟某一个区域名zone

~】# rndc refresh zone  调度某一个zone处于维护状态,不让其解析

 

DNS服务器的正式搭建

 

正向解析

前提:注册域名,申请ip,有自己的主机

1)定义区域

~# vim /etc/named.conf

options {

        listen-on port 53 { localhost; };                       这里写localhost是监听本地所有ip

        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     { any; };                                       这里any是允许所有主机探测

  ~# vim /etc/named.rfc1912.zones

zone "jd.com" IN {

        type master;

        file "jd.com.zone";

}

2)建立区域数据文件           (主要记录为A

/var/namd目录下建立区域数据库文件

~#  vim jd.com.zone

$TTL   1H

$ORIGIN    jd.com.              这个宏的定义是在最后面的ns1不指定后面的,将自动补全  jd.com.

@        IN        SOA        ns1.jd.com.    admin.jd.com (                一个是dns服务主机名,一个是邮箱地址<没有用,而且ns1.jd.com可以为@,也可以直接写jd.com.>

                                                            2016070401        标识号

                                                            1H                        刷新时间

                                                   5M                       重试时间

                                                            2D                        过期时间

                                                            3H                    否定答案缓存时间

       IN            NS                 ns1                            这里的IN可以省略

ns1                     A                  172.16.1.1              每个服务器都应该有对应的主机名

webser               A                   172.16.1.1

www                  CNAME          webser

ftp                      A                   172.16.1.2

@                      MX  10        mail.jd.com.

mail                    A                  172.16.1.3

3 安全

~#  chown root:named jd.com.zone

~# chmod 644  jd.com.zone

4)检查语法错误并让服务器重新配置文件和区域数据文件

~named-checkconf /etc/named.conf

~# named-checkzone "jd.com" /var/named/jd.com.zone

~# rndc reload   或者 systemctl reload named.service

5)测试

~# dig -t A www.jd.com @172.16.1.1

如果已经配置了dns指向172.16.1.1,则

~# dig -t A www.jd.com

;; QUESTION SECTION:

;www.jd.com.                        IN        A

 

;; ANSWER SECTION:

www.jd.com.                60        IN        CNAME        web.jd.com.

web.jd.com.                60        IN        A        172.16.1.1

 

;; AUTHORITY SECTION:

jd.com.                        60        IN        NS        ns.jd.com.

 

;; ADDITIONAL SECTION:

ns.jd.com.                60        IN        A        172.16.1.1

 测试:~# dig -t NA www.jd.com

;; QUESTION SECTION:

;www.jd.com.                        IN        NS

 

;; ANSWER SECTION:

www.jd.com.                60        IN        CNAME        web.jd.com.

 

;; AUTHORITY SECTION:

jd.com.                        60        IN        SOA        ns.jd.com. admin.jd.com. 2015070408 60 300 172800 3600


配置一个反向区域

(1)定义区域

在主配置文件中或主配置文件include的辅助配置文件中实现:

~】# vim named.rfc1912.zones

zone "1.16.172.in-addr.arpa" IN {

        type master;

        file "172.16.1.zone";

}; 

2)建立反向区域数据文件

/var/namd目录下建立区域数据库文件

~#  vim 172.16.1.zone

$TTL   1H

$ORIGIN    1.16.172.in-addr.arpa.           

@        IN        SOA        ns1.jd.com. admin.jd.com(  

                                                                         2016070401        标识号

                                                                1H                        刷新时间

                                                        5M                       重试时间

                                                                 2D                        过期时间

                                                                 3H                    否定答案缓存时间

       IN            NS                 ns1.jd.com.                  这里必须要写全了ns.jd.com.    IN可以省略       

              IN         PTR                ns1.jd.com.

1                         PTR                   172.16.1.1

2                         PTR               ftp.jd.com

3.1.16.172.in-addr.arpa.    PTR       mail.jd.com

1           IN          PTR                 web.jd.com

在反向区域解析之中是不会有MX记录的,这个和邮箱记录没有关系

3 安全

~#  chown root:named172.16.1.zone

~# chmod 644  172.16.1.zone

4)检查语法错误并让服务器重新配置文件和区域数据文件

~named-checkconf/etc/named.conf          可以省略这个文件,如果是默认安装的情况

~# named-checkzone "1.16.172.in-addr.arpa" /var/named/172.16.1.zone

~# rndc reload   或者 systemctl reload named.service

5)测试

~# dig -x 172.16.1.1

注:这个反向解析,一般是不用的


配置主从DNS

注:主从复制只是区域级别的概念,因为DNS有正向区域和反向区域两种,所以要配置主从复制可以有:

1.A主机正向区域主,反向区域主;B主机正向区域从,反向区域没设置

2.A主机正向区域主,反向区域主;B主机正向区域从,反向区域从

3.A主机正向区域主,反向区域从;B主机正向区域从,反向区域主

4.A主机正向区域主,方向区域没设置;B主机正向区域从,反向区域没设置

如果建立主辅DNS服务器,要连接公网的话,就要和上级dns服务器说明白,告其有两个主机负责解析,让其建立两条指向(主辅DNS服务器都要给授权),当有请求的时候,第一条发送给A主机解析,第二条发送给B主机解析,已达到负载均衡的目的

主从dns:主bind版本可以低于从的,但最好两端版本是一样的,向区域中添加从服务器的关键两部:

在上级获得授权

在区域数据文件中添加一条ns记录和对应的A记录

前提是时间同步,ntpdate

(1)先配置好主DNS服务器,上面已经配置好了,这个时候找另外一台服务器作为从服务器

但是要确保区域文件中为每个从服务器配置NS记录,这样主才能更好的同步给从

加上          IN          NS      ns2

      ns2   IN        A       从DNS_ip

$TTL 1M

$ORIGIN jd.com.

@       IN    SOA   ns1.jd.com. admin.jd.com. (

                                        2015070410

                                        1M

                                        5M

                                        2D

                                        1H

                                                )

        NS      ns1

        NS      ns2

ns1     A       172.16.1.1

ns2     A       172.16.1.2

web     A       172.16.1.1

www     CNAME   web

@       MX 10   mail.jd.com.

mail    A       172.16.1.2

~# rndc reload   或者 systemctl reload named.service

2)配置从服务器

配置主配文件,并定义从区域

zone "ZONE_NAME" IN {

type slave;

file "slaves/ZONE_NAME.zone";

master {MASTER_IP;};

};

~# vim /etc/named.conf

options {

        listen-on port 53 { localhost; };                       这里写localhost是监听本地所有ip

        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     { any; };                                       这里any是允许所有主机探测

~# vim /etc/named.rcf1912.zones

zone "jd.com" IN {

        type slave;

        masters{172.16.1.1;};

        file "slaves/jdslave.com.zone";

};

配置文件语法检查并重载服务

~named-checkconf /etc/named.conf

~# named-checkzone "jd.com" /var/named/jd.com.zone

~# rndc reload   或者 systemctl reload named.service

之后从服务器就会向主服务上同步文件了之后根据标识号进行同步,这里同步文件有两种:

  1. pull    这是根据定义好的每多少时间向主拖拽一次,默认为1

  2. push   当主的dns解析域文件更改之后,要在标识号上手动增加1,如2016070402     ,之后重载服务,主向从复制区域配置文件

测试从服务器能否解析

~#  dig -t A ww.jd.com @172.16.1.2        这个要指向从dnsip通过它测试

注:安全隐患:

~# dig -t axfr jd.com @172.16.1.1     @后面指向主的dns服务器,测试能否传送

这种情况下,每个服务器都可以当主服务器的从服务器,这样比较不安全,所以要做好相应安全配置

~#  vim /etc/named.conf  加入一行 allow-query   {any};后面

allow-transfer  {172.16.1.2;};         允许和172.16.1.2传送区域资源记录

从服务器要是也追求安全的话

allow-transfer  {none;};


子域授权

正向解析区域授权子域的方法:

ops.jd.com.             IN       NS       ns1.ops.jd.com.

ops.jd.com.             IN       NS       ns2.ops.jd.com.

ns1.ops.jd.com.    IN        A          IP.AD.DR.ESS

ns2.ops.jd.com.    IN        A          IP.AD.DR.ESS

上面显示的子域服务器不止一个,每个子域都要在主服务器上写好对应的NS和A记录

做子域授权,子域可分为两种:

一种是子域和父域(也就是主DNS)在同一台上面,这个子域就相当于根父域同级的,你就可以理解为这就是一台服务器上设置两个域名,各自独立对待就可以了,都有各自的zone区域,在配置文件里都有各自的配置段

第二种就是分开设立子域和父域,这一般是正常点儿

确保时间同步,当然这两种方法,子域都是主的

(1)配置主DNS

***  ~】# vim /etc/named.conf

dnssec-enable no;      关闭安全

        dnssec-validation no;    

 

~】# vim jd.com.zone

$TTL 1M

$ORIGIN jd.com.

@       IN    SOA   ns1.jd.com. admin.jd.com. (

                                        2015070411         要修改这里要加1,因为设置了主从dns,需要同步

                                        1M

                                        5M

                                        2D

                                        1H  )

                   NS      ns1

                     NS      ns2                          加入子域的NSA记录,进行授权

ops    IN        NS         ns1.ops

ns1     A       172.16.1.1

ns2     A       172.16.1.2

ns1.ops    A        172.16.1.4                              要指向子域dns的服务器地址

web     A       172.16.1.1

www     CNAME   web

@       MX 10   mail.jd.com.

mail    A       172.16.1.2

2)配置子域DNS服务器  (可配置主dns相似)

~# yum install bind bind-utils -y

~# vim /etc/named.conf

options {

        listen-on port 53 { 172.16.1.4; };                       这里写localhost是监听本地所有ip

        listen-on-v6 port 53 { ::1; };

........     

        allow-query     { any; };                                       这里any是允许所有主机探测

    ~# vim ops.jd.com.zone 

$TTL   1H

$ORIGIN    ops.jd.com.            

@        IN        SOA        ns1.ops.jd.com.    admin.ops.jd.com (                                                                            

                                                                   2016070401        标识号

                                                            1H                        刷新时间

                                                   5M                       重试时间

                                                            2D                        过期时间

                                                            3H                    否定答案缓存时间

       IN            NS                 ns1                            这里的IN可以省略

ns1                     A                  172.16.1.4            

www                  A                   172.16.1.4

~】#  chown root:namedops.jd.com.zone

~】# chmod 644  ops.jd.com.zone

~】#  named-checkconf/etc/named.conf

~】# named-checkzone "ops.jd.com" /var/named/ops.jd.com.zone

~】# rndc reload   或者 systemctl reload named.service

~】# dig -t A www.ops.jd.com @172.16.1.4           子域解析

~】# dig -t A www.ops.jd.com @172.16.1.1          父域解析子域

~】# dig -t A www.jd.com @172.16.1.4                 测试子域解释父域是不能成功的

明明子域就在父域的下面,但是子域不能够解析父域,要先去找根服务器之后再一层层的找


转发

子域授权中的定义转发域

注:被转发的服务器必须允许为当前服务器做递归查询;

(1)区域转发    (仅转发对某特定区域的解析请求)

zone “ZONE_NAME”  IN {

type forward;

forward   first|only ;

forwarder {server_ip;};

};

first: 首先转发;转发器不响应时,自行去迭代查询

only:只转发

在子域服务器上面做如下操作:

~】# vim /etc/named.conf

options {

        listen-on port 53 { localhost; };                       这里写localhost是监听本地所有ip

.........      
allow-query     { any; };
  

~# vim /etc/named.rfc.1912.zones (加进去)

zone "jd.com" IN {

type forward;

forward only;   只允许本地内部的转发

forwarders {172.16.1.1;  172.16.1.2;};         转发器:这两个ip为父域的主从

}

~# named-checkconf

~# rndc reload

测试:   dig的过程当中显示的flags里面如果有aa是自己负责的权威应答,没有则是通过别人得到的答案

~#    dig -t A www.ops.jd.com @172.16.1.4      子域查询子域的有aa标志

~#   dig -t A www.jd.com @172.16.1.4         子域查询父域的转发后成功,这里没有aa标志

2)全局转发   (只要不是本地没有用过zone定义的区域的查询请求,统统转发给某个转发器)

options {

.........

forward {only|first};

forwarders {server_ip;}

......

};

编辑子域 ~# vim /etc/named.conf

加入   forward   only

forwarders  {172.16.1.1}

定义完成的之后:查询解析的时候,先去找自己的zone,如果自己的zone不能解析,则提交转发给172.16.1.1dns服务器,让其帮助完成查询解析

~# dig -t A www.baidu.com @172.16.1.4      

会发现能够完成解析,但是这并不知自己解析的,是172.16.1.1送过来的,前提172.16.1.1能够连接互联网


智能DNS

bind view bind视图,智能DNS,根据不同客户单的来源,将同一个域名解析成不同的结果,脑裂

注:设置DNS只能解析需要注意一下几点:

  1. acl 定义的ip必须要提前设置好,一般会在/etc/named.conf文件里面的option{}前面加上acl{},之后调用,而用不用在你

  2. 如果使用只能acl,你想要生效的所有域zone都必须统一写在viewer     {} 里面,用不到的zone可以删掉或者注释

  3. view自动化dns解析的时候,匹配范围小的放在前面,匹配范围大的放到后面

  4. 在你把zone向里面移动的时候,别忘了/etc/named.conf文件尾部有个根的zone,把它也要移动到viewer{}里面

  5. 如果要定义的域比较多的话,为了方便管理,我们可以这样:


假设有两个ip 1.1.1.1 2.2.2.2,当我们访问www.jd.com的时候,当用户通ip172.16.1.1访问DNS服务器的时候能够查询到1.1.1.1的;当用户使用172.16.1.2的时候为到2.2.2.2这里172.16.1.1相当于外网的电线DNS服务器,它去迭代查询域名信息

其中 172.16.1.3为只能DNS服务器

并且我这里用到的测试主机和域名比较少,所以就直接在配置文件里面修改了,当然也会视情况添加配置文件

1)首先安装bind服务,之后,编辑配置文件

~# vim /etc/namd.conf

acl host1{

        172.16.1.1;

        };

acl host2 {

        172.16.1.2;

        };

options {

        listen-on port 53 { localhost; };

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

        //allow-transfer  {172.16.1.2;};

并把以下的内容移动到/etc/namd.rfc1912.zones文件当中

zone "." IN {

        type hint;

        file "named.ca";

};

之后修改zone配置文件

   ~# vim /etc/named.rfc1912.zones

view host1 {

        match-clients {host1;};

        zone "." IN {

                type hint;

                file "named.ca";

                };

        zone "jd.com" IN {

                type master;

                file "magedu.com.zone1";

                };

        };

view host2 {

        match-clients {host2;};

        zone "." IN {

                type hint;

                file "named.ca";

                };

        zone "jd.com" IN {

                type master;

                file "magedu.com.zone2";

                };

        };

view other {

        match-clients {any;};

        zone "." IN {

                type hint;

                file "named.ca";

                };

        zone "jd.com" IN {

                type master;

                file "magedu.com.zone1";

                };

        };

之后我们要先后创建两个区域文件文件分别为

magedu.com.zone1         

$TTL 1M

$ORIGIN magedu.com.

@       IN    SOA   ns1.magedu.com. admin.magedu.com. (

                                        2015070417

                                        1M

                                        5M

                                        2D

                                        1H

                                                )

        NS      ns1

ns1     A       172.16.1.3

web     A       1.1.1.1

www     CNAME   web

maedu.com.zone2

$TTL 1M

$ORIGIN magedu.com.

@       IN    SOA   ns1.magedu.com. admin.magedu.com. (

                                        2015070417

                                        1M

                                        5M

                                        2D

                                        1H

                                                )

        NS      ns1

ns1     A       172.16.1.3

web     A       1.1.1.1

www     CNAME   web

随后为了安全要把文件的所有者和文件权限进行响应的调整

 [root@yuan named]# chown root:named magedu.com.zone1

        [root@yuan named]# chown root:named magedu.com.zone2

        [root@yuan named]# chmod 640 magedu.com.zone1

        [root@yuan named]# chmod 640 magedu.com.zone2

修改完权限之后,我们要对配置文件,和区域文件进行测试

[root@yuan named]# named-checkconf

[root@yuan named]# named-checkzone magedu.com magedu.com.zone1

zone magedu.com/IN: loaded serial 2015070417

OK

[root@yuan named]# named-checkzone magedu.com magedu.com.zone2

zone magedu.com/IN: loaded serial 2015070417

OK

确认无误后,重新加载服务

[root@yuan named]# rndc reload

这里我们配置完成,下面就是分别用两个测试机进行测试,查看是否能够智能解析

172.16.1.1的主机上操作测试:

[root@haizei ~]# dig -t A www.magedu.com @172.16.1.1

; <<>> DiG 9.9.4-RedHat-9.9.4-29.el7 <<>> -t A www.magedu.com @172.16.1.1

............

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

;; ANSWER SECTION:

www.magedu.com.                60        IN        CNAME        web.magedu.com.

web.magedu.com.                60        IN        A        1.1.1.1

;; AUTHORITY SECTION:

magedu.com.                60        IN        NS        ns1.magedu.com.

.......

;; ADDITIONAL SECTION:

ns1.magedu.com.                60        IN        A        172.16.1.3

172.16.1.2的主机上进行操作测试

[root@zou ~]# dig -t A  www.magedu.com @172.16.1.1

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -t A www.magedu.com @172.16.1.1

。。。。

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

;; ANSWER SECTION:

www.magedu.com.                60        IN        CNAME        web.magedu.com.

web.magedu.com.                60        IN        A        2.2.2.2

;; AUTHORITY SECTION:

magedu.com.                60        IN        NS        ns1.magedu.com.

;; ADDITIONAL SECTION:

ns1.magedu.com.                60        IN        A        172.16.1.3


本文出自 “北极的linux” 博客,请务必保留此出处http://941012521.blog.51cto.com/9253690/1813855

DNS与bind

标签:dns   bind   

原文地址:http://941012521.blog.51cto.com/9253690/1813855

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!