Linux学习笔记之   DNS原理介绍、DNS搭建、主从复制、子域授权和视图

相关理论介绍



什么是DNS?

DNS( Domain Name System)是“域名系统”的英文缩写,是因特网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

DNS域名空间:

整个DNS架构是一颗倒置的树状层次结构,这个树状结构称为DNS域名空间(DNS domain namespace)。自顶而下依次是根域,顶级域,二级域,其种二级域是供公司和个人申请使用。

FQDN:(Full Qualified Domain Name)完全合格限定域名,是指包含全路径的主机名(列出了所有域),保证可以在DNS空间中准确定位主机,也就是主机名的一种完全表示形式。

DNS软件:实现DNS服务的程序

BIND:Berkely Internet Name Domain ,ISC (www.isc.org) ,使用最广方的DNS软件

DNS服务器:域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。

解析类型:

Name-->IP 正向解析

IP-->Name 反向解析

注意:正反向解析是完全不同的两颗解析树,不必在同一个服务器上,正反向区域记录也没必要完全对应

DNS查询模式:

递归(Recursion):一次询问就要得到结果的查询方式,客户端本地指向的DNS服务器,多工作在此种模式,它收到客户端请求后,会全权负责代替客户端去做解析,知道得到答案回复给客户端。

迭代(Interactive):每次查询得到的是一个相对答案,需要多次询问,才能得到最终答案,互联网上DNS之间的查询模式多是迭代查询。每个DSN只专门负责自己改解析的区域。

主DNS服务器:维护所负解析的域内解析库服务器;解析库由管理员维护

从 DNS服务器:从主DNS服务器或其它DNS服务器那里"复制"(区域传递)一份解析库

序列号:解析库的版本号,前提,任何时候,主服务器解析库发生变化,其序列递增

刷新时间:从服务器从主服务器请求同步的时间间隔

重试时长:从服务器请求同步失败时,再次尝试的时间间隔(小于刷新间隔)

过期时长:从服务器始终联系不上主服务器时候,多久之后放弃服务器角色,停止提供服务

"通知"机制:即便下次同步时间没到,如果主服务器记录有变更,会主动通知从服务器过来同

步数据区域传送:

全量传送:传递整个解析库

增量传送:传送解析库变化的那部分内容

区域解析库:由众多资源记录组成

资源记录:Resource Record (RR)

记录类型:A, PTR, SOA, NS, CNAME, MX...

SOA: Start Of Authority, 起始授权记录,一个区域解析库有且仅有一个SOA记录,且必须为解析库的第一条记录

A: Internet Address,作用 FQDN-->IP

AAAA: FQDN-->IPV6

PTR: PoinTeR, IP-->FQDN

NS: Name Server, 专用于标明当前区域的DNS服务器

CNAME: Canonical Name,别名记录

MX: Mail Exchanger, 邮件交换器,标明当前域内谁是邮件服务器

资源记录定义的格式:

语法:name    [TTL]    IN    RR_type    value

注意:

1.TTL可以全局集成,TTL是指允许其他服务器将数据在缓存中存放TTL 所指定的时间。如果你的数据不是经常变动或变动不大,可以考虑将TTL默认

值设为几天

[email protected]可用于引用当前区域的名字

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

4.同一个值也可能有过个不同的定义名字,通过多个不同的名字指向同一个值定义,仅表示通过多个不同的名字找到同一个主机

注:为了方便描述,下文所用到的 hsp.com. 是一个虚拟的域名

SOA:(Satart Of Authorization 起始授权记录)



name: 当前区域的名字,例如“hsp.com.”

value: 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字

1.当前区域的主DNS服务器FQDN,也可以使用当前区域的名字

2.当前区域的管理员的邮箱地址,但邮箱地址中不可使用@,一般用.替换,如admin.hsp.com

3.(主从服务协调的属性以及否定的答案的统一的TTL)

如:

hsp.com.86400IN SOA ns.hsp.com. nsadmin.hsp.com. (

201509100;序列号

2H;刷新时间

10M;重试时间

1W    ;过期时间

1D    ;否定答案的TTL值

)

NS:Name Server



name:当前区域的名字

value:当前区域的某DNS服务器的名字,例如:ns.hsp.com.

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

例如:

hsp.com.IN NS ns1.hsp.com.

hsp.com.IN NS  ns2.hsp.com.

