named.conf;zone;view;type master;

 

http://sanyu.blog.51cto.com/7339300/1304062

地址规划:

213334223.png

213334976.png

一、安装bind和bind-utils
[root@ns1 ~]# yum -y install bind bind-utils

 

二、修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
[root@ns1 ~]# cat /etc/named.rfc1912.zones
//定义内网、电信网络、联通网络所在网段
acl innet {
        172.16.0.0/16;
        127.0.0.0/8;
};
acl telecom {
        202.111.0.0/16;
};
acl unicom {
        202.110.0.0/16;
};
// 内网视图
view innet {
        match-clients { innet; };
        zone "." IN {
                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 "sanyu.com" IN {
                type master;
                file "innet.sanyu.com.zone";
        };
        zone "100.1.202.in-addr.arpa" IN {
                type master;
                file "innet.100.16.172.in-addr.arpa";
        };
};
// 电信视图
view telecom {
        match-clients { telecom; };
        zone "sanyu.com" IN {
                type master;
                file "telecom.sanyu.com.zone";
        };
        zone "100.111.202.in-addr.arpa" IN {
                type master;
                file "telecom.100.111.202.in-addr.arpa";
        };
};
// 联通视图
view unicom {
        match-clients { unicom; };
        zone "sanyu.com" IN {
                type master;
                file "unicom.sanyu.com.zone";
        };
        zone "100.110.202.in-addr.arpa" IN {
                type master;
                file "unicom.100.110.202.in-addr.arpa";
        };
};
三、修改主配置文件
[root@ns1 ~]# vim /etc/named.conf

删除第11,12,17行

214000303.png

由于使用了视图里, 主配置文件应删除关于根域的定义

214000635.png

四、书写 区域文件
[root@ns1 named]# vim innet.sanyu.com.zone

214001689.png

[root@ns1 named]# vim innet.100.16.172.in-addr.arpa

214002905.png

[root@ns1 named]# vim telecom.sanyu.com.zone

214003982.png

[root@ns1 named]# vim unicom.sanyu.com.zone

214219957.png

[root@ns1 named]# vim unicom.100.110.202.in-addr.arpa

214219446.png

更改文件属组和权限
[root@ns1 ~]# chgrp named /var/named/*.sanyu.com.zone /var/named/*in-addr.arpa
[root@ns1 ~]# chmod 640 /var/named/*sanyu.com.zone /var/named/*in-addr.arpa
启动服务
[root@ns1 ~]# service named start
[root@ns1 ~]# chkconfig named on
五、测试:
先在防火墙上执行:
[root@R1 ~]# iptables -t -nat -F
[root@R1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@R1 ~]# iptables -t nat -A PREROUTING -s 202.111.0.0/16 -d 202.111.100.100 -p tcp --dport 53 -j DNAT --to-destination 172.16.100.53
[root@R1 ~]# iptables -t nat -A PREROUTING -s 202.110.0.0/16 -d 202.110.100.100 -p tcp --dport 53 -j DNAT --to-destination 172.16.100.53
[root@R1 ~]# iptables -t nat -A PREROUTING -s 202.111.0.0/16 -d 202.111.100.100 -p udp --dport 53 -j DNAT --to-destination 172.16.100.53
[root@R1 ~]# iptables -t nat -A PREROUTING -s 202.110.0.0/16 -d 202.110.100.100 -p udp --dport 53 -j DNAT --to-destination 172.16.100.53
客户机DNS指向防火墙

214220462.png

214221587.png

214221888.png


上述过程脚本化实现:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/bash
yum -y install bind bind-utils
cat >/etc/named.rfc1912.zones <<END
acl innet {
    172.16.0.0/16;
    127.0.0.0/8;
};
acl telecom {
    202.111.0.0/16;
       
};
acl unicom {
    202.110.0.0/16;
        
};
view innet {
    match-clients { innet; };
    zone "." IN {
        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 "sanyu.com" IN {
        type master;
        file "innet.sanyu.com.zone";
    };
    zone "100.1.202.in-addr.arpa" IN {
        type master;
        file "innet.100.16.172.in-addr.arpa";
    };
};
view telecom {
    match-clients { telecom; };
    zone "sanyu.com" IN {
        type master;
        file "telecom.sanyu.com.zone";
    };
    zone "100.111.202.in-addr.arpa" IN {
        type master;
        file "telecom.100.111.202.in-addr.arpa";
    };
};
view unicom {
    match-clients { unicom; };
    zone "sanyu.com" IN {
        type master;
        file "unicom.sanyu.com.zone";
    };
    zone "100.110.202.in-addr.arpa" IN {
        type master;
        file "unicom.100.110.202.in-addr.arpa";
    };
};
END
cat >/var/named/innet.sanyu.com.zone <<END
\$TTL 600
@       IN      SOA     ns1.sanyu.com.      admin.sanyu.com. (
                        2013080808
                        2H
                        10M
                        3D
                        1D )
            IN      NS      ns1
            IN      MX 10       mail
ns1         IN      A       172.16.100.53
mail            IN      A       172.16.100.53
bbs         IN      A       172.16.100.81
shop            IN      A       172.16.100.43
END
cat >/var/named/innet.100.16.172.in-addr.arpa<<END
\$TTL 600
@       IN      SOA     ns1.sanyu.com.      admin.sanyu.com. (
                        2013080808
                        2H
                        10M
                        3D
                        1D )
            IN      NS      ns1.sanyu.com.
53          IN      PTR     ns1.sanyu.com.
53          IN      PTR     mail.sanyu.com.
81          IN      PTR     bbs.sanyu.com.
43          IN      PTR     shop.sanyu.com.
END
sed s/172.16.100.[0-9].*/202.111.100.100/g  /var/named/innet.sanyu.com.zone >> /var/named/telecom.sanyu.com.zone
sed 's/^[0-9].\{1,3\}/100/g' /var/named/innet.100.16.172.in-addr.arpa >> /var/named/telecom.100.111.202.in-addr.arpa
sed s/172.16.100.[0-9].*/202.110.100.100/g /var/named/innet.sanyu.com.zone >> /var/named/unicom.sanyu.com.zone
sed 's/^[0-9].\{1,3\}/100/g'  /var/named/innet.100.16.172.in-addr.arpa >> /var/named/unicom.100.110.202.in-addr.arpa
chgrp named /var/named/*.sanyu.com.zone /var/named/*in-addr.arpa
chmod 640 /var/named/*sanyu.com.zone /var/named/*in-addr.arpa
sed  -i /listen-on/d /etc/named.conf
sed  -i '/zone "." IN/,/^$/d' /etc/named.conf
sed -i /allow-query/d /etc/named.conf
service named start
chkconfig named on

 

本文出自 “非马梦衢” 博客,请务必保留此出处http://sanyu.blog.51cto.com/7339300/1304062

 

http://evanlinux.blog.51cto.com/7247558/1382049

 

目标:

1.成功搭建主从DNS服务器,实现正向反向解析

2.主DNS服务器只允许从DNS服务器的区域传送的请求,而从DNS服务器不能进行区域传送

3.域名解析请求的转发

4.acl和view的使用

 

Master DNS Server:192.168.0.22

Slave DNS Server:192.168.0.23

解析的域为 flyence.com

 

一.  搭建主DNS服务器

1. 安装bind

1
yum install bind –y

 

2. 启动named服务

1
Service named start

 

3.修改主配置文件/etc/named.conf,将下列3行注释

1
2
3
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };

 

4. 编辑/etc/named.rfc1912.zones,建立正向解析区域

1
2
3
4
zone "flyence.com" IN {
         type master;
          file "flyence.com";
};

 

5.建立/var/named/flyence.com文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$TTL 600
@   IN  SOA dns.flyence.com.    admin.flyence.com. (
        2014032301   ; serial
        2H           ; refresh (2 hours)
        10M          ; retry (10 minutes)
        7D           ; expire (1 week)
        2H           ; minimum (2 hours)
)
    IN  NS  dns
    IN  NS  dns2     ;辅助DNS服务器的IP地址
    IN  MX 10   mail
dns IN  A   192.168.0.22
dns2    IN  A   192.168.0.23
mail    IN  A   192.168.0.100
www     IN  A   192.168.0.101
www     IN  A   192.168.0.102
music   IN  CNAME   www

 

6.修改/var/named/flyence.com文件属性

1
2
chmod 640 /var/named/flyence.com
chown :named /var/named/flyence.com

 

7. 编辑/etc/named.rfc1912.zones,建立反向解析区域

1
2
3
4
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0";
};

 

8. 创建/var/named/192.168.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$TTL 600
@   IN  SOA dns.flyence.com.    admin.flyence.com. (
        2014032301
        2H
        10M
        7D
        2H
)
    IN  NS  dns.flyence.com.
    IN  NS  dns2.flyence.com.
22  IN  PTR dns.flyence.com.
23  IN  PTR dns2.flyence.com.
100 IN  PTR mail.flyence.com.
101 IN  PTR www.flyence.com.
102 IN  PTR www.flyence.com.

 

9. 修改/var/named/192.168.0文件属性

1
2
chmod 640 /var/named/192.168.0
chown :named /var/named/192.168.0

 

10. 重新载入配置文件并测试

1
rndc reload

 

11. 测试

wKiom1Mu40jyVpChAABUO3FjWyI947.png

 

wKiom1Mu4_vjQwnSAABZXIUUdJA224.png

 

二. 搭建辅助DNS服务器

1. 安装bind

1
yum install bind –y

 

2. 启动named服务

1
Service named start

 

3.修改主配置文件/etc/named.conf,将下列3行注释

1
2
3
//     listen-on port 53 { 127.0.0.1; };
//     listen-on-v6 port 53 { ::1; };
//     allow-query     { localhost; };

 

4. 编辑/etc/named.rfc1912.zones,建立正向及反向解析区域

1
2
3
4
5
6
7
8
9
10
zone "flyence.com" IN {
         type slave;
         file "slave/flyence.com";
         masters {  192.168.0.22;  };
};
zone "0.168.192.in-addr.arpa" IN {
        type slave;
        file "slave/192.168.0";
    masters {  192.168.0.22;  };
};

 

5.重新读取主DNS服务器配置文件

1
rndc reload

 

6.测试

wKioL1Mu5RSAmGE-AABTz-eU6TY158.png

 

wKiom1Mu5W6Qmh_UAABZU0h45z8234.png

 

三. 配置allow-transfer

1. 主DNS只允许从DNS服务器的区域传送请求

在/etc/named.rfc1912.zones

1
2
3
4
5
6
7
8
9
10
zone "flyence.com" IN {
        type master;
        file "flyence.com";
        allow-transfer { 192.168.0.23; };
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0";
        allow-transfer { 192.168.0.23; };
};

 

2.测试,从本机请求完全区域传送

wKioL1Mu5ePgy_x4AAATmjWgcck706.png

 

3. 辅助DNS服务器不允许任何人的区域传送请求

1
2
3
4
5
6
7
8
9
10
11
12
zone "flyence.com." IN {
        type slave;
        file "slaves/flyence.com";
        masters{ 192.168.0.22; };
        allow-transfer{ none; };
};
zone "0.168.192.in-addr.arpa" IN {
        type slave;
        file "slaves/192.168.0";
        masters{ 192.168.0.22; };
        allow-transfer{ none; };
};

 

4.测试,从本机请求完全区域传送

wKioL1Mu5lXCe5aYAAASyoJ9IIo423.png

 

四. 域名解析请求的转发

 

当前在辅助DNS服务器向主DNS服务器请求解析“baidu.com.”的时候,是不能得到结果的

wKiom1Mu59XQwQtwAAAxW-3bE1c884.png

 

首先要保证转发请求的服务器必须为请求者提供递归查询,默认是开启的。

查看/etc/named.conf中的options选项中应该有一项是

1
recursion yes;

没有的话就加上。

 

1. 在主DNS服务器的/etc/named.conf中的options中加上两行

1
2
forwarders { 192.168.0.1; };
forward only;

注意在这里forwarders中的IP因人而异,是你要将请求转发至的服务器

 

2. 建立解析域zone=,可以建立在/etc/named.conf或在/etc/named.rfc1912.zones里。这次实验将它建立在/etc/named.conf中。

1
2
3
4
5
zone "baidu.com." IN {
       type forward;
       forwarders{ 192.168.0.1; };
       forward only;
};

 

3. 重读配置文件,并在辅助DNS服务器上测试。

1
rndc reload

wKiom1Mu8wPwQHKJAABGLKpy6ag025.png

 

五. 使用acl访问控制

在第三步中,对allow-transfer进行了设定,在这里可以使用acl来进行组设定

 

1. 在/etc/named.conf的最上方添加acl

1
2
3
4
acl allowaxfr {
    192.168.0.22;
    192.168.0.23;
};

 

2. 在/etc/named.rfc1912.zones中修改allow-transfer

1
2
3
4
5
zone "flyence.com" IN {
        type master;
        file "flyence.com";
        allow-transfer { allowaxfr; };
};

在反向解析中也这样修改。

 

3. 重读配置文件并测试

这次允许本机和辅助DNS进行完全传送

wKioL1Mu9LmzeNqxAABS0kZC1Lw240.png

 

六. 使用view实现智能DNS解析

当使用view时,所有区域都必须在view中,包括根。则在/etc/named.conf中的根域必须搬到到/etc/named.rfc1912.zones中。

 

具体的用法

1
2
3
4
5
6
view VIEW_NAME {
    match-clients{ .. };
    zone ".." IN {
        ...
    };
}

 

192.168.0.23/32请求mail.flyence.com的IP时,显示192.168.0.100

其他所有主机请求mail.flyence.com的IP时,显示192.168.0.200

 

1. 将/etc/named.conf中的根域移动到/etc/named.rfc1912.zones中,并使用view

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
view "view1" {
    match-clients{ 192.168.0.23/32; };
    zone "." IN {
        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.a    rpa" 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 "flyence.com" IN {
        type master;
        file "flyence.com";
    };
    zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.0";
    };
};
view "view2" {
    match-clients{ any; };
    zone "flyence.com" IN {
        type master;
        file "flyence2.com";
    };
};

 

2. 复制/var/named/flyence.com为/var/named/flyence2.com,并将mx的A记录改为192.168.0.200

1
cp /var/named/flyence.com /var/named/flyence2.com

 

3. 修改/var/named/flyence2.com的权限和属组

1
2
chmod 640 /var/named/flyence2.com
chown :named /var/named/flyence2.com

 

4. 重读配置文件并进行测试

1
rndc reload

在192.168.0.23上

wKioL1MvAQCRxaJeAABDIW-N0Ds993.png

在192.168.2.134上测试

wKiom1MvAWDTYKa9AABC1f4nSy4690.png

 

 

 

本文出自 “footage of linux” 博客,请务必保留此出处http://evanlinux.blog.51cto.com/7247558/1382049

 

 

http://www.tuicool.com/articles/6FFFzq

 

 

主DNS配置从服务器:

    我们知道,DNS服务器在网络服务中可能出现故障当机等状况,会导致DNS服务瘫痪,显然在实际的网络应用中我们不希望出现这种状况,所有我们就要配置从服务器来在主DNS服务器出现故障时代替他来工作,然而作为价格昂贵的服务器本身你又不希望出现这种极大的浪费,所有从服务器在实际工作中是和主服务器共同分担DNS解析任务的,这样既解决了服务器故障导致的问题,还可以缓解DNS服务器的压力。

    那么要配置一个从服务器我们又该怎么做呢?

    前提:我们要为本地配置一个从服务器aolens2。从服务器的IP 172.16.249.125

    所以aolens2中也需要安装bind,zone,但无需解析库,可以直接去主服务器去同步。

1)首先,我们需要在主服务器配置文件中(/etc/named.conf)配置一个从服务器的定义

    先去域名注册商(.com)哪里添加一个NS记录,指向从服务器节点。并添加到父域 的解析库中。

    还需要在本地回应上级的NS记录,保持一致。主服务器中配置/var/named/aolens.com.zone文件。是主服务器的配置文件。

    为什么要添加多个NS呢?那是应为主服务器发生变化时只通知NS定义的节点。要使从服务器得到同步就需要添加NS记录。

clipboard

改变以后,版本号需要改变。。。

 

 

    zone "ZONE_NAME" IN{
        type slave;
        file "slaves/ZONE_NAME.zone";
        master{  172.16.249.138;  };
}

2)为从服务器提供解析库

    从服务器的解析库不是自己定义的,而是主服务器定义,自己去从主服务器上同步过来,不能手动修改和创建。

而Linux又有一种特性:只有管理员才能使用小于1024的端口。

所有 named的启动方式:是由root启动,启动完成后切换为以named系统用户的身份运行。

然而我们可以看到,/var/named/目录的权限在named用户下是没有写权限的,而为了安全我们又不能为named目录添加写权限,那怎么办呢?

实际上,从服务器从主服务器上同步数据时不是直接放到/var/named/目录下的,而是放在/var/named/slaves/目录下。可以看到slaves是具有写权限的哦!

clipboard[1]

3)DNS从服务器在去主服务器同步数据时,我们首先要保证时间同步

    所有我们首先要有一个时间服务器,最好将时间服务器直接指向网络上的时间服务器,以确保时间的准确。

    我们实验的环境中时间服务器放在172.16.0.1上,我们便去同步一下本机的时间。

    ntpdate  172.16.0.1

    或者crontab服务,每隔3分种同步一次。

    */3 * * * * /usr/sbin/ntpdate 172.16.0.1 &> /dev/null

clipboard[2]

    其二:要保证二者的版本号相同或者从服务器的版本号比主服务器的版本号高,以便兼容主服务器的功能。

4)为从服务器安装bind

    编辑从服务器的主配置文件 /etc/named.conf

clipboard[3]

named-checkconf检测是否有错误!

启动服务!

service named start   第一次启动会创建 /etc/rndc.key 文件。如果卡拿了需要获取熵池中的随机说或者指定/dev/urandom

clipboard[4]

rndc.key文件也可以自己手动生成:rndc-confgen

自己生成还需要修改权限为640,属组为named

clipboard[5]

ss -tunl 查看是否监听在53号端口。

clipboard[6]

同时确保防火墙是关闭的,应为防火墙默认是拒绝53号端口的

iptables -L查看防火墙规则

iptables -L 清除防火墙规则

service iptables  stop停止防火墙。

clipboard[7]

到此时,从服务器的环境配置就ok了。

5)配置从服务器的区域了

    打开从服务器的主配置文件 /etc/named..rfc1912.zones

