DNS

你有没有一个这样的问题困扰的你呢?若是咱们记忆IP地址你能记住多少个?5个?10个?20个?我想你只能记住经常使用的IP对吧?可是咱们想访问咱们想要的某个站点的页面,你能会使用IP地址访问么?显然不会,就像咱们平常使用的百度这样的网站,你会输入它的IP去访问么?确定不会,我想大部分人不知道百度的IP地址是多少的?咱们都是经过www.baidu.com这样的方式去访问,可是你知道,网络中并不能直接使用字母进行解析的,那如何实现这样的功能呢?DNS就是帮助咱们进行地址转换,是的咱们获取到IP地址去上网的。这样大大减轻了咱们的记忆内存。html

1、DNS

一、DNS概念

DNS(Domain Name System,域名系统)是互联网的一项服务。它将域名和IP地址相互映射的一个分布式数据库,可以令人方便地访问互联网。git

二、使用的端口

(1)53/TCP 53/UDPweb

(2)不一样协议的端口做用是什么呢?数据库

53/UDP:提供客户端查询功能
53/TCP和53/UDP:实现dns主从复制功能

三、DNS域名

开头咱们述说DNS是分布式数据库,想必你们猜到了DNS是层级结构的。 q.jpgvim

从图中能够看出DNS的层级结构数组

(1)根域(Top Level Domain,tld)缓存

(2)顶级域安全

(a)组织域, com,org,gov,mil等
(b)国家域,cn,ca,hk,tw等
(c)反向域,arpa

(3)二级域 ...bash

四、DNS服务器类型

(1)主DNS服务器服务器

做用:管理和维护负责解析的域内解析库的服务器

。 (2)从DNS服务器

做用:从主服务器或从服务器“复制”(区域间传输)解析库副本。

这里咱们须要注意一下,区域传输分为两种
(a)彻底传输(axfr):传送整个解析库;
(b)增量传输(ixfr):传递解析库变化的内容;

是否是你们想,主从DNS服务器时如何工做的呢?

有两种工做机制“PUSH”和“PULL”。当主DNS服务器配置文件中序列号发生递增,从新DNS服务;主DNS服务器会主动向从DNS服务器同步信息;这个过程称为'PUSH'。若是区域传输终端,没有同步成功,从服务器会根据配置文件中的”retry“指定的时间从新尝试同步信息,这个过程称为“PULL”。

五、DNS解析

DNS解析分为两种

(a)正向解析:FQDN-->IP
(b)反向解析:  IP-->FQDN

注意:正向解析是两个不一样的名称空间,是两个不一样的解析树,若是为子域则写DNS服务IP。

DNS查询类型:

(a)递归查询
(b)迭代查询

2017-09-19_214603.png

一次完整的DNS查询请求的过程:Client-->host文件-->DNS server Local Cache -->DNS server(recursion)-->Server Cache-->Iteration(迭代)-->Root-->TLD-->二级域名-->...

六、DNS资源类型

区域解析库由众多的RR(resource record)组成。存在不一样的类型:A,AAAA,SOA,CNAME,MX,PTR,NS。

资源记录的格式:

NAME    [TTL]    IN     RR_TYPE     VALUE

下面有几点须要注意的:

(a)$TTL变量,全局继承此处的缓存周期,默认单位为秒。

(b)@代替/etc/named.rfc1912.zones配置的ZONE_NAME.

(c)同一个名字能够经过多条记录定义多个不一样的值,此时DNS服务器会以轮询方式进行相应。

(d)同一个值可能有多个不一样定义的名字;经过多个不一样的名字指向同一个值进行定义。此仅表示经过多个不一样的名字能够找到同一个主机。

(1)SOA:Start Of Authority,起始受权记录。

value的构成:

(a)当前区域的主DNS服务器的 FQDN,也可使用/etc/named.rfc1912.zones配置的ZONE_NAME。

(b)当前区域管理员的邮箱地址,但地址中不能使用”@“,通常使用“.”替代。由于在配置文件中“@”表示特殊含义 。

(c)主从服务区域传输相关定义以及否认的答案的同一TTL。