注意:

1.相邻的两个资源记录的name相同时,后续的可省略,上述示列中第二行的name hsp.com. 可以省略不写

2.对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录

MX: Mail Exchanger



name:当前区域的名字

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

一个区域内,MX记录可以有多个,但是每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级,数字越小,优先级越高

例如:

hsp.com.IN MX   10 mx1.hsp.com.

IN MX 20 mx2.hsp.com.

注意:

1.对于MX记录而言,任何一个MX记录后面的服务器名字,都应在后续有一个A记录

A:Address



name:某主机的FQDN名,如www.hsp.com.

value:主机名对应的主机的IP地址

例如:

www.hsp.com.IN A 1.1.1.1

www.hsp.com.IN A1.1.1.2

mx1.hsp.com.IN A 1.1.1.3

mx2.hsp.com.IN A 1.1.1.3

注:一下两种书写代表泛域名解析,避免用户写错名称时给错误答案,可通过泛域名解析至某特定地址

*IN A 1.1.1.4

hsp.com.IN      A    1.1.1.4

AAA: IPv6的A纪录

name:FQDN

value:IPv6,同上,只是IP地址是IPv6格式的地址

PRT:



name:IP地址,遵循固定格式,IP地址需反向书写,1.2.3.4 要写做4.3.2.1,且特定后缀是in-addr.arpa.,完整写法为4.3.2.1-in-addr.arpa.

value:FQDN

例如:

4.3.2.1.in-addr.arpa.IN PRT www.hsp.com.

简写成:4IN PTR www.hsp.com.

注意:网络地址及后缀可以省略,主机地址依然需要反向书写

CNAME:



name:别名的FQDN

value:正式名字的FQDN

如下配置:如果访问www.hsp.co.cn ,则会被引导至www.hsp.com.

www.hsp.com.cn IN CNAME www.hsp.com.



实验目标:搭建DNS服务器,实现正向,反向解析,及DNS服务器主从复制功能 ,子域授权,视图。

实验环境:

1.主机S1 IP地址为:172.17.0.10   

  主机S2 IP地址为:172.17.0.30

  主机S7 IP地址为: 172.17.0.20

实验步骤:

首先在S1上实现缓存服务器设置



一:检查bind软件包有无安装如下软件包,如果没有,使用yum install安装

~]$rpm -qa bind*
bind-libs-9.8.2-0.37.rc1.el6.x86_64        #库文件
bind-9.8.2-0.37.rc1.el6.x86_64            #bind 程序
bind-utils-9.8.2-0.37.rc1.el6.x86_64        #工具包
bind的相关文件路径:
/etc/named.conf  #主配置文件
/etc/named.rfc1912.zones  #区域配置文件
/var/named  #保存区解析库文件的目录


二:编辑主机S1的bind的配置文件(etc/named.conf,/etc/named.rfc1912.zones)

       配置文件中可以使用//或/*   */ 来注释
options {                Opions 里定义的全局配置,会对所有区域生效,如监听端口扥等                           
//      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; };          #允许查询的客户端,可以使用any ;none;localhost,IP等来做限制
        recursion yes;      #是否认允许给客户端递归查询,本地DNS这个一定要开启                                
        dnssec-enable no;    #dnssec 安全相关的高级配配置,关闭dnssec功能
        dnssec-validation no;  #dnssec 安全相关的高级配置,关闭dnssec功能
//      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;   #hint 是根区域类型, 可选类型有hint|master|slave 分别代表根区域|主区域|从区域
        file "named.ca";   #区域解析库文件
};
include "/etc/named.rfc1912.zones";  #代表会读取/etc/named.rfc1912.zones中定义的区域文件
//include "/etc/named.root.key";
]#named-checkconf   #检查配置文件是否有语法错误,没有任何输出则代表语法正确
[[email protected] ~]# service named start  #尝试启动bind 服务
Generating /etc/rndc.key:                              [  OK  ]
Starting named:                                     [  OK  ]
 
[[email protected] ~]# ss -tuan | grep 53    #检查默认端口53有没有正常监听
udp    UNCONN     0      0            172.17.0.10:53                    *:*  
...省略了其它不相关的N行输出
  注:至此,S1 server 172.17.0.10 已经可以作为一个缓存服务器工作。


三:修改主机S1的区域配置文件 (/etc/named.rfc1912.zones),添加如下zone