clipboard[8]

named-checkconf检测有无错误;

确保有 /var/named/slaves/ 目录。

前边我们已经启动了,现在用rndc reload加载就可以了。

clipboard[9]

启动成功后我们就会发现, /var/named/slaves/目录下就会有我们主服务器的解析库文件,aolens.com.zone

clipboard[10]

dig -t A www.aolens.com @127.0.0.1    测试一下

clipboard[11]

OK!

如果修改主服务器的配置,需要先配置主服务器,修改序列号,rndc reload 加载。

从服务器就可以获取到了。

6)添加反解zone。

clipboard[12]

配置文件1.16.192.zone也修改为。

版本号修改:

clipboard[13]

service named restart  重启named服务

从服务器上就可以反解出主服务器的名字了。

clipboard[14]

查询正向NS记录

dig -t NS aolens.com @172.16.249.138

clipboard[15]

反向查询NS记录。

dig -t NS 249.16.172.in-addr.arpa @172.16.249.138

clipboard[16]

dig -t AXFR aolens.com @172.16.249.138     :获取所有节点

clipboard[17]

7)如果单单这样就可以获取服务器数据那就太危险了,别人可以通过模拟从服务器IP的方式获取主服务器的数据。所以我们要控制主服务器,让他只能同步给从服务器,而从服务器给谁都不同步。这样就相对安全了很多。

    在bind中有内置的acl(访问控制列表)

     none:表示死所有都不同步

    any:表示所有都同步

    localhost:只给本机同步

    localnet:给同步给同网络

    allow-update:允许更新

allow-transfer { ip; ip; ip; ... };         none|any|localhost|localnet     都是allow-transfer的参数

    我们该从服务器的配置文件vim /etc/named.rfc1912.zone中添加allow-transfer { none; };表示不允许任何人同步

clipboard[18]

结果:rndc reload  加载后在主从服务器上都是无法同步的。

clipboard[19]

而主服务器则需要让从服务器同步:

配置文件vim /etc/named.rfc1912.zone

clipboard[20]

主服务器同步自己

clipboard[21]

从服务器同步主服务器:

clipboard[22]

即使这样IP以明文的方式传输还是很危险,所以,实际应用中是以加密IP 的方式发送密钥去请求,而接受服务器也是接受密钥来解析的。

所以我们建设的区域一般是不允许任何人更新的。需要在我们自己创建的zone中加上allow-update { none; };

/etc/named.rfc1912.zones

clipboard[23]

DNS的权限控制就这样配置了,

8)我们前边用了那么多rndc命令,那我们来了解一下rndc命令。

    rndc reload:装在配置文件

    rndc reload zone [class [view]] :装在一个区域。

    rndc retransfer zone [class [view]]:让主服务器重新给从服务器发送数据的,执行端在从服务器

    rndc flush :清空缓存。

    rndc status:显示配置详细信息

9)DNS子域创建授权

    我们基于aolens.com.创建它的子域op.aolnes.com.

    而子域下存在www.op.aolens.com.主机

    创建子域dev.aolens.com.   主机为 www.dev.aolens.com.

向子域授权:只需要在父域的区域解析库中添加“胶水记录”,glub record

胶水记录:就是在父域的解析库中加上

                子域名称     IN    NS    子域的名称服务器

                ops.aolens.com.    IN    NS     ns.ops.aolens.com.

                ns.ops.aolens.com.    IN    A    172.16.18.18

                dev.aolens.com.    IN    NS    ns.dev.aolens.com.

                ns.dev.aolens.com.    IN    A    172.16.18.19

我们现在父域中建立子域NS配置:假如我们就只有一条

                ops.aolens.com.    IN    NS     ns.ops.aolens.com.
                ns.ops.aolens.com.    IN    A    172.16.249.125

clipboard[24]

named-checkconf 检测

rndc reload 加载

dig -t NS ops.aolens.com @172.16.249.138我们会发现无法响应,那是因为我们还没有在将子域建立起来。所以无法响应父域请求。

10)下面我们就来创建子域。

    步奏呢也是先安装bind

    修改/etc/named.conf文件。将无用的注释掉。

    service named start   启动,并生成rndc.key文件。

    启动起来后去编辑/etc/named.rfc1912.zones

    添加子域空间配置。

clipboard[25]

    而ops.aolens.com.zone文件需要我们自己去建立

    vim /var/named/ops.aolens.zone

clipboard[26]

在子域上测试。    dig -t A www.ops.aolens.com @172.16.249.125

clipboard[27]

我们的测试主机是没有在网上注册的,所以子域去根解析出来的不是本服务器。那么我们能不能告诉子域,遇到这个服务器后直接去父域请求,由父域给解析。

所以子域就作为转发器来工作。

clipboard[28]

11)转发器转发非本机负责的区域的请求至指定的DNS服务器。

    配置/etc/named.conf

    添加 options {

            ...

            forward {only|first};      only表示告诉没答案就相信, first没答案自己去找。

            forwarders { IP; };

            }

    递归白名单:

    allow-recursion {}; :允许谁来我这递归。一般必须包含主机IP

    recursion yes:表示允许任何人递归。

    编辑子域的/etc/named.conf   在options中添加

clipboard[29]

在子域dig -t A www.aolens.com @172.16.249.138

clipboard[30]

然而你本地可以解析一个外部域名,而你的子域的主机不一定也可以解析,那么作为服务器的作用就是帮助本地主机解析外部主机域名,所以我们的服务器配置中forwarders中应该指向一个可以联接外部网络的IP,将主机的请求转发出去。

clipboard[31]

配置转发区域:指定转发(你请求aolens.com给你转发,其他的请求不给转发。),其他的自己去找。

zone “aolens.com”IN {     ---------定义转发
          type forward;
          forward only|first;      ---------定义仅转发,还是转发找不到则自己找。
          forwraders { ip; };  ---------指定转发的IP
         }

12)bind 的acl访问控制列表。

    bind内置的acl:nona ,any , localhost, localnet.

    acl的自定义:

                    acl acl_NAME {

                        IP;

                        IP;

                        }

 例如:acl localnetwork {
            172.16.0.0/16;
            192.16.0.0/24;                   
             }

    任何调用的localnetwork的都是定义的主机。而acl需要先定义才能使用,所以要放在/etc/named.conf文件的最上方。

13)bind view 视图:

    功能:由于主机解析查询时会轮询使用解析到的服务器,而bindview则根据客户端的来源不同,将同一个名称解析至不同的值,不做轮询。

    鉴于我国的各地既有联通网络,又有电信网络,而联通电信之间的连接靠的是北京机房的中转,那么可以想象,如果你处在电信网络下,向联通服务器发起请求的速度会有多慢。为了解决这种状况,边出现了bind view 这种功能,让联通用户至访问联通服务器,电信只访问电信。这样速度就会快很多了。

    格式:

view VIEW_NAME {
                    match-clients { 客户端地址,如果客户端很多,则用cal定义 ; };   ------》说明本view对应那些客户端的
                    zone " " IN {
                                  };
                };

    不同的zone可以定义多个view来定义不同网络,

    match-clients {any;};

    下面我们来配置view

    首先将/etc/named.conf中的

zone "." {
            type hint;
            file "named.ca";
    };

    这四行剪贴到/etc/named.rfc1912.zones中,

    将里面所有的zone都括起来,下边我用zones.*来代表文件里边所有的zone配置数据。

view ints {
    match-clients { 172.16.0.0/16; 127.0.0.1; };
  zone "." {
      type hint;
      file "named.ca";
      };
    zone.*
    };	   --------------->里边是配置了的zone
  view outs {
    match-clients { any; };
    zone "aolens.com" IN {
      type master;
      file "aolens.com.outs";
    };
    };---------------------->代表除了上边配置的,其他的都是在这个zone中。

    named-checkconf检测是否有错误

    cd到/var/named/下创建aolens.com.outs

clipboard[32]

    该其属组为named,权限为640

    然后找一个IP地址段不为定义段的主机,我们实验用

clipboard[33]

    dig -t A www.aolens.com @172.16.249.138    可以看到,解析出来的地址为11.11.11.11