@       IN SOA  @ rname.invalid. (
                                    0       ; serial    #解析库序列号,主服务器解析库变化时,递增,最长只能为十位数组成,通常为了方便管理这样管理“当前日期+版本号”
                                    1D      ; refresh   #刷新时间,从服务器从主服务器请求同步解析库的时间
                                    1H      ; retry     #重试时间,从服务器从主DNS服务器请求失败时,再次尝试的时间
                                    1W      ; expire    #过时时长,从服务器联系不到主服务器时,多久后中止服务
                                    3H )    ; minimum   #错误解析存活时长

注意:一个区域解析库只能有且仅有一个SOA记录,必须位于解析库的第一条记录。

(2)NS,Name Server ,名称服务

value:当前区域的某DNS服务器名称

注意:

(a)相邻的两个资源记录的NAME相同时,后续可省略。

(b)任何一个NS记录后面的服务器名字,都应该在后续有一个A记录。

(3)MX,Mail eXchange,邮件转换

value:当前区域的某邮件服务器的主机名

注意:

(1)在一个区域内能够有多个MX记录,可是每一个MX记录前应该有一个数字(0-99),表示服务器的优先级,数字越小优先级越高。

(2)任何一个MX记录后应该有一个A记录。

(4)A 记录

value:主机名对应的IP地址

对于A记录有如下几种定义格式:

(a)可使用FQDN

(b)可使用泛域名 *.ZONE_NAME,这种方式的好处是避免用户写错名称时给错误答案,将错误答案指向某特性的地址。

(c)若是一个网段中地址不肯定能够是使用 $GGENERATE #-# NAME$ 后面对应的地址也是,网段加$

示例:$GENERATE 100-150 host$     IN    A  192.168.4.$

(5)AAAA记录

(6)PTR PoinTeR IP,反向域名解析

格式:IP   PTR     FQDN
完整格式:135.4.168.192-in.adder.arpa    IN PTR dns1
若是192.168.4为网络地址,能够这样写 135  IN PTR DNS1

注意:主机地址要反着写。

(7)CNAME 别名

有时候咱们访问一个网站是www主机不必定是真正的主机。有可能使用了这种别名机制

示例: www IN CNAME    websrv

咱们在访问一个网址时,有可能为以下地址www.test.server.com对整个地址来讲真正的,test为server的子域。server为com的子域。n那么父域如何对子域进行受权呢?

子域受权:每一个域的名称服务器,都是经过父域服务器在解析库进行受权。

2017-09-19_193850.png

如图所述:想必你们多DNS的名称,过程有了必定的了解,下面经过看上面这张图,能够看出子域与父域的管理。经过观察图中,一个zone可有多个RR组成。能够粗略的看出DNS的容错功能,实现负载的做用。父域经过委派子域进行管理。

2017-09-19_194012.png

如图所示:DNS是工做在内核中的,用户是没有办法直接管理DNS服务,那要如何管理DNS服务呢?前人想出了Bind进行管理DNS服务。这样用户经过用户空间借助于Bind管理工具或配置文件就能够管理DNS服务了。

2、实现管理DNS

一、bind安装包

bind-libs.x86_64             #库包           
bind-libs-lite.x86_64       #     
bind-license.noarch        #认证包
bind-utils.x86_64            #提供对dns服务器的测试工具程序
bind-chroot                     #为bind提供一个假装的根目录以加强安全性

二、Bind配置文件

服务脚本/etc/rc.d/init.d/named/usr/lib/systemcd/system/named.service

主配置文件/etc/named.conf /etc/named/rfc1912.zones

存放根服务器地址 /var/named/name.ca

解析库文件 /var/named/ZONE_NAME_ZONE

注意:

(1)一台物理服务器可同时为多个区域提供解析。

(2)必需要有根文件:name.ca。

(3)应该有两个实现localhost和本地回环的解析库。

主配置文件/etc/namd.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.  #这个文件是一个参考例子
//
// See the BIND Administrator's Reference Manual (ARM) for details about the
// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html

options {                                       #全局设置
        listen-on port 53 { 127.0.0.1; };   #IPv4监听的端口和IP地址
        listen-on-v6 port 53 { ::1; };         #IPv6监听的端口
        directory       "/var/named";       #zone配置文件存放目录
        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; };     #容许询问

        /* 
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable 
           recursion. 
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification 
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface 
        */
        recursion yes;  #是否递归查询

        dnssec-enable yes;      #是否支持DNSSEC开关
        dnssec-validation yes;  #是否进行DNSSEC确认开关

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

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

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};