zone "hsp.com" IN {
        type master;
        file "hsp.com.zone";
        allow-update { none; };
};
]$named-checkconf  #检查配置文件是否有语法错误
四:创建区正向解析库文件
]$cd /var/named/
[[email protected] named]# vim hsp.com.zone  #创建区域数据文件hsp.com.zone,文件内容如下
[[email protected] named]# chmod 640 hsp.com.zone     #修改权限为640
[[email protected] named]# chown .named hsp.com.zone     #改变属组为named
[[email protected] named]# ll hsp.com.zone    #验证权限和属组
-rw-r----- 1 root named 374 Sep 20 21:57 hsp.com.zone
   
[[email protected] named]# named-checkzone "hsp.com" hsp.com.zone   #检查区域数据文件是否有语法错误
zone hsp.com/IN: loaded serial 3940705495
OK
[[email protected] /var/named]$chown :named hsp.com.zone   #修改hsp.com.zone的属组为named(因named服务会以named用户来运行服务)
[email protected] /var/named]$ll hsp.com.zone   #验证文件权限为640,属组为named
-rw-r----- 1 root named 330 Sep 17 00:02 hsp.com.zone
[[email protected] /var/named]$service named start  #启动named服务
Starting named:             [  OK  ]
[[email protected] named]# host -t A ns1.hsp.com 172.17.0.10    #使用host 命里测试能否成功正向解析ns1.hsp.com,
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
ns1.hsp.com has address 172.17.0.10    #对照hsp.com.zone数据文件,可知解析成功
#同理,解析mx1.hsp.com,对照hsp.com.zone文件,可知解析成功
[[email protected] named]# dig -t  A mx1.hsp.com. 172.17.0.10
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A mx1.hsp.com. 172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14750
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;mx1.hsp.com.INA
;; ANSWER SECTION:
mx1.hsp.com.86400INA172.17.0.40      #此处可见解析成功
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
hsp.com.86400INNSns2.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
ns2.hsp.com.86400INA172.17.0.30
;; Query time: 3 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Mon Sep 21 00:15:18 2015
;; MSG SIZE  rcvd: 113
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 45733
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;172.17.0.10.INA
;; AUTHORITY SECTION:
.10783INSOAa.root-servers.net. nstld.verisign-grs.com. 2015092000 1800 900 604800 86400
;; Query time: 3 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Mon Sep 21 00:15:18 2015
;; MSG SIZE  rcvd: 104
测试泛域名解析:
[[email protected] named]# host -t A 88.hsp.com 172.17.0.10    #尝试正向解析不存在的主机88.hsp.com
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
88.hsp.com has address 172.17.0.99   #解析到了172.17.0.99 ,正是在区域文件的添加的泛域名解析的IP,所以成功。

注:至此主DNS正向解析成功完成 ;接下来,将在S1上创建反向解析区域和解析库文件。

]$vim /etc/named.rfc1912.zones    #修改区域配置文件,在文件末尾添加如下反向解析区域"0.17.172.in-addr.arpa"
zone "0.17.172.in-addr.arpa" IN {
        type master;
        file "0.17.172.zone";
};    
~]$cd /var/named/
[[email protected] named]# vim 0.17.172.zone    #创建如下反向解析文件

[[email protected] named]# chmod 640 0.17.172.zone     #修改权限为640
[[email protected] named]# chown .named 0.17.172.zone     #修改其属组为named
[[email protected] named]# ll 0.17.172.zone     #验证权限,属组修改成功
-rw-r----- 1 root named 347 Sep 21 00:31 0.17.172.zone
[[email protected] named]# named-checkzone "0.17.172.in-addr.arpa" 0.17.172.zone     #检查反向解析文件有无语法错误
zone 0.17.172.in-addr.arpa/IN: loaded serial 3940705495
OK
[[email protected] named]# rndc reload        #重新加载配置文件
server reload successful
[[email protected] named]# dig -x 172.17.0.40 @172.17.0.10    #反向解析IP 172.17.0.40
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.17.0.40 @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3858
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;40.0.17.172.in-addr.arpa.INPTR
;; ANSWER SECTION:
40.0.17.172.in-addr.arpa. 86400INPTRmx1.hsp.com.    #解析正确
;; AUTHORITY SECTION:
0.17.172.in-addr.arpa.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 1 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 02:00:21 2015
;; MSG SIZE  rcvd: 101
也可以使用nslookup 来做测试:
[[email protected] named]# nslookup
> 172.17.0.10    #指定DNS服务器
Server:172.17.0.10
Address:172.17.0.10#53
10.0.17.172.in-addr.arpaname = ns1.hsp.com.
10.0.17.172.in-addr.arpaname = www.hsp.com.0.17.172.in-addr.arpa.
> 172.17.0.40
Server:172.17.0.10
Address:172.17.0.10#53
40.0.17.172.in-addr.arpaname = mx1.hsp.com.         #解析成功