clipboard[34]

使用view注意事项:

    1、通常只为内网客户端提供递归功能,提供根区域等;

    2、通过只为外网客户端提供本机所负责的区域的解析;

 

 

 

 

 

http://blog.ifeng.com/article/27110027.html

 

DNS相关,及在bind9中view视图的使用方式 起源: ChinaUnix博客  日期:2007.06.10 15:32 (共有条评论) 
A.DNS原理
这里就是域名解析进程,想要具体懂得,可以通过抓DNS包,我只貌似抓到了一个恳求包,然而应答包灭有抓到,我这里有DNS包的字段,谁有兴致咱们一起研讨一下>_
B.bind软件相干
rpm -qa bind*
bind-utils-9.3.3-7.el5
bind-chroot-9.3.3-7.el5
bind-9.3.3-7.el5
bind-libs-9.3.3-7.el5
注意:rhel5就提供这么多少个包,和4有点不同,并且没有/etc/named.conf文件,起因鬼才知道。
那么这些东西都是做什么的呢?
rpm -ql bind-utils-9.3.3-7.el5
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
/usr/bin/nsupdate
留神:我所列出的不包含man文档中的文件
这个包给出的是一些用于节制DNS服务器的命令。
rpm -ql bind-chroot-9.3.3-7.el5
/var/named/chroot
/var/named/chroot/etc
/var/named/chroot/var
/var/named/chroot/dev
/var/named/chroot/var/named
/var/named/chroot/var/named/data
/var/named/chroot/var/named/slaves
/var/named/chroot/var/run
/var/named/chroot/var/run/named
/var/named/chroot/var/tmp
这个其实就是树立chroot文件和他的子文件夹,我们可以在DNS可能进行准确解析的情形下来研究一下各个目录有什么变更,这个以后再说。
rpm -ql bind-libs-9.3.3-7.el5
这个就不列出来,都是库文件。
rpm -ql bind-9.3.3-7.el5
/etc/dbus-1/system.d/named.conf
/etc/logrotate.d/named
/etc/rc.d/init.d/named
/etc/sysconfig/named
/usr/sbin/bind-chroot-admin
/usr/sbin/dns-keygen
/usr/sbin/dnssec-keygen
/usr/sbin/dnssec-signzone
/usr/sbin/lwresd
/usr/sbin/named
/usr/sbin/named-bootconf
/usr/sbin/named-checkconf
/usr/sbin/named-checkzone
/usr/sbin/nameGetForwards
/usr/sbin/nameSetForwarda
/usr/sbin/rndc
/usr/sbin/rndc-confgen
/var/named
/var/named/data
/var/named/slaves
/var/run/named
这里还有一些是doc和man的文档,里面有例子,先容的很详细,这些例子都比较好用强烈倡议去看。Bv9arm文档是bind的手册,我是没有时光看了,有兴趣的可以搞。
问题:为什么没有我们需要配置的/etc/named.config文件?只有一个相似的/etc/dbus-1/system.d/named.conf,不过他不是,自己创建吧(真麻烦...)
PS:我们从这些乱78遭的文件和命令中得到什么东西呢?最少知道一些和bind有关的命令,还有bind所属的文件夹,还有就是或者我们的服务无奈启用的时候,是不是少了那个软件包的某某文件。。。再说,了解软件不是什么坏事件。

C:体系中的named服务
这个货色波及shell,以后再说,不能放过他的。

D:配置named服务.
我们要自己做域名解析,不是托管。
假设我们有一个局域网,一个用做DNS服务器的主机,3个服务器web,mail,ftp
想想看我么请求什么?
1,我们需要一个静态IP,他是在网路上地址。(现在是我们只用一台主机做DNS)
2,如果需要长时间并且对外供给mail,ftp,web服务,那么我们还需要3个静态IP,一个服务器一个。
3, 局域网内的机器,可以解析到外网。
4,外网用户可以解析到我们的web,mail,ftp.但是他不可以解析到我们局域网的主机
5,我们需要一个域名caterpillar.com
6, 我们只管理一个档次。恩,我不晓得这种说法是不是确实,但是意思就是我们只治理一个域,域下面没有其余的域。(这个说法我也不断定。)对这个比拟通的同窗盼望可以说明一下。
画图
screen.width*0.7) {this.resized=true; this.width=screen.width*0.7,www.gyfp5678.com; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new windownCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('');}" onmousewheel="return imgzoom(this);" alt="" />



新买的电脑还没有装word.
我忘记了画DNS主机的局域网接口:地址是192.168.0.254
局域网内IP为192.168.0网段,主机名分辨为karon,xeno,和mars
DNS静态IP为123.66.88.254,主机名为ns1.
FTP静态IP为123.66.88.1, 主机名为ftp
MAIL静态IP为123.66.88.2,主机名为mail
WEB静态IP为123.66.88.3,主机名为web
下面我们配置named.conf
曾经和刘醒基同学探讨过bind中view的应用,当初就用view来写,view把系列的zone联合到一起来实现功能,是很有趣的东西。我用的是RHEL5,貌似和4有一点不同,不过原理一样。
我们一段一段的来,并且要很细,便于以后翻阅>_
option {
directory "/var/named"; 默认路径
dump-file "/var/named/data/cache_dump.db"; 这里不写错,只有你用绝对路径的时候才会被加上默认门路
startistice-file "/var/named/data/named_stats.txt"; 同上
};
option选项有良多.不用照这书抄,不写的项采取默认的就可以了。
我们只写这一段,而后named-checkconf.
Y~~竟然胜利,这个猪头命令只检查语法,并且他只检讨/etc/named.conf文件,还有,只写一个option,居然发明named服务可以启用,晕,他也是猪头服务,看了一下rc中named的启动脚本,果然和内容没有任何关系。
acl "caterpillar's lan"{
127.0.0.1; 192.168.0.0/24;
};
创立一个拜访把持列表,定义的这个列表当前会用到。
我们需要知道的是,caterpillar's lan是一个名字罢了,起什么都可以,127.0.0.1是本机。192.168.0.0/24表现我们的局域网,
以后就可以用caterpillar's lan来代表我么的主机和局域网了。
注意:
地址列表可以用any,none,localnets,localhost.
any:任何主机
none:不匹配任何主机
localhost本地主机
localnets本地网络所有主机
还有,这里的地址是IPv4的地址,ipv6目前还不支撑呢。
controls {
inet 127.0.0.1 allow { localhost; };
};
这个语句东西写成这个样子实在没用,你不写的时候默认也是这样的,
inet是监听在127.0.0.1上面的一个控制通道的socket接口,而allow则肯定了掌握通道的才能,这里是容许本机主机。
view "inside" {
match-clients { "caterpillar's lan"; };
recursion yes; 这里表示在这个view中的所有请求,开启递归查问。

zone "." IN { IN为类,如果你不写,那么默认的就是IN类。
type hint; hint,这个么是根服务器的特别类型。
file "name.ca"; 文件在name.ca下。
};

zone "0.168.192.in-addr.arpa" IN { 
type master; 
file "caterpillar's arpalan.db";
}; 这个是对本机请求的反向解析。

zone "z-caterpillar.com" {
type master; 这个表示是在本机进行解析的。
file "db.caterpillar.com.inside";
allow-transfer { 192.168.0.2 }; 这个是域传输控制选项。
};
};
view这个东西功能是zone的一个聚集,方便管理zone,如果你一个view都没有的话,那么他们是属于一个view的,根本可以这么懂得。他可以宰割DNS,恰是这个功能才干让我们便利的实现入站和出站的不同管理。
看看他要实现的功效:
可以对本机所在的所有机器发出的请求进行解析,另外,本机的主机可以进行逆向解析。
恩 就这些。
那么依据域名解析过程。
我们这台DNS必定要可以到根服务器, 所以zone .必需存在,zone 0.168.192.in-addr.arpa 用来实现逆向解析,zone "caterpillar.com"用来对请求进行解析。
view "outside" {
match-clients { any; }; 此视图对应任何主机,一定要放在inside的后面,这样acl中定义的主机就会先看到inside里面的zone.
recursion no; 这里把递归关掉,也就是说,我们的这台主机对外来用户的非本地请求疏忽,我自己的域名我解析,你到我这里来查163?靠,想的美。门都没有,我又不是根服务器。

zone "." IN {
type hints;
file "name.ca";
} 每个view必须有zone "."

zone "caterpillar.com" { caterpillar.com的zone.
type master;
file "db.caterpillar.com.outside";
allow-transfer { 123.66.88.2; };
};
这个和上一个类似,但是没有反向解析域,至于为什么这么做。外网用户我们不许可他反向解析到我们,所以不需要反项解析域。

基础OK,和书上不同的是少logging,不过这没有关联。

现在我们来看看,相关的区域文件怎么写。
name.ca 这个能够去下载,不须要自己写。
db.caterpillar.com.inside 
$TTL 86400
@ INSOA ns1.caterpillar.com.zhaoliang.caterpillar.com. ( 2007060901;28800;14400;3600000;86400; )
主受权记载,这个不必说了,条件是我有一个zhaoliang@caterpillar.com的邮箱,在我本人的mail服务器上。后面跟课堂上的有点不同,不外是一样的。别忘却每次修正都要更新序列号。
@ INNSns1.caterpillar.com.
这句话的意思是,@域名的DNS服务器是ns1.caterpillar.com,那么他的IP是多少呢?下面有>_
@ MX10mail.caterpillar.com.
这个的意思是说,有@域名的邮件统统给我扔到mail.caterpillar.com.上去,那么他的IP是多少呢,下面同样有。其实这个就是邮件路由啊>_
ns1INA 192.168.0.254
??,DNS服务器的地址不是123.66.88.254么?怎么可以用这个。别忘了我们这个view仅仅处置本机要求,用接在局域网上网卡的IP是最快的。
mail IN A 123.66.88.2
ftpINA 123.66.88.1
webINA 123.66.88.3
差别一下,以上的部门是为本地的对外请求提供服务。也许你感到把服务器和客户机放在一个LAN里比较好,但是我认为那不直观。
karon IN A 192.168.0.1
xeno INA 192.168.0.2
mars INA 192.168.0.3
以上的局部是对内请求服务的。
好了OK了
db.caterpillar.com.outside
$TTL 86400
@ INSOA ns1.caterpillar.com. zhaoliang.caterpillar.com. ( 2007060901;28800;14400;3600000;86400; )
@ INSNns1.caterpillar.com.
@ MX10mail.caterpillar.com.
ns1INA 123.66.88.254
这里就需要用到外网的IP了
mail IN A 123.88.66.2
ftpINA 123.88.66.1
webINA 123.88.66.3
为什么没有本机的?这个view是对外网查询的,我不爱好他知道本地局域网的IP地址。
caterpiller's arpalan.db
$TTL
@ INSOA ns1.caterpillar.com. zhaoliang.caterpillar.com. ( 2007060901:28800;14400;3600000;86400; )
@ INNSns1.caterpillar.com.
1 INPTR karon.caterpillar.com.
2 INPTR xeno.caterpillar.com.
3 INPTR mars.caterpillar.com.
254INPTR ns1.caterpillar.com.


嘿嘿,搞定收工。

 

 

 

http://zhumeng8337797.blog.163.com/blog/static/100768914201041010364307/

 

基于视图的DNS解析
系统要求:AS4,DNS为系统自带的。
目的:根据来自不同网络用户的访问请求,对相同的域名解析成不同的IP,使用户可以访问离他最近的那台服务器,以增加用户的访问速度。
实现:在lidoo.com,newlido.com域中。name.conf中增加不同的视图来判断,来访者的IP是属于那个网络
所有涉及到的文件
/var/named/chroot/var/named/newlido.zone #newlido.com域在电信的解析文件
/var/named/chroot/var/named/newlido.zone.cnc #newlido.com域在网通的解析文件
/var/named/chroot/var/named/lidoo.zone.cnc #lidoo.com域在电信的解析文件
/var/named/chroot/var/named/lidoo.zone # newlido.com域在网通的解析文件
/var/named/chroot/etc/cn_ip/CHINANET #电信IP段配置文件
/var/named/chroot/etc/cn_ip/CNCGROUP #网通IP段配置文件
/var/named/chroot/etc/cn_ip/cn_isp.sh #动态更新电信、网通IP段到配置文件中的脚本,可以放在crontab中每个月或每个星期凌晨时段运行一次。
/var/named/chroot/etc/named_common.conf #公用配置文件
/var/named/chroot/etc/named.conf #主配置文件
下面是网通DNS中的相关配置文件。
编辑 /var/named/chroot/etc/named.conf
//
// named.conf for Red Hat caching-nameserver 
//
options {
     directory "/var/named"; 
     dump-file "/var/named/data/cache_dump.db"; #解析后的缓冲文件
    statistics-file "/var/named/data/named_stats.txt";
     pid-file "/var/run/named/named.pid";
};
controls {
     inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
//acl "china_netcom" { #使用acl定义包含下列IP段的是属于那个网络的。
//      61.207.0.0/16;
//      168.160.224.0/19;
//      210.51.0.0/16;
//};

include "/etc/cn_ip/CNCGROUP"; #如IP段很多的话为了界面清楚及更新方便可以定义在单独的一个文件中 (文件格式见附件)
//acl "china_telecom" {
//      202.96.0.0/16;
//      218.0.0.0/8;
//      61.151.0.0/16;
//      222.73.0.0/16;
//};
include "/etc/cn_ip/CHINANET";
view "for_cnc" { #建立对应的视图,根据来访IP的不同使用不同的解析文件(如果还需增加对不同的网络用户进行解析,可以在增加这样的视图)
     match-clients { china_netcom; };
     recursion yes;
     include "/etc/named_common.conf"; #公用的本地解析文件 (文件见附件)
     zone "lidoo.com" IN { #具体的域名解析文件
           type master;
           file "lidoo.zone.cnc";
           allow-update { none; };
     };
     zone "newlido.com" IN { #具体的域名解析文件
           type master;
           file "newlido.zone.cnc";
           allow-update { none; };
     };
};
view "for_ctc_and_all" {
     match-clients { china_telecom; any; }; #any代表其它未包含在定义好IP段中的所有IP
     recursion yes;
     include "/etc/named_common.conf";
     zone "lidoo.com" IN {
           type master;
           file "lidoo.zone";
           allow-update { none; };
     };
     zone "newlido.com" IN {
           type master;
           file "newlido.zone";
           allow-update { none; };
     };
};
include "/etc/rndc.key";
编辑 /var/named/chroot/var/named/lido.zone.cnc
$TTL      86400
@            IN SOA      @     root.lidoo.com (
                             2006071701      ; serial (d. adams) #更新ID,最好每次更改DNS配置都在原有基础上增大一点
                             3H            ; refresh #3小时更新一次本地DNS
                             15M            ; retry #如果更新失败就在15分钟后重试
                             1W            ; expiry #DNS缓存在1周后过期
                             1D )            ; minimum #最小过期为1天,即使其它地方的DNS更新了缓存中也不更新
           IN NS            dns1 #DNS地址域名
           IN NS            dns2 #DNS地址域名
           IN MX      10      mail #有mail的话需要有MX 标记,数字10是权重,可以是其它数字,这里可以设置其它的带有 MX标记的名字,利用权重用来表示优先级,只有MX标记可以设置权重。
           IN A            210.51.22.149 #该域默认的IP,lidoo.com
dns1            IN A            222.73.254.218 #DNS1 在上级ISP那注册的 DNS
dns2            IN A            210.51.22.149 #DNS2 在上级ISP那注册的 DNS
xbrl            IN A            210.51.22.147 #目前和电信的配置文件相比就这里的IP不一样
mail            IN A            61.151.244.162
www            IN A            61.151.244.162
service            IN A            61.151.244.166
said            IN A            61.151.244.167
lidoinfo      IN A            61.151.244.164
quote            IN A            61.151.244.165
quote1            IN A            61.129.43.11
quote2            IN A            222.73.254.220
quote3            IN A            222.73.254.224
quote5            IN A            210.51.22.136
(要增加不同的主机名就在这里增加)
编辑 /var/named/chroot/var/named/newlido.zone.cnc
$TTL      86400
@            IN SOA      @     root.newlido.com (
                             2006071701      ; serial (d. adams)
                             3H            ; refresh
                             15M            ; retry
                             1W            ; expiry
                             1D )            ; minimum
           IN NS            dns1
           IN NS            dns2
           IN MX      10      mail.lidoo.com.
           IN A            210.51.22.149
dns1            IN A            222.73.254.218
dns2            IN A            210.51.22.149
www            IN A            61.151.244.166
编辑 /var/named/chroot/var/named/lido.zone
$TTL      86400
@            IN SOA      @     root.lidoo.com (
                             2006071701      ; serial (d. adams)
                             3H            ; refresh
                             15M            ; retry
                             1W            ; expiry
                             1D )            ; minimum
           IN NS            dns1
           IN NS            dns2
           IN MX      10      mail
           IN A            222.73.254.218
dns1            IN A            222.73.254.218
dns2            IN A            210.51.22.149
xbrl            IN A            222.73.249.51 #目前和网通的配置文件相比就这里的IP不一样
mail            IN A            61.151.244.162
www            IN A            61.151.244.162
service            IN A            61.151.244.166
said            IN A            61.151.244.167
lidoinfo      IN A            61.151.244.164
quote            IN A            61.151.244.165
quote1            IN A            61.129.43.11
quote2            IN A            222.73.254.220
quote3            IN A            222.73.254.224
quote5            IN A            210.51.22.136
编辑 /var/named/chroot/var/named/newlido.zone
$TTL      86400
@            IN SOA      @     root.newlido.com (
                             2006071701      ; serial (d. adams)
                             3H            ; refresh
                             15M            ; retry
                             1W            ; expiry
                             1D )            ; minimum
           IN NS            dns1
           IN NS            dns2
           IN MX      10      mail.lidoo.com.
           IN A            222.73.254.218
dns1            IN A            222.73.254.218
dns2            IN A            210.51.22.149
www            IN A            61.151.244.166
附件
编辑 /var/named/chroot/etc/named_common.conf
     zone "." IN {
           type hint;
           file "named.ca";
     };
     zone "localdomain" IN {
           type master;
           file "localdomain.zone";
           allow-update { none; };
     };
     zone "localhost" IN {
           type master;
           file "localhost.zone";
           allow-update { none; };
     };
     zone "0.0.127.in-addr.arpa" IN {
           type master;
           file "named.local";
           allow-update { none; };
     };
     zone "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.ip6.local";
           allow-update { none; };
     };
     zone "255.in-addr.arpa" IN {
           type master;
           file "named.broadcast";
           allow-update { none; };
     };
     zone "0.in-addr.arpa" IN {
           type master;
           file "named.zero";
           allow-update { none; };
     };
编辑 /var/named/chroot/etc/cn_ip/CNCGROUP (只列部分,IP)
# /var/named/chroot/etc/cn_ip/CHINANET 内容和网通的格式是一样的。这面就不列出了。
acl "china_netcom" {
     58.16.0.0/16;
     58.17.0.0/17;
     203.93.192.0/18;
     210.13.128.0/17;
     210.14.160.0/19;
     210.14.192.0/19;
     221.200.0.0/14;
     221.213.0.0/16;
     221.216.0.0/13;
     222.128.0.0/14;
     222.132.0.0/14;
     222.136.0.0/13;
     222.160.0.0/15;
     222.162.0.0/16;
     222.163.0.0/19;
     222.163.32.0/19;
     222.163.64.0/18;
     222.163.128.0/17;
};
[root@dns218 cn_ip]# cat cn_isp.sh
#!/bin/sh
FILE=ip_apnic
rm -f $FILE
rm -f cn.net CNCGROUP CHINANET UNICOM CERNET OTHER
wget 
http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
-O $FILE
echo "acl \"china_netcom\" {" > CNCGROUP
echo "acl \"china_telecom\" {" > CHINANET
echo "acl \"china_unicom\" {" > UNICOM
echo "acl \"china_cernet\" {" > CERNET
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
    echo $ip:$cnt
    mask=$(cat > cn.net
    NETNAME=`whois $

| sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:     \(.*\)/\1/g' | sed -e 's/-.*//g'`
    case $NETNAME in
    CNC)
          echo -e "\t$ip/$mask;" >> CNCGROUP
    ;;
    CHINANET|CNCGROUP)
          echo -e "\t$ip/$mask;" >> $NETNAME
    ;;
    CHINATELECOM)
          echo -e "\t$ip/$mask;" >> CHINANET
    ;;
    UNICOM)
          echo -e "\t$ip/$mask;" >> UNICOM
          echo $ip/$mask >> OTHER
    ;;
    CERN|CERNET|CERBKB)
          echo -e "\t$ip/$mask;" >> CERNET
          echo $ip/$mask >> OTHER
    ;;
    *)
          echo $ip/$mask >> OTHER
    ;;
    esac