logging {                           #日志信息
        channel default_debug {
                file "data/named.run";  #存放的文件位置
                severity dynamic;       #工做模式
        };
};

zone "." IN {                       #根域
        type hint;                      #zone类型
        file "named.ca";            #文件名称
};

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

建议通常不要在这个文件中配置zone,能够在/etc/named.rfc1912.zones文件下进行配置。

/var/named/named.localhost 文件

$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  @
    A   127.0.0.1
    AAAA    ::1

通常这个文件做为一个模板文件进行zone的配置。

三、DNS转发服务器

(1)全局转发:对非本机所负责区域的请求,全转发给指定的服务器。

options{
    forward  first|only;
    forwarders { IP; };
};

(2)特定区域转发:仅转发对特定区域的请求,比全局转发优先级高。

zone "ZONE_NAME" IN {
    tyep    forward;
    forward first|only;
    forwarders { IP; }
};

四、从DNS服务器

(1)应该为一台独立的名称服务器

(2)主服务器区域解析文件中必须有一条NS记录指向从DNS服务器

(3)从服务器只须要定义区域,而无须提供解析库;解析库文件应该放置于/var/named/slaves目录下。

(4)主服务器得容许从服务器区域传送

(5)主从服务器的时间应该保持一致

(6)Bind程序版本应该保持一致;若是不一致,建议主服务器低,从服务器高。

(7)修改网卡配置文件/etc/sysconfig/network-scripts-ifcfg-INTERFACE,添加DNS记录。

五、容许动态更新

若是想启用此功能,能够在/etc/named.rfc1912.zones文件中定义之。

3、管理命令

一、dig命令

做用:只能用于测试DNS系统,不会查询hosts文件进行解析。

格式:

dig [@server] [-b address] [-c class] [-f filename] [-k filename] [-m]
       [-p port#] [-q name] [-t type] [-x addr] [-y [hmac:]name:key] [-4] [-6]
       [name] [type] [class] [queryopt...]

simple usage: dig @server name type

选项:

-b:绑定源IP
-4:仅使用IPv4
-t:指定RR类型,默认为A记录,atfr(反向解析)
-x:反向解析
+[no]trace:跟踪解析过程
+[no]recure:递归解析

二、host命令

格式:

 host [-aCdlnrsTwv] [-c class] [-N ndots] [-R number] [-t type] [-W wait]
        [-m flag] [-4] [-6] {name} [server]

选项:

-t:指定RR类型

三、nslookup

格式:nslookup [-option] [name | -] [server]

 nslookup>
server IP: 指明使用哪一个DNS server进行查询
set q=RR_TYPE: 指明查询的资源记录类型
NAME: 要查询的名称

四、rndc命令(953/tcp)

格式: rndc [-b source-address] [-c config-file] [-k key-file] [-s server] [-p port] [-V] [-y key_id] {command}

reload:重载主配置文件和区域解析库文件
retranfer:手动启动区域传送,而无论序列号是否增减;
notify:从新对区域传送发通知;
reconfig:重载主配置文件
querylog:开启或关闭查询日志文件`/var/log/message`
trace:递增debug一个级别
trace LEVEL:指定使用的级别
notrace:将调试级别设置为0
flush:清空DNS服务器的全部缓存记录

4、实战

(1)搭建主DNS服务器

(a)[root@localhost ~]# yum install -y bind #安装包 (b)[root@localhost ~]# vim /etc/named.conf #修改主配置文件

方式一: 2017-09-20_091807.png

方式二: 2017-09-20_092049.png

(c)[root@localhost ~]# vim /etc/ named.rfc1912.zones #修改zone文件

zone "test.com" IN {
        type master;
        file "test.com.zone"    #此地方能够写绝对路径和相对路径,若是写相对路径,默认为`/var/named/test.com.zone`,所以在`/var/named`目录下文件名必定要与这里的文件名一致。
};

(d)[root@localhost ~]# named-checkconf #使用命令对配置文件检查

/etc/named.rfc1912.zones:27: missing ';' before '}' #此时检查为27行处没有加";"修改完再检查便可。

2017-09-20_092600.png

注意:修改rfc1912.zones文件时,要以“;”结尾;参数与选项之间必须有空格隔开。

(e)修改zone文件[root@localhost named]# cp named.localhost test.com.zone

可是这里有一个问题,bind程序是以who的身份运行呢?下面经过命令查询看下: [root@localhost named]# ps aux |grep named

named      4002  0.2  1.2 161124 13028 ?        Ssl  09:55   0:00 /usr/sbin/named -u named

经过命令查看咱们看到是以name身份运行的,可是咱们在复制文件时,文件名时root,以下图;因此在复制过来之后记得修改文件的权限。

2017-09-20_095035.png

方法一:修改文件的所属组

[root@localhost named]# chgrp named test.com.zone

方法二:复制模板文件时,直接加“-p”

[root@localhost named]# cp -p named.localhost test.com.zone[root@localhost named]# vim test.com.zone #修改ZONE文件

$TTL 1D
@       IN SOA  dns1 mail.test.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns1
dns1    A       192.168.4.132

2017-09-20_093930.png

(f)加载zone文件

[root@localhost named]# rndc reload

(g)查看是否能够解析

[root@localhost named]# dig-t ns test.com @192.168.4.132 #在本机测试

2017-09-20_115226.png

在另一台机器上测试

修改这台机器上的DNS 2017-09-20_115354.png

测试

[root@localhost/etc/sysconfig/network-scripts]#dig -t ns test.com @192.168.4.132

2017-09-20_115520.png

(2)搭建从DNS服务器

在主机IP地址为192.168.4.144搭建从服务器

(a)安装bind包

(b)编辑/etc/named.conf

2017-09-20_140721.png

(c)编辑配置zone文件/etc/named.rfc1912zones

 zone "test.com" IN {
        type slave;     #修改类型
        masters { 192.168.4.132; }; #主DNS服务器的地址
        file "slaves/test.com.slave.zone";  #从DNS服务文件存放的位置
 };

2017-09-20_140912.png

(d)启动bind服务,使其生效

[root@localhost~]#systemctl restart named[root@localhost~]#ls /var/named/slaves/test.com.slave.zone

(e)测试

[root@localhost~]#dig www.test.com @192.168.4.144

2017-09-20_141458.png

(3)实现转发功能

假如一个公司有三台DNS服务器,A,B,C而且这三台主机不在同一个位置;A机器能够直接链接互联网,而B,C不能够直接链接互联网。用户使用电脑想访问www.qq.com,只能经过专线先到C再到A,而后才能访问www.qq.com,经过C转发到A。

方式一:全局转发

2017-09-20_144032.png

(1)分别在CentOS 6和CentOS 7 主机上设置,CentOS 7为转发

(A)在CentOS 6主机上配置

[root@localhost ~]# vim /etc/named.conf

2017-09-20_181534.png

[root@localhost ~]# vim /etc/named.rfc1912.zones

zone "test.com" IN {
        type master;
        file "test.com.zone";
};

重启服务

[root@localhost ~]# service named restart

(B)在CentOS 7主机上配置

[root@localhost~]#vim /etc/named.conf

2017-09-20_182100.png

切记,作这个实验室必定要关闭dnssec功能;dnssec-enable no; dnssec-validation no。

重启服务

[root@localhost~]#systemctl restart named

(C)修改客户端机器的dns

[root@localhost~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33

2017-09-20_182517.png

(D)在客户端机器上测试

[root@localhost~]#dig www.test.com @192.168.4.148 2017-09-20_182708.png

在这里给你们提个醒:本身搞这个明明很简单的搞了一个多小时都没有成功,缘由在于没有关闭dnssce功能。

方式二:特定区域转发

在CentOS 主机上配置

[root@localhost~]#vim /etc/named.rfc1912.zones

zone "test.com" IN {          
    type forward;       
    forward first;        
    forwarders {192.168.4.132;};
 };

[root@localhost~]#systemctl restart named #重启服务

在客户端主机上测试

2017-09-20_182708.png

(4)实现父域与子域的关系

在前面实验的基础上,执行以下操做:

(A)在CentOS 7主机上

[root@localhost~]#vim /etc/named.rfc1912.zones 建立zone

zone "do.test.com" IN {
       type master;
       file "do.test.com.zone"; 
 };

[root@localhost/var/named]#vim do.test.com.zone #配置解析库

 $TTL 1D
 @       IN SOA  dns1 rname.invalid. (
                                             0       ; serial
                                             1D      ; refresh
                                             1H      ; retry
                                             1W      ; expire
                                             3H )    ; minimum
                    NS      dns1
 dns1           A       192.168.4.148
 webserver   A     192.168.4.148
 www           CNAME   webserver

(B)[root@localhost named]# vim test.com.zone #在CentOS 6主机上修改解析库 2017-09-20_184101.png

[root@localhost named]# service named restart #重启服务

(C)重启服务测试

2017-09-20_185513.png

(5)主从服务器

案例前提:准备4台虚拟机

(A)CentOS6主机做为主DNS服务器,同上面的配置相似,这里就再也不阐述。

(B)在CentOS 7两台主机上作从DNS服务器,进行以下配置:

[root@localhost ~]# vim /etc/named.conf

2017-09-20_181534.png

[root@localhost~]#vim /etc/named.rfc1912.zones#建立zone

zone "test.com" IN {
      type slave;
      masters {192.168.4.132;};
       file "slaves/test.com.slave.zone";
 };

启动bind的服务便可以同步到/var/named/slaves目录下

[root@localhost~]#systemctl restart named[root@localhost~]#ll /var/named/slaves/test.com.slave1.zone

    -rw-r--r--. 1 named named 382 Sep 20 19:08 /var/named/slaves/test.com.slave1.zone

若是主从服务器想指定从DNS服务器,能够在/etc/named.conf配置文件中添加选项 allow-transfer {IP;};

在从服务器上添加“allow-transfer {none;};”在主DNS服务器上“allow-transfer {IP;};”这样就限制了。

注意:经过以上几个实验总结出须要注意的一些地方

一、在作实验过程当中必定要关闭dnssec功能;

二、复制文件/var/named/named.localhost作模板时,必定要加选项“-a”或“-p”选项。复制完成后必定看全部者、所属组和权限。

5、实战二

2017-09-20_193605.png

如何实现上述的拓扑图呢?先从底部网上一步一步的搭建

(1)实现主从DNS服务器

(a)修改主DNS服务器

[root@localhost~]#vim /etc/named.conf #修改主配置文件

2017-09-20_181534.png

[root@localhost~]#vim /etc/named.rfc1912.zones #建立zone

zone "test.com" IN {
         type master;
         file "test.com.zone";
 };

[root@localhost ~]# vim /var/named/test.com.zone #建立解析库文件

$TTL 1D
@       IN SOA  dns1 test.com. (
                                        2       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        IN      NS      dns1
dns1    A       192.168.4.132
webserver       IN      A       192.168.4.132
www     IN      CNAME   webserver

[root@localhost~]#vim /var/named/named.ca #修改根服务器文件

2017-09-20_195721.png

[root@localhost ~]# service named restart #重启bind服务

(b)配置从DNS服务器

主配置文件和配置从服务器同样,这里就再也不阐述[root@localhost~]#vim /etc/named.rfc1912.zones

 zone "localhost" IN {
         type master;
         file "named.localhost";
         allow-update { none; };
 };

[root@localhost~]#systemctl restart named#重启服务[root@localhost~]#ll /var/named/slaves/test.com.slave.zone #查看是否成功

(2)配置子域

[root@localhost~]#vim /etc/named.rfc1912.zones #建立zone

zone "com" {
         type master;
       file "com.zone";
 };

[root@localhost~]#vim /var/named/com.zone #建立解析库

  $TTL 1D
 @       IN SOA  dns1 rname.invalid. (
                                         0       ; serial
                                         1D      ; refresh
                                         1H      ; retry
                                         1W      ; expire
                                        3H )    ; minimum
         NS      dns1
 test    NS      dns2
 dns1    A       192.168.4.147
 dns2    A       192.168.4.132
 www     A       192.168.4.66

[root@localhost~]#systemctl restart named #重启bind服务

2017-09-20_212355.png

(3)根

[root@localhost~]#vim /etc/named.rfc1912.zones

 zone "." IN {
          type master;
         file "root.zone";
 };

删除配置文件中/etc/named.conf以下内容 2017-09-20_204827.png

[root@localhost/var/named]#vim root.zone #建立解析库

   $TTL 1D
   @       IN SOA  dns1 rname.invalid. (
                                           0       ; serial
                                           1D      ; refresh
                                           1H      ; retry
                                           1W      ; expire
                                           3H )    ; minimum
           NS      dns1
   com     NS      dns2
  dns1    A       192.168.4.146
  dns2    A       192.168.4.147

[root@localhost/var/named]#systemctl restart named重启服务

2017-09-20_212932.png

这样咱们搭建完成了。是不是颇有成就感呢?哈哈。当你们看到这里的时候是否是发现咱们没有对从DNS服务器作设置呢?若是主DNS挂了,那么从DNS能工做么?下面咱们就来讲道说道。

假设主DNS服务器down(IP 192.168.4.132 )

[root@localhost ~]# ifconfig eth0 down #将主DNS服务器down掉

[root@localhost ~]# rndc flush #清除主DNS服务器的缓存

在Client客户机测试 (IP 192.168.4.149)

[root@localhost~]#dig www.test.com @192.168.4.147

2017-09-21_194440.png

如图所示,没有解析成功,说明咱们的从DNS服务器没有起做用,没有实现负载均衡做用。有没有想过为何出现这种状况呢?由于咱们没有在com域中没有添加这条域,下面咱们在com域中添加此从DNS服务器的dns记录测试

在com域中添加以下记录

[root@localhost/var/named]#vim com.zone 
2017-09-21_194536.png

[root@localhost/var/named]#rndc flush #清除缓存

在client客户机上测试

[root@localhost~]#dig www.test.com @192.168.4.148 2017-09-21_195643.png

这样说明咱们从DNS服务器起到了,达到了容错功能。是否是有点小小的成就感呢?

6、DNS的管理功能

你是否是有这样的想法,只想让某个IP或者某个IP端的地址进行访问,实现访问控制功能。DNS服务给咱们提供了很好的解决方法。

一、选项

allow-query {}; 容许查询的主机,至关于白名单
allow-transfer {}; 容许区域传送的主机
allow-recursion{}; 容许递归的主机,这个选项建议在options中使用
allow-update{}; 容许更新区域数据库中的内容

二、acl

acl:是把某个IP或IP端合并为一个集合,经过一个统一的名称调用;能够把这个理解为bash函数的功能。

(1)acl内置的选项

none 没有一个主机
any 任意主机
localhost 本机
localnet 本机的IP同掩码运算后获得的网络地址

注意:acl只能先定义再使用;建议通常定义再options的前面。

(2)示例

[root@localhost ~]# vim /etc/named.conf

2017-09-21_202629.png

从新启动服务而后在本机测试[root@localhost ~]# dig www.test.com @127.0.0.1

2017-09-21_202925.png

因为咱们设置了acl功能,全部本机也不能访问了。实现咱们的预期效果。

7、view

你们小时候去网吧的时候有没有遇到这样一个问题,若是你玩问道在电信1玩,而你的网络是联通的网络,这样开始玩游戏的过程当中,咱们的屏反应会迟钝,频很高;可是网络提供一个网络转换程序,若是你切换到电信网络,问道游戏运行流畅;这至关于咱们这里view的功能。实现只能DNS解析,不过不须要咱们手动切换网络。

(1)一个bind服务器能够定义多个view;每一个view能够定义多个zone。每一个view匹配一组客户端。

(2)若是多个view对同一个zone进行解析时,使用不一样的zone解析库文件。

实战

若是咱们在北京和广州有两台DNS服务器,北京和广州用户经过访问www.test.com的时候,我但愿北京访问直接在北京DNS解析并返回,广州与它相同,如何实现嗯?

在一台因为我电脑有两个不一样的IP段,在一台机器上实现这个功能

(a)修改/etc/named.conf文件

2017-09-21_212202.png2017-09-21_212250.png

(b)建立/etc/named.rfc1912.zones.test/etc/named.rfc1912.zones.app分别修改

2017-09-21_212508.png

2017-09-21_212553.png

(3)建立zone文件/var/named/app.com.zone/var/named/app.com.zone分别修改

2017-09-21_212818.png

2017-09-21_212852.png

(4)重启dns服务 [root@localhost named]# service named restart

在Clinet客户机上测试(IP 192.168.4.148和172.18.253.86)

2017-09-21_213117.png

2017-09-21_213211.png

当当当,成功!!!

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息