至此,主DNS服务器正反向解析成功


小结一下以上测试用到过的的命令有dig, nslook,host



dig [-t type] name [@SERVER] [query options]

dig用于测试dns系统,因此,不会查询hosts文件进行解析;
   查询选项:
+[no]trace:跟踪解析过程
        +[no]recurse:进行递归解析
测试反向解析:
        dig -x IP @SERVER
模拟区域传送:
        dig -t axfr ZONE_NAME @SERVER
[[email protected] slaves]# dig -t axfr hsp.com @172.17.0.10   #可传送整个解析区域
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t axfr hsp.com @172.17.0.10
;; global options: +cmd
hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400
hsp.com.86400INNSns1.hsp.com.
hsp.com.86400INMX10 mx1.hsp.com.
*.hsp.com.86400INA172.17.0.99
ftp.hsp.com.86400INCNAMEwww.hsp.com.
mx1.hsp.com.86400INA172.17.0.40
ns1.hsp.com.86400INA172.17.0.10
www.hsp.com.86400INA172.17.0.10
hsp.com.86400INSOAns1.hsp.com. admin.hsp.com. 3940705495 7200 600 604800 86400
;; Query time: 2 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Thu Sep 24 22:23:30 2015
;; XFR size: 9 records (messages 1, bytes 229)

host命令:

host [-t type] name [SERVER]

[[email protected] slaves]# host -t A www.hsp.com 172.17.0.10
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
www.hsp.com has address 172.17.0.1

nslookup命令:

nslookup [-option] [name | -] [server]
交互式模式:
nslookup>
server IP: 指明使用哪个DNS server进行查询;
set q=RR_TYPE: 指明查询的资源记录类型;
NAME: 要查询的名称;

然后实现从DNS服务器配置

一:如上文创建主DNS服务器时一样,编辑主配置文件/etc/named.conf, 注释掉不需要的配置,关闭dnssec等等。

二:编辑/etc/named/named.rfc ,添加如下两个区域文件:

zone "hsp.com" IN {
        type slave;            #类型为slaves
        masters {172.17.0.10;};    #指定它的主DNS服务器
        file "slaves/hsp.com.zone";    #路径必须在slaves下,区域名和主DNS中的区域名必须对应
};
zone "0.17.172.in-addr.arpa" IN {
        type slave;    #类型为slaves
        masters {172.17.0.10;};    #指定它的主DNS服务器
        file "slaves/0.17.172.zone";    #路径必须在slaves下,区域名和主DNS中的区域名必须对应
};

三:启动named 服务

[[email protected] slaves]# named-checkconf    #检查配置文件有无语法错误,没有任何输出代表语法正确
[[email protected] slaves]# service named restart    #重启named服务
Stopping named:                                         [  OK  ]
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                         [  OK  ]
[[email protected] slaves]# ls #可以发现区域文件已经自动传送过来了
0.17.172.zone  hsp.com.zone
[[email protected] slaves]# host -t A www.hsp.com 172.17.0.30    #正解www.hsp.com
Using domain server:
Name: 172.17.0.10
Address: 172.17.0.10#53
Aliases: 
www.hsp.com has address 172.17.0.10    #正解成功
[[email protected] slaves]# host -t PTR ftp.hsp.com 172.17.0.30    #通过从DNS服务器正解ftp.hsp.com
Using domain server:
Name: 172.17.0.30
Address: 172.17.0.30#53
Aliases: 
ftp.hsp.com is an alias for www.hsp.com.

四:验证主从同步功能,主DNS服务器S1的修改,能否自动传送到从DNS服务器S2

修改主DNS服务器,添加一条A记录 172.17.0.66,并将版本号+1

[[email protected] named]# rndc reload
server reload successful
#tail /var/log/messages    #查看系统日志