done
echo "};" >> CNCGROUP
echo "};" >> CHINANET
echo "};" >> UNICOM
echo "};" >> CERNET

 

 

 

 

http://www.study-area.org/tips/bind9_view.htm

 

 

五、設定細節:

- master
修改 /etc/named.conf ,內容類似如下:

acl "lan" { 10.1.2.0/24;  };

options { directory { "/var/named"; }; };

view "internal" {
	match-clients { !10.1.2.5; lan;127.0.0.1; };  // 這裡排除 slave 的另一位址
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "my.domain" IN {
		type master;
		file "my.domain.int";
		allow-transfer { 10.1.2.4; }; //允許 slave 的 primay 位址
	};
};

view "external" {
	match-clients { any; };
	recursion no;
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "my.domain" IN {
		type master;
		file "my.domain.ext";
		allow-transfer { 10.1.2.5; }; //允許 slave 的 alias 位址
	};
};


- slave
修改 /etc/named.conf ,內容類似如下:

acl "lan" { 10.1.2.0/24;  };

options { directory { "/var/named"; }; };

view "internal" {
	match-clients { lan;127.0.0.1; };
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "my.domain" IN {
		type slave;
		file "slave.my.domain.int";
		masters { 10.1.2.3; }; 
		transfer-source 10.1.2.4; // 指定 primay 位址
	};
};
view "external" {
	match-clients { any; };
	recursion no;
	zone "." IN {
		type hint;
		file "named.root";
	};
	zone "my.domain" IN {
		type slave;
		file "slave.my.domain.ext";
		masters { 10.1.2.3; };
		transfer-source 10.1.2.5; // 指定 alias 位址
	};
};

 

 

 

 

 

 

 

 

 

======================================================

https://awk.so/@code.google.com!/p/xbaydns/wiki/NamedConfig

 

 

Introduction

named.conf中的配置很多,我们需要满足以下要求:

  • 支持分辨出访问者的来源(view)
  • 组织好zone文件的目录结构(控制同一目录中的文件数量)
  • 组织好各个view的认证文件(key)
  • named.conf中的配置文件频繁变更的部分应被分离出来,方便传送

 

目录结构

/etc/namedbnamed配置文件根目录)
        |
        +--aclacl配置文件存储目录)
        |
        +--dynamic(存储动态更新的master zone目录)
        |
        +--master(存储手工维护的master zone目录)
        |
        +--slave(存储slave zone目录)
        |
        +--view(存储所有view的定义目录)

文件结构

named.conf

options {
        // chroot相关设置
        directory       "/etc/namedb";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";

        // These zones are already covered by the empty zones listed below.
        // If you remove the related empty zones below, comment these lines out.
        disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
        disable-empty-zone "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.0.IP6.ARPA";
        disable-empty-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";

        // 否定递归请求
        recursion no;
        allow-transfer { 127.0.0.1; };
        allow-update { 127.0.0.1; };
};

// 导入acl的定义
include "acldef.conf";

// 导入logging的定义
include "logging.conf"

acldef.conf

acldef.conf是定义了所有的acl信息。这里可以定义用户来访的区域。你可以在这里任意定义acl,比如:

acl "internal" { 127.0.0.1; };
acl "hdhost" { 10.217.24.0/24; };

如果你的acl足够的多,而且非常大,哪么应该将acl分片,放入acl子目录中。这时acldef.conf中的内容如下表示:

acl "internal" { 127.0.0.1; };
acl "hdhost" { 10.217.24.0/24; };
include "acl/cncacl.conf";

logging.conf

缺省我们什么log都记,需要时会更改为简单的方式。

logging {

        category default {
                _default_log;
        };

        channel _default_log  {
                file "/var/log/named.log";
                severity debug;
                print-time yes;
        };
};

master/empty.db

$TTL 3h
@ SOA @ nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

@       NS      @

; Silence a BIND warning
@       A       127.0.0.1

master/localhost-reverse.db

$TTL 3h
@ SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

        NS      localhost.

1.0.0   PTR     localhost.

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 PTR localhost.

master/localhost-forward.db

$TTL 3h
localhost. SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
        ; Serial, Refresh, Retry, Expire, Neg. cache TTL

        NS      localhost.

        A       127.0.0.1
        AAAA    ::1

defaultzone.conf

defaultzone是按照RFC的要求加入了缺省必须的zone数据

// 这里的数据会在所有的view中出现
// 根服务器指向
zone "." { type hint; file "named.root"; };