查看DNS服务器区域文件是否有刚刚添加的新记录

至此: 主从,同步完成。



创建子域并实现子域授权:



此时将创建子域ops.hsp.com,并将S7作为子域的DNS服务器

S7  172.17.0.20

一:创建子域ops.hsp.com DNS服务器

[[email protected] named]# vim /etc/named.rfc1912.zones   #创建如下区域
zone "ops.hsp.com" IN {
        type master;
        file "ops.hsp.com.zone";
};
[[email protected] named]# named-checkconf #检查配置文件语法
[[email protected] named]# vim /var/named/ops.hsp.com.zone    #区域解析库文件内容如下

[[email protected] named]# named-checkzone "ops.hsp.com" ops.hsp.com.zone #检查解析库文件语法
zone ops.hsp.com/IN: loaded serial 2015092000
OK
[[email protected] named]# systemctl restart named.service    #重启服务
[[email protected] named]# systemctl status named.service     #查看服务状态
named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled)
   Active: active (running) since Mon 2015-09-21 18:37:43 CST; 11s ago....
...此处略去N行输出信息...
www.ops.hsp.com has address 172.17.0.23
[[email protected] named]# host -t A ns1.ops.hsp.com 172.17.0.20
Using domain server:
Name: 172.17.0.20
Address: 172.17.0.20#53
Aliases: 
ns1.ops.hsp.com has address 172.17.0.20

二:验证能否解析子域本身

[[email protected] named]# host -t A www.ops.hsp.com 172.17.0.20    #可以解析ops区域
Using domain server:
Name: 172.17.0.20
Address: 172.17.0.20#53
Aliases: 
www.ops.hsp.com has address 172.17.0.23

三:在主DNS服务器S1授权子域ops.hsp.com 

如下图所示,在主DNS服务器上添加

四:在主DNS服务器测试能否解析子域

[[email protected] named]# dig -t A ns1.ops.hsp.com @172.17.0.10
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t A ns1.ops.hsp.com @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1483
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;ns1.ops.hsp.com.INA
;; ANSWER SECTION:
ns1.ops.hsp.com.86099INA172.17.0.20     #成功解析
;; AUTHORITY SECTION:
ops.hsp.com.86099INNSns1.ops.hsp.com.
;; Query time: 4 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 03:14:38 2015
;; MSG SIZE  rcvd: 63

五:测试在子域能否解析父域

[[email protected] named]# dig -t A ftp.hsp.com @172.17.0.20
; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A ftp.hsp.com @172.17.0.20
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33341
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;ftp.hsp.com.INA
;; ANSWER SECTION:
ftp.hsp.com.86400INCNAMEwww.hsp.com.        #解析成功
www.hsp.com.85911INA172.17.0.10
;; AUTHORITY SECTION:
hsp.com.85911INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.85911INA172.17.0.10
;; Query time: 145 msec
;; SERVER: 172.17.0.20#53(172.17.0.20)
;; WHEN: Wed Sep 30 03:15:41 CST 2015
;; MSG SIZE  rcvd: 108

视图



Bind View:为了实现来自不同区域的客户,解析到不同的之地址,返回到不同的结果

试图:

一个bind服务器可以定义多个view,每个view中可以定义一个或多个zone 每个view用来匹配一组客户端

多个view内可能需要对同一个区域进行解析,但使用不同区域解析库文件

view VIEW_NAME {

match-clients {};

}

注意:

1.一旦启用了view,使用zone都只能定义在view中

2.仅有必要在匹配到允许递归请求的客户所在的view中定义根区域

3.客户端请求到达时,是自上而下

利用视图,实现分离解析:(不同客户端请求解析同一主机,得到不同的解析结果)



重新规划S1,S2的IP地址如下图所示

S1有两张网卡,地址分别为192.168.1.110,172.17.0.10

S2IP地址为192.168.1.111

期望172.17网段客户机和其它网段客户机对www.hsp.com解析出不同结果

一:先在主配置文件中定义一个acl方便后续使用

二:创建视图internal,external

view internal {                #视图internal的起始标记
        match-clients { mynet; };                
        allow-recursion { mynet; };        
zone "." IN {   #所有需要查询的ZONE,都必须放置于视图中,所有,将/etc/named.conf 中的根区域移动至此处
        type hint;
        file "named.ca";
};
zone "localhost.localdomain" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "localhost" IN {
        type master;
        file "named.localhost";
        allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
        type master;
        file "named.loopback";
        allow-update { none; };
};
zone "0.in-addr.arpa" IN {
        type master;
        file "named.empty";
        allow-update { none; };
};
zone "hsp.com" IN {
        type master;
        file "hsp.com.zone";
zone "0.17.172.in-addr.arpa" IN {
        type master;
        file "0.17.172.zone";
        notify yes;
        also-notify {172.17.0.30;};
};
};        #视图internal的结束标记 
view external {        #视图external,用来为S2 192.168.1.111提供单独解析,因为其IP并不会被上面internal 中的acl匹配到,所以用此视图中的区域解析库文件
        match-clients { any; };
        zone "hsp.com" in {
        type master;
        file "hsp.com.external";    #单独的及解析库文件
        allow-update { none; };
};
};
[
roo[email protected] named]# named-checkconf     #检查语法
[[email protected] named]# cp -a  hsp.com.zone hsp.com.external   #复制原解析库作为模板
并做如下修改

[[email protected] named]# rndc reload    #重载配置文件
server reload successful

三:验证解析结果

[[email protected] ~]# dig -t A music.hsp.com @192.168.1.110
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6_7.4 <<>> -t A music.hsp.com @192.168.1.110
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18864
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;music.hsp.com.INA
;; ANSWER SECTION:
music.hsp.com.86400INA172.17.0.166  #它用的hsp.com.external库文件解析的,实验成功
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 5 msec
;; SERVER: 192.168.1.110#53(192.168.1.110)
;; WHEN: Wed Sep 30 04:54:35 2015
;; MSG SIZE  rcvd: 81
[[email protected] ~]# dig -t A music.hsp.com @172.17.0.10
; <<>> DiG 9.9.4-RedHat-9.9.4-18.el7 <<>> -t A music.hsp.com @172.17.0.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4712
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;music.hsp.com.INA
;; ANSWER SECTION:
music.hsp.com.86400INA172.17.0.66 #解析出来的仍旧是172.17.0.66,因为它被Internal view匹配到了
;; AUTHORITY SECTION:
hsp.com.86400INNSns1.hsp.com.
;; ADDITIONAL SECTION:
ns1.hsp.com.86400INA172.17.0.10
;; Query time: 5 msec
;; SERVER: 172.17.0.10#53(172.17.0.10)
;; WHEN: Wed Sep 30 05:00:43 CST 2015
;; MSG SIZE  rcvd: 92

补充:



bind中基础的安全相关的配置:

acl:把一个或多个主机归并为一个集合,并通过一个统一的名称调用:

acl acl_name {

ip;

ip

net/prelen;

};

示列:

acl mynet {

172.17.0.0/16;

};

bind 有四个内置的acl;

none:没有一个主机

any:任意主机

local:本机

localnet:本机的IP同掩码运算后得到的网络地址

注意:acl 只能先定义后使用,因此,其一般定义在配置文件的options前面

访问控制的指令

allow-query {}: 允许查询的主机,白名单,如果不指定主机,所有被拒接

allow-transfer {}: 允许区域传送的主机,白名单,如果不指定主机,所有被拒接

allow-recursion {}:允许递归的主机

allow-update {}: 允许更新的主机,比较危险,一般情况是拒绝所有 allow-update {none}

注:访问控制指令放在zone 中,只对zone生效,如果放在options中,对所有zone生效

时间: 2024-08-02 06:53:50

Linux学习笔记之   DNS原理介绍、DNS搭建、主从复制、子域授权和视图的相关文章

linux学习笔记——IP、网关、DNS的认识与设定、网络端口监测

##############网络知识#############一台主机如果可以连接公网,比如访问www.baidu.com那么这台主机必然会有ipaddress:ip地址GATEWAY:网关DNS:域名系统 ############ipaddress##############1.tcp/ip:这是一个协议族,包括tcp协议,ip协议,imcp协议,http协议,ftp协议等等 2.ip地址通常是一个32bit的数字,也就是常用的ipv4标准,ip地址是网络地址+主机地址ipv4:ip协议的4版

Linux学习笔记一 加密解密介绍,以及运用Openssl创建私有CA

互联网高速发展的今天,确保通信数据能够在互联网上安全可靠的传输是极为重要的.为此,各种安全算法,协议纷纷诞生.Openssl只是其中之一,Openssl为网络通信提供安全及数据完整性的一种安全协议,包括了主要的密码算法.常用的密钥和证书封装管理功能(CA)以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用 美国NIST给出了数据安全可靠传输的明确标准: 保密性: 数据保密性 隐私性 完整性: 可用性: 加密:使用加密算法对明文加工处理,转换成不可识别的代码信息,确保信息安全. 解密:运用

马哥Linux学习笔记之四——DNS

1.BIND:Berkeley Internet Name Domain DNS:Domian Name Service 域名解析 2. Http 3.PAM 插入式认证模块 4.SMTP/POP3/IMAP4:Mail Server 5.域名 www.baidu.com这是一个主机名(FQDN,Full Qualified Domain Name,完全限定域名),com是一个域名,baidu.com也是一个域名,域名是好多主机的集合. 域名解析起后面有一个数据库,解析就是一个查询的过程.域名解

DNS原理介绍和具体搭建DNS

DNS (Domail Name Server,域名服务) 一.DNS概述     DNS 是一种 C/S 架构,实现域名解析.服务端监听在 UDP/53 和 TCP/53 号端口.主要主机名与 IP 地址之间的名称解析. 所谓的名称解析:简单的来说是将一种名称转换为另一种名称.通常是用户名和 IP 地址之间的转换.它们之间是通过解析库来实现的.像 /etc/passwd 文件就是一种用户名和UID之间的一种解析库. 在 Linux 操作系统中,服务端协议的实现是 bind 软件,客户端通过调用

Linux学习笔记033_10

网卡命名: eth0,eth1 子接口(一个网卡上多个IP):eth0:1,eth0:2 ifconfig: 查看网卡信息 ifup ethx:开启网卡 ifdown ethx:关闭网卡 配置网卡: 图形 命令: ONBOOT为yes表示启动计算机时通过网卡 全局网络配置: 第一行为开启ipv4,第二行为开启ipv6,第三行为计算机名,注意计算机名在DNS要解析到,如clc.com 可以加一行:GATWAY=192.168.1.254,不过以network-scripts中的网关优先级高 DNS

linux学习笔记2-linux的基本命令

第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些基本的控制台命令 ============================================== 连接远程机器 以指定用户名登陆的命令为:ssh [email protected] (一般情况都需要指定用户名) 以指定用户名和指定端口登陆的命令为:ssh [email protected] -p XXX 断开连接的命

嵌入式Linux学习笔记之LED驱动

最近在学习嵌入式Linux驱动开发,大致了解了驱动的基本开发流程,本文主要针对字符设备驱动开发做一个简要介绍,也当作是对这几天工作的一个小小总结. 计算机系统是由软硬件相互协调共同完成工作的,作为专用计算机系统的嵌入式系统也不例外,既要有CPU.SDRAM.FLASH.IO等硬件,同时也少不了操作系统和应用软件等软件的支持,而作为应用程序与硬件的桥梁--驱动程序,是整个嵌入式系统开发过程中的关键环节.驱动开发涉及底层,而了解底层作用机制对于整个系统的开发意义重大. Linux内核中有60%以上是

Linux学习笔记之文件管理,用户管理

学而不用,总是忘记,今天又整理一下,记在这里,方便以后自己查看 常用操作命令 目录常用操作命令: pwd, cd, ls, mkdir, rmdir, tree. 文件常用操作命令: find,locate, whereis, which, touch, file, cp, rm,mv,ln,cat,tac,head,tail,more,less,grep,wc. 用户及用户组管理 Linux系统中用户分为3类:root用户,普通用户和虚拟用户.其中虚拟用户是不具备登录系统的能力,但却是系统运行

马哥Linux学习笔记之三——加密

1.明文传输 ftp,http,smtp,telnet 2.机密性:plaintext-->转换规则-->ciphertext ciphertext-->转换规则-->plaintext 完整性:单项加密算法,提取数据特征码.输入一样,输出必然一样:雪崩效应,输入的微小改变,将会引起结果的巨大改变:无论原始数据是多少,结果大小都是相同的:不可逆,无法根据特征码还原原来的数据. 3.密钥 4.对称加密:有加密算法,有密钥 5.密钥交换算法 IKE(Internet Key Excha