// RFC 1912
zone "localhost"        { type master; file "master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "master/empty.db"; };

// RFC 1912-style zone for IPv6 localhost address
zone "0.ip6.arpa"       { type master; file "master/localhost-reverse.db"; };

// "This" Network (RFCs 1912 and 3330)
zone "0.in-addr.arpa"           { type master; file "master/empty.db"; };

// IANA Reserved - Unlikely to ever be assigned
zone "1.in-addr.arpa"           { type master; file "master/empty.db"; };
zone "2.in-addr.arpa"           { type master; file "master/empty.db"; };
zone "223.in-addr.arpa"         { type master; file "master/empty.db"; };

// Public Data Networks (RFC 3330)
zone "14.in-addr.arpa"          { type master; file "master/empty.db"; };

// Private Use Networks (RFC 1918)
zone "10.in-addr.arpa"          { type master; file "master/empty.db"; };
zone "16.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "17.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "18.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "19.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "20.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "21.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "22.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "23.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "24.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "25.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "26.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "27.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "28.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "29.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "30.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "31.172.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "168.192.in-addr.arpa"     { type master; file "master/empty.db"; };

// Link-local/APIPA (RFCs 3330 and 3927)
zone "254.169.in-addr.arpa"     { type master; file "master/empty.db"; };

// TEST-NET for Documentation (RFC 3330)
zone "2.0.192.in-addr.arpa"     { type master; file "master/empty.db"; };

// Router Benchmark Testing (RFC 3330)
zone "18.198.in-addr.arpa"      { type master; file "master/empty.db"; };
zone "19.198.in-addr.arpa"      { type master; file "master/empty.db"; };

// IANA Reserved - Old Class E Space
zone "240.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "241.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "242.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "243.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "244.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "245.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "246.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "247.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "248.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "249.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "250.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "251.in-addr.arpa"         { type master; file "master/empty.db"; };
zone "252.in-addr.arpa"         { type master; file "master/empty.db";};zone
"253.in-addr.arpa"         { type master; file "master/empty.db";};zone
"254.in-addr.arpa"         { type master; file "master/empty.db";};

// IPv6 Unassigned Addresses (RFC 4291)zone
"1.ip6.arpa"               { type master; file "master/empty.db";};zone
"3.ip6.arpa"               { type master; file "master/empty.db";};zone
"4.ip6.arpa"               { type master; file "master/empty.db";};zone
"5.ip6.arpa"               { type master; file "master/empty.db";};zone
"6.ip6.arpa"               { type master; file "master/empty.db";};zone
"7.ip6.arpa"               { type master; file "master/empty.db";};zone
"8.ip6.arpa"               { type master; file "master/empty.db";};zone
"9.ip6.arpa"               { type master; file "master/empty.db";};zone
"a.ip6.arpa"               { type master; file "master/empty.db";};zone
"b.ip6.arpa"               { type master; file "master/empty.db";};zone
"c.ip6.arpa"               { type master; file "master/empty.db";};zone
"d.ip6.arpa"               { type master; file "master/empty.db";};zone
"e.ip6.arpa"               { type master; file "master/empty.db";};zone
"0.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"1.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"2.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"3.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"4.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"5.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"6.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"7.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"8.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"9.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"a.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"b.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"0.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"1.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"2.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"3.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"4.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"5.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"6.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"7.e.f.ip6.arpa"           { type master; file "master/empty.db";};

// IPv6 ULA (RFC 4193)zone
"c.f.ip6.arpa"             { type master; file "master/empty.db";};zone
"d.f.ip6.arpa"             { type master; file "master/empty.db";};

// IPv6 Link Local (RFC 4291)zone
"8.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"9.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"a.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"b.e.f.ip6.arpa"           { type master; file "master/empty.db";};

// IPv6 Deprecated Site-Local Addresses (RFC 3879)zone
"c.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"d.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"e.e.f.ip6.arpa"           { type master; file "master/empty.db";};zone
"f.e.f.ip6.arpa"           { type master; file "master/empty.db";};

// IP6.INT is Deprecated (RFC 4159)zone
"ip6.int"                  { type master; file "master/empty.db";};

named.root

named.root说明了互联网的根服务器的地址,需要及时的更新

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    Nov 01, 2007
;       related version of root zone:   2007110100
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     192.228.79.201
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; operated by VeriSign, Inc.
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     192.58.128.30
;
; operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129
;
; operated by ICANN
;
.                        3600000      NS    L.ROOT-SERVERS.NET.L
.ROOT-SERVERS.NET.      3600000      A     199.7.83.42
;
; operated by WIDE
;
.                        3600000      NS    M.ROOT-SERVERS.NET.M
.ROOT-SERVERS.NET.      3600000      A     202.12.27.33
;End of File

操作系统兼容

操作系统的兼容适配是在sysconf中进行的。也就是说在sysconf中有以下代码进行适配:

system, _, release, version, machine, processor = platform.uname()
system, release, version = platform.system_alias(system, release,version)

if (system == 'Darwin'  and release == '9.1.0'):
    #操作系统为Mac OSX 10.5
    chroot_path = "/"
    namedconf = "/etc"
elif (system == "FreeBSD" and release[:3] == "7.0"):
    #操作系统为FreeBSD 7.0
    chroot_path = "/var/named"
    namedconf = "/etc/namedb"

我们所需要做的就是在系统中尽可能清晰的适配出bind所运行的chroot(如果没有使用chroot启动的操作系统,设置它为/就好)和named.conf所在的目录(namedconf)。

Mac OSX 10.5

Mac OSX 10.5的BIND版本为BIND 9.4.1-P1。没有使用chroot运行bind,named.conf在/etc/中。

    chroot_path = "/"
    namedconf = "/etc"

FreeBSD 7.0

FreeBSD 7.0的BIND版本为BIND 9.4.1-P1。使用了chroot运行bind,chroot目录为/var/named,named.conf在/etc/namedb中。

    chroot_path = "/var/named"
    namedconf = "/etc/namedb"

OpenBSD 4.2

OpenBSD 4.2的BIND版本为BIND 9.3.4。使用了chroot运行bind。chrrot目录为/var/named。named.conf在/etc中。

    named_user = "named"
    chroot_path = "/var/named"
    namedconf = "/etc"






http://www.edu.cn/wgjq_8179/20090806/t20090806_396819.shtml



DNS服务器Bind软件的view能够根据查询的源地址不同为一个域名提供不同的解析内容,可以让我们轻松的实现动态域名解析功能。多view的DNS服务器,如果没有合理安排配置文件,会存在很多冗余的信息,修改起来重复工作多,也很容易出错。通过合理的安排配置文件,可以最大程度减少冗余,方便管理。 
  下面以有3个view的ustc.edu.cn域名服务器举例来说明配置文件的组织方式。配置文件中定义了三个view,用来分别针对教育网(cernet),中国电信(chinanet)和其他运营商的解析请求给出不同的结果,加快访问速度。

  1. 文件acl.cernet,用来定义教育网的地址范围,内容为: 
  acl “CERNET” { 
  58.154.0.0/15; 
  58.192.0.0/12; 
  59.64.0.0/12; 
  116.13.0.0/16; 
  … 
  };

   2. 文件acl.chinanet,用来定义电信的地址范围,内容为: 
  acl “CHINANET” { 
  58.30.0.0/15; 
  58.32.0.0/11; 
  58.66.192.0/18; 
  … 
  };

  3. 文件/etc/named.common.conf,用来存放named.conf中每个view公共的信息,内容为: 
  zone “.” IN { type hint; file “named.ca”; }; 
  zone “localdomain” IN { type master; file “localdomain.zone”; allow-update { none; }; }; 
  zone “localhost” IN { type master; file “localhost.zone”; allow-update { none; }; }; 
  zone “0.0.127.in-addr.arpa” IN { type master; file “named.local”; allow-update { none; }; }; 
  zone “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.ip6.local”; allow-update { none; }; }; 
  zone “255.in-addr.arpa” IN { type master; file “named.broadcast”; allow-update { none; }; }; 
  zone “0.in-addr.arpa” IN { type master; file “named.zero”; allow-update { none;}; };

  zone “64.38.202.IN-ADDR.ARPA” in{type master; file “revs/named.202.38.64.rev”;}; 
  … 
  4. 文件/etc/named.conf,DNS服务的主配置文件,主要内容为 
  … 
  include “/var/named/acl.cernet”; 
  include “/var/named/acl.chinanet”; 
  … 
  view “CERNET” { 
  match-clients { CERNET;}; 
  include “/etc/named.common.conf”; 
  zone “ustc.edu.cn” in{type master; file “cernet.named.ustc.edu.cn.zone”;}; 
  };

  view “CHINANET” { 
  match-clients { CHINANET;}; 
  include “/etc/named.common.conf”; 
  zone “ustc.edu.cn” in { type master; file “chinanet.named.ustc.edu.cn.zone”;}; 
  };

  view “Other” { 
  match-clients { any;}; 
  include “/etc/named.common.conf”; 
  zone “ustc.edu.cn” in { type master; file “other.named.ustc.edu.cn.zone”;}; 
  };

  5. 文件common.named.ustc.edu.cn.zone,存放所有view完全一样的东西,内容为 
  @ IN SOA ns.ustc.edu.cn. james.ustc.edu.cn. ( 
  812 
  1200 ; refresh (20 min ) 
  300 ; retry (5 min) 
  7200 ; expire (2 hour) 
  600 ; minimum (10 min) 
  ) 
  IN NS ns.ustc.edu.cn. 
  IN NS mx.ustc.edu.cn. 
  重要服务器 
  ns IN A 202.38.64.1 
  mx IN A 202.38.64.56 
  … 
  msclub CNAME revproxy 
  job CNAME revproxy 
  www.job CNAME revproxy 
  …

  6. 文件cernet.named.ustc.edu.cn.zone,存放CERNET view的信息,用来定义针对教育网的解析结果: 
  $INCLUDE common.named.ustc.edu.cn.zone 
  revproxy IN A 202.38.64.246 
  bbs IN A 202.38.64.3 
  …

  7. 文件chinanet.named.ustc.edu.cn.zone,存放ChinaNET view的信息,用来定义针对电信网的解析结果: 
  $INCLUDE common.named.ustc.edu.cn.zone 
  revproxy IN A 218.22.21.25 
  bbs IN A 202.141.160.3 
  …

  8. 文件othernet.named.ustc.edu.cn.zone,存放Other view的信息,用来定义针对其他运营商的解析结果: 
  $INCLUDE common.named.ustc.edu.cn.zone 
  revproxy IN A 218.104.71.173 
  bbs IN A 218.104.71.174 
  … 
  这样的配置文件组织,信息的冗余量很小,数据有变化时,我们只需修改相应view的数据就可以。需要注意的是不管修改哪一个view的内容,我们都需要修改common.named.ustc.edu.cn.zone中的序列号,至少增加1,重新启动named服务,才能使修改的内容生效。

(作者单位为中国科学技术大学)

来源:《中国教育网络》2009年5月刊



 

 

################################################################

....

 http://xiaomazi.blog.51cto.com/5891742/1376225

这里我们总的来说下对DNS的理解:

-->正向解析与反向解析:

1)正向解析:

   正向解析是指域名到IP地址的解析过程。

2)反向解析:

   反向解析是从IP地址到域名的解析过程;反向解析的作用为服务器的身份验证。

 

 

-->主从DNS服务器:

   主DNS服务器(Master DNS): 数据库更新由管理员手动完成;

   辅助DNS服务器 (SlaveDNS):数据库更新从主服务器或其他辅助DNS服务器那里完成;

 

-->DNS 子域:

DNS服务器不仅可以为属于本域的客户端用户提供解析服务,也可以授权给某个域,让其也可以提供相应的DNS解析服务,称为子域授权.

 

-->DNS 子域委派:

具体的作用是为了方便管理 提高DNS的解析性能,实现通信负载平衡.

 

-->DNS 转发器的作用:

解析某本机不负责的区域内的名称时不转发给根,而是转给指定的主机;

   根服务只有13个,如果DNS的查询全部都发送到根服务器效率比较低下,启动DNS转发器后,DNS进行查询的时候,如果遇到本机不能解析的查询,就向DNS转发器请求查询,DNS转发器指定的地址一般都是比较大的DNS服务器,通常接受大量的DNS查询操作,比如电信的核心DNS.  

 

-->ACL-访问控制列表:

   将多个一同处理的地址定义为一组,并且给它起个名字,这就是列表;

 

-->view 视图:

   所谓视图简单来说就是,将DNS服务器一切为两个部分;

   所谓视图我们把一个DNS服务器工作在不同的多个逻辑界面上,一个区域可以再不同的视图中各自定义一次;

   如果我们定义了 视图 所有区域都必须定义在 view 中,包括根;

-->资源记录:

   某些资源记录不仅包括DNS域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。

   1)SOA资源记录: 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA记录。SOA定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA记录。

   2)NS资源记录: 名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。

   3)A资源记录: 地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。

   4)PTR资源记录: 相对于A资源记录,指针(PTR)记录把IP地址映射到FQDN。

   5)CNAME资源记录: 规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。

   6)MX资源记录: 邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。邮件交换服务器是为DNS域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。

 

-->DNS查询:分为递归查询和迭代查询两种.

 (1) 递归查询: 即客户端向本地DNS服务器请求查询域名,本地DNS服务器收到查询任务后如自身无法回答则向其他服务器查询,直到查到结果后返回结果给客户端。期间DNS服务器可能要查询很多其他DNS服务器。
 (2)迭代查询:即客户端向本地服务器请求查询域名,本地DNS服务器无法回答,则给客户端返回另一个能查询域名的服务器地址,客户端再向另一服务器查询,期间可能客户端需查询多个DNS服务器,最终查到结果。

 

 


 

注意:如果您感觉内容太长,那么请到以下分支查看你所需要的内容:

   1. 总结 DNS and BIND: http://xiaomazi.blog.51cto.com/5891742/1376225

   2. 分支1- 正/反向域名解析之yum与编译安装: http://xiaomazi.blog.51cto.com/5891742/1376228

   3. 分支2- 主从DNS服务器: http://xiaomazi.blog.51cto.com/5891742/1376231

   4. 分支3- 子域授权、请求转发: http://xiaomazi.blog.51cto.com/5891742/1377087

   5. 分支4- ACL 及 view视图: http://xiaomazi.blog.51cto.com/5891742/1377090

 


需求介绍:

一、DNS的常用命令

二、如何使用 yum安装 并配置使用?

   1.手动添加配置文件;

   2.利用原有的配置文件文件进行修改;

   3.以及反向解析的实现;

 

三、如何实现 BIND主从复制?

   1.配置正向主从服务的实现;

   2.配置反向主从服务的实现;

   3.区域传送的安全控制;

四、如何实现 子域授权、请求转发及ACL?

   1.远程管理BIND的工具;

   2.子域授权;

   3.请求转发;

五、ACL 设置 与 view 视图;

六、如何在 编译环境安装bind ,配置并使用?

 

 


一、DNS的常用命令:

1.测试解析命令.

1). dig命令:

 

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

       +[no]trace-->(跟踪解析过程)

       +[no]recurse-->(是否使用递归的方式)

       +[no]tcp -->(是否使用tcp查询,而不使用udp)

       +[no]question-->(是否隐藏问题)

       +[no]answer-->(是否隐藏答案)

       +[no]authority-->(是否隐藏权威段)

       +[no]additional-->(是否隐藏附加段)

2). host命令:

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

例子:  

1
2
3
[root@localhost ~]# host -t MX xiaoma.com
   xiaoma.com mail is handled by 10 mail.xiaoma.com.
   [root@localhost ~]#

 

3). nslookup命令(交互式的命令):

   nslookup>

   server DNS_SERVER_IP

   set q=TYPE

   {name}

例子:

1
2
3
4
5
6
7
8
9
[root@localhost ~]# nslookup
    set q=A
    > www.xiaoma.com
    Server:172.16.17.202
    Address:172.16.17.202#53
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
    Name:www.xiaoma.com
    Address: 172.16.17.203
    >

 

2.启动/重加载命令:

1).启动命令:

   # named -u named

   # servcice named start(这个可能会依赖rndc.key的)

2).重载命令:

   # service named reload

   # killall -1 named

   # killall named(关闭)

3.测试语法错误:

   # service named configtest

# named-checkconf

# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone

 


二、bind的基本使用:

 

1、正向解析配置:

第一种:手动创建配置文件及区域文件:

 

 

前提:

1
2
3
4
5
6
7
8
9
10
11
12
13
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

 

1).将准备好的bind包安装:

1
[root@localhost ~]# yum -y install bind

2).注意: 这里没有使用源配置文件,而是手动写配置文件:

1
[root@localhost etc]# mv /tmp/named.conf /etc/named.conf.origin

3).新建编辑配置文件/etc/named.conf:

 

wKiom1MgiXvxDFddAAIRRGsb8sI894.jpg

 

4).配置区域文件(这里是系统自带的哦):

⑴编辑/var/named/named.loopback文件(如果是新建的文件要修改其相关属性):

 

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# vim /var/named/named.loopback
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     localhost.

⑵编辑/var/named/named.localhost文件(如果是新建的文件要修改其相关属性):

 

 

1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~]# vim /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

⑶编辑/var/named/xiaoma.com.zone文件(手动创建):

wKioL1MgPh3j3CRrAAIHlj_wYvU146.jpg

 

5).修改named.conf属性:

 

 

1
2
3
4
5
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost etc]# chown root:named /etc/named.conf
[root@localhost etc]# chmod --reference=/etc/named.conf.origin /etc/named.conf(1)-->注意:这个(1)和(2)是一样的.
[root@localhost etc]# chmod 640 /etc/named.conf(2)

6).启动测试语法/手动测试语法的使用:

1
2
3
4
5
6
7
8
9
10
11
12
第一:启动时测试:
[root@localhost etc]# service named configtest
zone localhost/IN: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
第二:手动测试:
[root@localhost etc]# named-checkconf
[root@localhost etc]#
区域文件是系统自带的,我这里就没有必要检查语法了吆.
root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031301
OK
[root@localhost named]#

7).启动named服务:

 

 

1
2
3
4
[root@localhost etc]# service named start-->启动时需要产生随机数.
Generating /etc/rndc.key:
[root@localhost etc]# --> 如果这里启动不了就使用下面的这个命令:以root的身份启动,启动后以named用户执行.
[root@localhost etc]# named -u named

 

 

8).使用dig命令测试(这里介绍了下面绝不会介绍):

wKioL1MghiGT4u2YAAOhdOG6nDk435.jpg

 

 

2.正向解析配置:

第二种:直接修改配置文件及区域文件:

 

前提:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

1).将准备好的bind包安装:

1
[root@localhost ~]# yum -y install bind

2).修改配置文件:named.conf:

1
2
3
4
5
6
7
8
9
10
11
注意:
这里只是把注释的内容贴出来了:
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

3).修改区域文件/etc/named.rfc1912.zones:

1
2
3
4
5
6
在文章尾部添加:
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "xiaoma.com" {
        type master;
        file "xiaoma.com.zone";
};

4).修改其属性:

1
2
3
4
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone

5).启动服务/重新加载服务:

1
2
3
[root@localhost named]# named -u named
[root@localhost named]# service named reload
[root@localhost named]# killall -1 named

6).测试解析:

1
2
3
4
5
6
7
8
9
[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t MX xiaoma.com
[root@localhost ~]# dig -t CNAME pop.xiaoma.com
[root@localhost ~]# dig -t CNAME ftp.xiaoma.com
[root@localhost ~]# dig -t A www.xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com
[root@localhost ~]# dig -t NS xiaoma.com @172.16.17.202
[root@localhost ~]# dig -t A mail.xiaoma.com

--->我们以它来测试查询 mail 的 A 记录:

 

wKiom1MgjDOSDi9YAANqkuU_u48951.jpg

上下图片对比:

wKiom1MgixTguQNxAANVlDNLkKk326.jpg

 

6).使用 +trace 跟踪解析过程(要连上网络的吆):

wKioL1Mgk1qhMvkyAALfCHKgtiY947.jpg

 

 

接上面的环境基础(2.正向解析配置:):

 

3.配置反向解析:

1).定义区域文件/etc/named.rfc1912.zones:

1
2
3
4
5
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "17.16.172.in-addr.arpa"{
        type master;
        file "172.16.17.zone";
};

2).创建区域文件172.16.17.zone:

1
2
复制文件保持属组及权限:
[root@localhost named]# cp -p xiaoma.com.zone 172.16.17.zone

3).编辑区域文件172.16.17.zone:

wKiom1MgmFOD6KVcAAExsjcjd3Y410.jpg

4).启动测试语法/重新加载:

wKioL1MgnrOjuGrNAALLt4h-LpQ022.jpg

 

5).测试解析:

wKioL1MgmpmAb69DAAMkNI9mUNY279.jpg

 

接上,其它解析:

1
2
[root@localhost named]# dig -x 172.16.17.204
[root@localhost named]# dig -x 172.16.17.203

6).host命令测试解析:

wKiom1MgmsDCbBpzAAGL-GAJw54900.jpg

 

 

 


接上 2 和 3 的配置的基础之上:

 

三、区域传送的 主从复制:

 

 

注意:

这里的主机名字我改了,为了方便认出 主和从 的;

主DNS服务器: host1

从DNS服务器: host2

----不在同一网段也可以同步----

 

前提:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
挂载光盘:
[root@host2 ~]# mkdir /media/cdrom
[root@host2 ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@host2 ~]# cd /etc/yum.repos.d/
[root@host2 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@host2 yum.repos.d]# vim media1.repo
[media1]
name=media1
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

-->将准备好的bind包安装:

1
[root@localhost ~]# yum -y install bind

 

 

1.配置正向主从服务的实现:

 

 

1).主服务器配置 /var/named/xiaoma.com.zone:

wKioL1MhlH_yRghlAAF5--vG_8s412.jpg

 

2).主服务器配置 重新加载区域文件:

1
2
[root@host1 ~]# service named reload
Reloading named:                                          [  OK  ]

3).测试主从服务器是否能通信:

wKiom1MhlKbBblJBAAGFPapML2w748.jpg

2).从服务器配置 /etc/named.conf:

1
2
3
4
5
6
7
8
9
10
11
注意:
这里只是把注释的内容贴出来了:
//      listen-on port 53 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

3).从服务器配置 vim /etc/named.rfc1912.zones:

wKioL1MhlH_xrRiDAACxDZfJ0tw337.jpg

 

4).从服务器配置 启动并查看端口53是否启动:

1
2
[root@host2 ~]# named -u named
[root@host2 ~]# ss tunl

5).从服务器配置查看/var/named/slaves/xiaoma.com.zone是否以同步:

wKiom1MhlKeB-yZCAAH_7mLHaSQ369.jpg

 

6).从服务器配置 测试解析:

wKioL1MhlIDRzoHuAANFTm1A_pY985.jpg

 

7).主服务器配置 重新加载并修改序列号:

I.添加一条记录并修改序列号:

wKioL1MhlIGxBZB5AAGC_9wtCNQ745.jpg

 

II.重新加载:

1
2
[root@host1 ~]# service named reload
Reloading named:                                          [  OK  ]

8).查看日志:

wKiom1MhlKjim4klAAQwRDV99QQ983.jpg

 

9).从服务器 查看是否同步:

wKioL1Mhl1aQ66siAAIxJOM6aO4234.jpg

 

10).其它解析:

1
2
3
4
[root@host2 ~]# dig -t NS xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t MX xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME pop.xiaoma.com @172.16.17.100
[root@host2 ~]# dig -t CNAME ftp.xiaoma.com @172.16.17.100

 

 

 

接上(1.配置正向主从服务的实现)

 

2.配置反向主从服务的实现:

 

1).从服务器配置 vim /etc/named.rfc1912.zones :

wKioL1Mhmyyhxc1TAAC0GYkMKVs695.jpg

 

2).从服务器 测试语法并重新加载:

1
2
3
[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:                                           [  OK  ]

3).从服务器 查看日志:

wKioL1MhnJGQsjFqAAS8RjJ2y9M560.jpg

 

4).从服务器 查看同步文件:

wKioL1MhniOSF27aAAHsrR4Vfec601.jpg

 

5).将主服务器的记录添加至反向记录:

我们在主服务器(/var/named/172.16.17.zone)里面加一条NS记录,告诉主服务器有一个从服务器.(ns2、img以及从服务器的记录).

wKioL1Mho-vzq9_SAAHt08pX7IQ130.jpg

 

6).启动服务并重新加载:

wKioL1Mho5mxmjRxAAIfFBAPNxM357.jpg

 

7).主服务器 查看日志:

wKiom1MhpCKw-OKqAARI-flv-Eg517.jpg

 

8).从服务器 查看同步:

wKiom1MhpNnRlS1NAAIelnRb1Gc038.jpg

 

 

接上面(2.配置反向主从服务的实现)

 

3.区域传送的安全控制:

注意:我们都知道默认在未设置安全控制的情况下,DNS服务器的区域传送是传送所有服务器的,那么我们应该如何防范别人同步你的服务器的数据呢?

 

1).主服务器配置 vim /etc/named.rfc1912.zones :

wKioL1MhqBjQ0H3uAAFEzEMurFI845.jpg

 

2).主服务器配置 测试语法/重加载:

1
2
3
4
[root@host1 ~]# named-checkconf
[root@host1 ~]# service named reload
Reloading named:                                           [  OK  ]
[root@host1 ~]#

3).主服务器 测试区域传送:

wKiom1MhqRjQKXVDAAPis3FGj20093.jpg

 

4).从服务器 测试区域传送:

wKioL1MhqVfClurqAAO6Cu6eMTI896.jpg

 

6).定从服务器的安全控制 vim /etc/named.rfc1912.zones:

wKioL1MhqneTqjO_AAFePrg0blA029.jpg

 

7).从服务器 测试语法/重加载

1
2
3
[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:

8).从服务器 测试:

wKiom1Mhq16TnIGGAAHRtd5dKg8452.jpg

 

 

 


接上面的环境配置.

四、如何实现 子域授权、请求转发及ACL?

 

1.远程管理BIND的工具:

简单介绍:

   rndc: Remote Name Domain Controller

   rndc: 密钥

rndc: 持有一半密钥,保存于rndc的配置文件中;

BIND:持有一半密钥,保存于主配置文件中;

常用选项:

reload : 重读

reload zone : 重加区域文件

 

reconfig: 重读配置文件并加载新增的区域;

 

querylog: 关闭或开启查询日志;

 

flush: 清空服务器的缓存;

flushname name: 清空指定名称相关的缓存;

 

trace: 打开debug,debug有级别的概念,每执行一次提升一次级别;

trace LEVEL: 指定deb②ug的级别;

 

如果rndc无法正常工作,可尝试使用rndc-confgen 生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中并按指示启用即可.

如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf

   # service named reload

   还有一个就是在下面的小7)中的方法实现自动生成rndc.key文件.

 

1).首先主服务器上生成rndc的密钥:

I.生成密钥:

1
[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf

II.密钥介绍:

wKioL1Mhv43yeN8MAALi4c9JDv0240.jpg

 

2).在主服务器 将/etc/rndc.conf属于BIND的复制到/etc/named.conf

wKiom1MhucGQKMgLAAF9V--4MTU534.jpg

3).在主服务器上 查看状态:

wKioL1MhvXaCrTx3AAJ4Mt4tQwY015.jpg

4).再主服务器上查看端口:

1
[root@host1 ~]# ss -tunl

5).从服务器上升成密钥:

与主服务器的步骤一样:1)-2)-3)-4)-5)  这里就不贴图了哈.

6). 例子:

①第一次开启,执行第二次关闭:rndc querylog

wKiom1MhxXCj6nlCAAHINWXFUCg652.jpg

接上:

wKioL1MhxGiSGU8KAAOcagKDP8s847.jpg

②停止rndc:

1
2
3
4
[root@host2 ~]# rndc stop
[root@host2 ~]# ps aux | grep named
root     263701.00.1103252828pts/0S+20:450:00grepnamed
[root@host2 ~]# named -u named

③trace的使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc trace  执行三次
[root@host2 ~]# rndc trace
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 3符合上面的三次.
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]# rndc trace 0  (指定级别)
[root@host2 ~]# rndc status
version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
CPUs found: 2
worker threads: 2
number of zones: 21
debug level: 00级别
xfers running: 0
xfers deferred: 0
soa queries inprogress: 0
query logging isOFF
recursive clients: 0/0/1000
tcp clients: 0/100
server isup andrunning
[root@host2 ~]#

7).如何自动生成rndc.key , vim /etc/rc.d/init.d/named文件:

wKiom1MjFGew7hPsAAIbowBG7n0538.jpg

 

 

 

2.BIND子域授权的实现(主要将正向的,反向的很麻烦):

 

子域名和委派的区别?

   子域文件在父域文件中

   委派有独立的区域文件

-->实验环境

   三台虚拟机:一台主,一台从,一台子域.

   注意这三台都要使用yum安装bind吆.

前提:

1
2
3
4
5
6
7
8
9
10
11
12
13
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

>>>将准备好的bind包安装:

1
[root@localhost ~]# yum -y install bind

主配置文件不需要更改;

1).主服务器配置 正向授权文件 vim /etc/rc.d/init.d/named:

wKiom1MjGWPSM5zaAAG7VoqeSF0460.jpg

 

接上 测试语法:

1
2
3
4
5
6
7
[root@host1 ~]# named-checkconf
[root@host1 ~]# named-checkzone "xiaoma.com"/var/named/xiaoma.com.zone
zone xiaoma.com/IN: tech.xiaoma.com/NS 'dns.tech.xiaoma.com'(out of zone) has no addresses records (A or AAAA)
zone xiaoma.com/IN: loaded serial 2014031203
OK
[root@host1 ~]# rndc reload
[root@host1 ~]# service named restart

2).这里配置了一台子域服务器IP:172.16.200.21:

wKioL1MjHCOQxEtmAAFiUuQWGoM690.jpg

 

3).子域配置/etc/named.conf:

1
2
3
4
5
6
7
8
9
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

4).子域配置 定义/etc/named.rfc1912.zones :

wKiom1MjIzCSO1R4AABVweyTZPY685.jpg

 

5).子域配置 区域文件/var/named/tech.xiaoma.com.zone:

wKioL1MjIyfxQQ_tAAD8D1A97Ss786.jpg

6).赋予权限属性并启动:

1
2
3
4
5
6
7
8
9
10
11
[root@localhost named]# hown root:named tech.xiaoma.com.zone
[root@localhost named]# chmod 640 tech.xiaoma.com.zone
[root@localhost named]# named-checkzone "xiaoma.com" /var/named/tech.xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031201
OK
[root@localhost named]# named-checkconfig
[root@localhost named]# service named start
Starting named:                                            [  OK  ]
[root@localhost named]# rndc reload
server reloadsuccessful
[root@localhost named]#

7).子域 测试解析A记录:

wKioL1MjKqeDBlp_AANI4DqHjTw435.jpg

 

8).主服务器解析NS记录,虽然有授权,但是不以父域的相应为结果(父域能解析子域).

wKiom1MjKn6DiWqVAAKICKonTTA479.jpg

 

9).在子域上解析父域(子域不能解析父域)--这是需要转发功能的:

wKiom1MjLFHyJYDiAAKAMlQkzms817.jpg

 

 

 

接上2配置:

3.配置区域转发:转发域.

 

1).子域配置 /etc/named.rfc1912.zones:

wKiom1MjNpGyNYUpAACQHEsk1H4335.jpg

2).重载服务.

1
2
3
4
5
6
7
8
[root@localhost named]# named-checkconf
[root@localhost named]# rndc reload
server reloadsuccessful
不行的就用这个:
[root@localhost named]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@localhost named]#

3).在子域上测试解析父域的A记录:

wKiom1MjOX2RMlTOAAOBaT0U-ic332.jpg

 

4).子域配置:怎么解析其它的服务器呢?如www.google.com

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

wKioL1MjPsCD7cEMAAIUwNjzovE920.jpg

 

II.配置/etc/named.rfc1912.zones:

wKiom1MjQIaSv9BEAABwzfjbNhI154.jpg

 

 

 

 

 


五、ACL 设置 与 view 视图;

 

1.ACL 的简单配置:

 

 

1).ACL的安全控制选项:

allow-transfer {};

通常都需要启用;

allow-query {};

此项通常仅用于服务器是缓存名称服务器时,只开放查询功能给本地客户端;

allow-recursion {  };

定义递归白名单;

allow-update { none; };

定义允许动态更新区域数据文件的主机白名单;

 

2).访问控制列表只有定义后才能使用;通常acl要定义在named.conf的最上方;

3).BIND有四个内置的acl:

any: 任何主机

none: 无一主机

local: 本机

localnet: 本机的所在的网络;

 

4).配置实例 /etc/named.conf文件中定义:

wKiom1MjUSzATyRcAAKGoXg3ZUU489.jpg

 

5).启动并检测语法错误:

1
2
3
4
5
[root@host1 ~]# named-checkconf
[root@host1 ~]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@host1 ~]#

 

 

 

2.view视图 的简单配置:

 

如果我们定义了 视图 所有区域都必须定义在 view 中,包括根;

 

前提:

1
2
3
4
5
6
7
8
9
10
11
12
13
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 iswrite-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

 

1).将准备好的bind包安装:

1
[root@localhost ~]# yum -y install bind

2).修改配置文件:named.conf:

1
2
3
4
5
6
7
8
9
10
11
注意:
这里只是把注释的内容贴出来了:
//      listen-on port 53 { 127.0.0.1; };
//      listen-on-v6 port 53 { ::1; };
//      allow-query     { localhost; };
//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;
//      bindkeys-file "/etc/named.iscdlv.key";
//      managed-keys-directory "/var/named/dynamic";
//include "/etc/named.root.key";

3).修改区域文件/etc/named.rfc1912.zones:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
[root@localhost ~]# vim /etc/named.rfc1912.zones
//named.rfc1912.zones:
//
//Provided by Red Hat caching-nameserver package
//
//ISC BIND named zone configuration forzones recommended by
//RFC 1912 section 4.1 : localhost TLDs and address zones
//and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
//(c)2007 R W Franks
//
//See /usr/share/doc/bind*/sample/forexample named configuration files.
//
定义内网的客户端为192.168.0.0/24的(根也在):
view left {
match-clients { 192.168.0.0/24; };
zone "."IN {
typehint;
file"named.ca";
};
zone "localhost.localdomain"IN {
typemaster;
file"named.localhost";
allow-update { none; };
};
zone "localhost"IN {
typemaster;
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 {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa"IN {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa"IN {
typemaster;
file"named.empty";
allow-update { none; };
};
外网的区域:
zone "xiaoma.com"IN {
typemaster;
file"xiaoma.com.left";
};
};
定义外网客户端:
view right {
match-clients { 172.16.0.0/16; };
zone "xiaoma.com"IN {
typemaster;
file"xiaoma.com.right";
};
};
定义其他网络找不到客户端,就匹配到外网上去:
view default {
match-clients { any; };
zone "xiaoma.com"IN {
typemaster;
file"xiaoma.com.right";
};
};

4).检查配置文件:

1
[root@localhost ~]# named-checkconf

5).配置区域文件 /var/named/xiaoma.com.left

wKiom1MjZ4uj8mILAADgRKNagGo321.jpg

 

6).配置区域文件 /var/named/xiaoma.com.right

wKiom1MjbT6hB3TkAADscs55aCg224.jpg

7).赋予文件属性:

1
2
[root@localhost named]# chown root:named xiaoma.com.*
[root@localhost named]# chmod 640 xiaoma.com.*

8).启动服务:

1
2
3
4
[root@localhost named]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@localhost named]#ss -tunl

9).模拟IP地址:

1
[root@localhost ~]# ifconfig eth0:0 192.168.0.7/24 up

10).测试解析:

wKioL1MjazWin-YlAALjeWwqJPo667.jpg

接上:

wKioL1MjazbSS9z_AALd04d518A345.jpg

9).windows测试:

wKiom1MjbXOhsoZRAAF7GUhvXgw501.jpg

 

 

 


六、编译安装bind及应用:

 

>>>编译安装named(bind-9.9.5):

   前提:配置好开发环境,安装包组(yum安装). 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
挂载光盘:
[root@xiaoma ~]# mkdir /media/cdrom
[root@xiaoma ~]# mount /dev/cdrom /media/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only
配置本地yum源:
[root@xiaoma ~]# cd /etc/yum.repos.d/
[root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak
[root@xiaoma yum.repos.d]# vim media.repo
[media]
name=media
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0
安装开发包组:
[root@xiaoma ~]# yum grouplist | grep Development
   Desktop Platform Development
   Development tools
   Server Platform Development
[root@xiaoma ~]# yum -y groupinstall "Server Platform Development" "Desktop Platform Development" "Development tools"

1、下载源代码,编译安装:

1).将准备好的源码包解压并编译安装:

1
2
3
4
5
[root@xiaoma tmp]# tar xf bind-9.9.5.tar.gz
[root@xiaoma tmp]# cd bind-9.9.5
[root@xiaoma bind-9.9.5]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --enable-epoll --disable-chroot
root@xiaoma bind-9.9.5]# make
root@xiaoma bind-9.9.5]# make install

2.创建主配置文件/etc/named/named.conf:

wKiom1MgQR_zRUPfAAF5ZtEJGds565.jpg

 

3.创建区域数据文件:

① 创建/var/named/named.ca :

1
2
3
[root@xiaoma ~]# mkdir /var/named
[root@xiaoma ~]# cd /var/named/
[root@xiaoma named]# dig -t NS . @172.16.0.1 > named.ca

② 创建/var/named/named.loopback :

1
2
3
4
5
6
7
8
9
10
[root@xiaoma named]# vim named.loopback
$TTL 86400
@       IN      SOA     localhost.      admin.localhost. (
                        2014031101
                        2H
                        10M
                        7D
                        1D )
                IN      NS      localhost.
1               IN      PTR     localhost.

③ 创建/var/named/named.localhost :

1
2
3
4
5
6
7
8
9
10
[root@xiaoma named]# vim named.localhost
$TTL 86400
@       IN      SOA     localhost.      admin.localhost. (
                        2014031101
                        2H
                        10M
                        7D
                        1D )
                IN      NS      localhost.
localhost.      IN      A       127.0.0.1

④然后创建/var/named/xiaoma.com.zone文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@xiaoma named]# vim /var/named/xiaoma.com.zone
$TTL 86400
@       IN      SOA     dns.xiaoma.com.      dnsadmin.xiaoma.com. (
2014031101
2H
10M
3D
1D)
IN      NS      dns
IN      MX 10mail
dns             IN      A       172.16.17.202
mail            IN      A       172.16.17.202
www             IN      A       172.16.17.1

 

4.创建系统用户,且测试启动:

① 创建用户:

1
2
3
4
5
[root@xiaoma ~]# groupadd -g 53 -r named
[root@xiaoma ~]# useradd -g named -r named
[root@xiaoma ~]# id named
uid=496(named) gid=53(named) groups=53(named)
[root@xiaoma ~]# ls /home/

② 赋予相应属性:

1
2
[root@xiaoma named]# chmod 640 /etc/named/named.conf /var/named/*
[root@xiaoma named]# chown root:named /etc/named/* /var/named/*

③ 设置PATH变量:

1
2
3
[root@xiaoma named]# echo 'export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH' > /etc/profile.d/named.sh
[root@xiaoma named]# cat /etc/profile.d/named.sh
[root@xiaoma named]# source /etc/profile.d/named.sh

④ 检查语法:

 

1
2
3
4
5
6
7
8
9
10
11
[root@xiaoma ~]# named-checkconf
[root@xiaoma ~]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback
zone 0.0.127.in-addr.arpa/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# named-checkzone "localhost" /var/named/named.localhost
zone localhost/IN: loaded serial 2014031101
OK
[root@xiaoma named]# named-checkzone "xiaoma.com" xiaoma.com.zone
zone xiaoma.com/IN: loaded serial 2014031101
OK
[root@xiaoma ~]# killall -1 named

⑤ 测试启动并查看端口:

1
2
[root@xiaoma named]# named -u named
[root@xiaoma named]# ss -tunl

⑥测试解析A记录:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost named]# dig -t A www.xiaoma.com @172.16.17.202
; <<>> DiG 9.9.5 <<>> -t A www.xiaoma.com @172.16.17.202
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49273
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.xiaoma.com.            IN  A
;; ANSWER SECTION:
www.xiaoma.com.     86400   IN  A   172.16.17.1
;; AUTHORITY SECTION:
xiaoma.com.     86400   IN  NS  dns.xiaoma.com.
;; ADDITIONAL SECTION:
dns.xiaoma.com.     86400   IN  A   172.16.17.202
;; Query time: 0 msec
;; SERVER: 172.16.17.202#53(172.16.17.202)
;; WHEN: Fri Mar 07 01:37:43 CST 2014
;; MSG SIZE  rcvd: 93
[root@localhost named]#

 

5.提供服务脚本,并赋予权限:

1).脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
[root@xiaoma ~]# vim /etc/rc.d/init.d/named
#!/bin/bash
#
# description: named daemon
# chkconfig: - 25 80
#
pidFile=/usr/local/bind9/var/run/named.pid
lockFile=/var/lock/subsys/named
confFile=/etc/named/named.conf
[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions
start() {
        if [ -e $lockFile ]; then
                echo "named is already running..."
                exit 0
        fi
                echo -n "Starting named:"
                daemon --pidfile "$pidFile" /usr/local/bind9/sbin/named -u named -c "$confFile"
                RETVAL=$?
                echo
        if [ $RETVAL -eq 0 ]; then
                touch $lockFile
                return $RETVAL
        else
                rm -f $lockFile $pidFile
                return 1
        fi
}
stop() {
        if [ ! -e $lockFile ]; then
                echo "named is stopped."
                #       exit 0
                fi
                echo -n "Stopping named:"
                killproc named
                RETVAL=$?
                echo
        if [ $RETVAL -eq 0 ];then
                rm -f $lockFile $pidFile
                        return 0
        else
                echo "Cannot stop named."
                failure
                return 1
                fi
}
restart() {
        stop
        sleep 2
        start
}
reload() {
        echo -n "Reloading named: "
        killproc named -HUP
        #killall -HUP named
        RETVAL=$?
        echo
        return $RETVAL
}
status() {
        if pidof named &> /dev/nullthen
                echo -n "named is running..."
                success
                echo
        else
                echo -n "named is stopped..."
                success
                echo
        fi
}
usage() {
        echo "Usage: named {start|stop|restart|status|reload}"
}
case $1 in
start)
        start ;;
stop)
        stop ;;
restart)
        restart ;;
status)
        status ;;
reload)
        reload ;;
        *)
        usage
        exit 4
        ;;
        esac

2).赋予相应属性:

1
2
3
4
5
6
7
[root@xiaoma ~]# chkconfig --add named
[root@xiaoma ~]# chkconfig --list named
named           0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@xiaoma ~]# killall named -->关闭named
[root@xiaoma ~]# chmod +x /etc/rc.d/init.d/named
[root@xiaoma ~]# service named start
Starting named:                                            [  OK  ]

 

 

 

A smile is the most beautiful language!!!

 


j_0057.gifj_0057.gifj_0057.gif以本人的理解而写出博客,如若有错误,欢迎指出.j_0057.gifj_0057.gifj_0057.gif

                                                                       ---->小马子

 

本文出自 “不怕鬼的小马子” 博客,请务必保留此出处http://xiaomazi.blog.51cto.com/5891742/1376225

 =============================================

 http://dns-learning.twnic.net.tw/bind/intro3.html

上一步 回到第一頁 下一步

設定 /etc/named.conf檔案

Bind 的主要設定檔為 named.conf,因此Bind執行時會去讀取此執行檔。而 named.conf的功能是由於每部 name server 主要是負責某些特定 zone 中有關機器的 domain name,IP 的查詢、127.0.0.1 本機 IP 的查詢,除此之外,name server 也需要知道要怎樣去找 root name server。因此 named.conf 便會指出該 name server 管轄的網域名稱及相關檔案存取的位置及名稱。

named.conf 檔案主要的內容包含4個部分,分別為:

  • options
  • 關於 .(root) 的內容
  • 關於 localhost 的正反解
  • 關於其他 domain 的正反解
我們先看一個完整的 named.conf 的檔案:

 

acl internals { 192.168.10.0/24; };				
options {
directory "/var/named";
allow-transfer{ 192.168.11.7;
                internals;
};
};
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." {                         //.(root) 的內容
type hint;
file "named.ca";                 
};
zone "localhost"{                  //localhost 的正解
type master;
file "localhost.zone";            
};
zone "0.0.127.in-addr.arpa"{       //localhost 的反解
type master;
file "named.local";                
};
zone "twnic.com.tw"{               //使用者domain的正解
type master;
file "twnic.hosts";                
};
zone "10.168.192.in-addr.arpa"{    //使用者domain的反解
type master;
file "twnic.rev";                  
};

				

由上例關於 named.conf 的設定檔中可分為許多不同的類型,不同類型皆由{}包起來,以下說明不同設定的類型。

1. acl : 定義一份IP位址對應清單,以利存取時的控制。

e.g.

acl internals { 192.168.10.0/24; };
					

定義IP位址清單範圍為192.168.10.0/24,而"internals"為使用者可自行定義的 acl 名稱,設定acl後對於之後相關存取設定時 (e.g. allow-query、allow-transfer...等等),便可直接使用 acl 名稱來代表之前所設定的IP範圍。

2. options :控制通用的伺服器組態,設定其他選項的預設值。

e.g.

options {
directory “/var/named”;
allow-transfer{ 192.168.11.7;
                internals;
};
					

表示將 named 的區域紀錄檔(zone file)儲存在 /var/named 的目錄中,也就是Bind伺服器中所有DNS紀錄檔案都集中於此。此外,在往後的"DNS Server型態"中會提到的forwarder,其設定也是加在options內。

至於 allow-transfer 選項,它指定 DNS 對於特定 IP 位址的 zone transfer。 舉例來說, 我們允許 IP 位址為192.168.11.7和 IP 範圍192.168.10.0/24(由acl定義名稱為"internals",於之後介紹acl)的主機(可能是我們網域上的一個次要 DNS伺服器)請求 zone transfer。如果您漏了這個選項,位於 Internet 的任何人都可以請求這個轉換。

3. controls :宣告使用ndc程式時控制的方式。

e.g.

controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
					

其中”inet”表示利用TCP/IP Socket來存取Internet資源,它是由指定的”ip_addr”(IP address)和”ip_port”(ip_port)所產生,而此處表示可允許本機(localhost)利用鍵值(rndckey)進行存取,此設定會在"DNS server 安全防護"中有詳細的說明。

4. zone :定義zone,所謂zone是只DNS伺服器管理時的邏輯單位, 例如 *.twnic.net或 *.dns.twnic.net在每個區域中至少須存在一部DNS伺服器。

e.g.

zone "." {  
type hint;
file "named.ca";
};
					

定義“.”,Internet DNS 最上層的位置,而 file "named.ca"指定了其記錄檔(zone file)名稱。記錄檔都存放在 /var/named 這個目錄下面,也就是前面 options 指定的 directory。
e.g.

zone "twnic.com.tw"{
type master;
file "twnic.hosts";
};
					

定義 twnic.com.tw 這個網域,是網域的正解設定,而其型態(type)是master DNS server,指定區域紀錄檔(zone file)為”twnic.hosts”。
e.g.

zone "10.168.192.in-addr.arpa"{
type master;
file "twnic.rev";
};
					

這個部份就和上述的設定是相互配合的,是網域的反解設定。要特別注意的是 in-addr.arpa 是固定的定義格式,不可改變。而在設定反查詢區域的時候﹐您一定要將您的 net ID 部份反過來寫。例如﹕本地網路為192.168.0.0/24 ﹐它的反查詢區域名則是﹕“0.168.192.in-addr.arpa”﹔如果我將 netmask 改為16bit﹐即192.168.0.0/16﹐它的反查詢區域名就會變成﹕“168.192.in-addr.arpa”。

 

 

============

 

 

 

 

 

-------------------

http://my.oschina.net/zhangxc73912/blog/300122

首先来看DNS中常用的2种查询模式

1.递归查询: 

一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机;

2.迭代查询(反复查询): 
一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求;

 

 

DNS域名解析过程  

主机向本地域名服务器的查询采用递归查询:

              主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

本地域名服务器向根域名服务器的查询通常采用迭代查询: 

          本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

 

DNS资源记录

资源记录是用于答复DNS客户端请求的DNS数据库记录,每一个DNS服务器包含了它所管理的DNS命名空间的所有资源记录。资源记录包含和特定主机有关的信息,如IP地址、提供服务的类型等等。常见的资源记录类型有:

起始授权结构(SOA):Start of Authority的意思。这个标志代表着master/slave相关的认证、授权资料。此记录指定区域的起点。它所包含的信息有区域名、区域管理员电子邮件地址,以及指示辅 DNS 服务器如何更新区域数据文件的设置等。 

主机(A:用于将DNS域名映射到计算机使用的IP地址。

别名(CNAME):此记录用于将某个别名指向到某个主机(A)记录上,从而无需为某个需要新名字解析的主机额外创建A记录。这些记录允许使用多个名称指向单个主机,使得某些任务更容易维护。

邮件交换器(MX):用于将DNS域名映射为交换或转发邮件的计算机的名称。它由电子邮件应用程序使用,用以根据在目标地址中使用的DNS域名为电子邮件接收定位邮件服务器。

名称服务器(NS):此记录指定负责此DNS区域的权威名称服务器。

PTR记录:PTR记录也被称为指针记录,PTR记录是A记录的逆向记录,作用是把IP地址解析为域名。

 

以下图为例:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$TTL    604800
@   IN  SOA ns.     test     .com. root.localhost. (
                    2012120501       ; Serial
                  604800     ; Refresh
                   86400     ; Retry
                 2419200     ; Expire
                    1800)        ; minimum 
 
              IN  NS ns.     test     .com.
ns.     test     .com. A   192.168.1.111
station1     A   192.168.1.1
station2     A   192.168.1.2
test     .com.    A   192.168.1.90
www          CNAME       test     .com.

$TTL  604800: 当有外部的DNS服务器对你的DNS的这个领域进行查询时,这记录会放置在对方的DNS服务器内几秒钟的意思。 这里指别人查询我的几录,保存7天。

@:指代zone文件,也就是/etc/named.conf中test.com.

root.localhost.:本来应该是 "root@localhost." 的,不过因为 @ 已经被作为特殊代号 (zone), 所以就用小数点来取代,因此 email 就成为 "root.localhost."

Serial:一个序号,但这个序号可被用来作为 slave 与 master 更新的依据。由于这个序号代表新旧资料,通常建议利用日期来设定,举例来说,上面的数据是在2012/12/05所写的第一次,所以用 2012120501 作为序号代表。以后每次更新增加序列号,重启服务生效(rcdc reload)

Refresh :除了根据 Serial 来判断新旧之外,我们可以利用这个 refresh(更新) 命令 slave 多久进行一次主动更新;

Retry :如果到了 Refresh 的时间,但是 slave 却无法连接到 master 时, 那么在多久之后,slave 会再次的主动尝试与主机联机;这里是1天。

Expire:如果 slave 一直无法与 master 连接上,那么经过多久的时间之后, 则命令 slave 不要再连接 master 了! 也就是说,此时我们假设 master DNS 可能遇到重大问题而无法上线,则等待系统管理员处理完毕后, 再重新来到 slave DNS 重新启动 bind 吧!这里是28天.

Minimun:如果没有TTL,就用这里的时间.

注意: station1后没有"." 它的完整写法是station1.test.com 

         test.com后有"." 说明这是完整结束符

         先要解析域,test.com.  A  192.168.1.90 之后可以指定别名

 

debian dns管理工具

named-checkconf。
named-checkconf 检查 named.conf 文件的句法
named-checkconf [-t directory] [filename]
named-checkzone
named-checkzone 程序检查host 文件的句法和相容性。
named-checkzone [-dq] [-c class] zone [filename]
rndc(Remote Name Daemon Control)
rndc 允许系统管理员控制名称管理器的运行。
如果不使用任何选项来运行rndc 将会有一条形如下列的使用信息:
rndc [-c config] [-s server] [-p port] [-y key] command [command...]
其中command 是下列中的一种:
reload
重新加载配置文件和域(zone)的配置。
reload zone [class [view]]
重新加载一个指定的域。
refresh zone [class [view]]
定期维护一个指定的域。
reconfig
重新加载namd.conf 配置文件和新的域,但不会重新加载已存的域文件,即使
域文件已经被修改了也不会加载。特别是当有大量的域的时候,这比全部的reload
要快很多,因为这避免了对域文件修改时间的检查。
stats
将统计信息写入到统计文件中。
querylog
启动用户请求的日志纪录。请求的日志记路也可以通过在named.conf 中
logging 部分的queries category 和channel 来启动。
dumpdb
把服务器缓存中的信息转储到dump 文件中去。
stop
服务器停机,且将所有最近通过动态更新或IXFRS 作出的修改,都首先存到
了更新域中的host 文件中。
halt
服务器马上停机。但通过动态更新和IXFR 做出的最新修改不会存入host 文
件,但当服务器重新启动的时候会写入到日志文件中去。
trace
增加一个服务器的debug 级别。
trace level
直接设置服务器的debug 等级。
notrace
将服务器的debug 等级设成0。
flush
清除域名服务器缓存中的内容。
status
显示服务器状况

 

posted @ 2014-12-03 15:19  陳聽溪  阅读(593)  评论(0)    收藏  举报