去设置我们的zone:
vim named.rfc1912.zones
在最后添加:
zone "example.com" IN {(zone的名称)
type master; (什么类型)
file "example.com.zone"; (数据库文件在哪)
allow-update { none; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "example.com.local";
allow-update { none; };
};
再去配置我们的数据库文件:
cd/var/named/chroot/var/named
cp -p named.localhost example.com.zone
cp -p named.loopback example.com.local
切记,不要将这两个文件复制到跟我们的named.conf在同一个目录,不然重启服务的时候会以下出错(实验在这里浪费好多时间):
Error in named configuration:
zone localhost.localdomain/IN: loaded serial 0
zone localhost/IN: loaded serial 0
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: loaded serial 0
zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0
zone 0.in-addr.arpa/IN: loaded serial 0
zone example.com/IN: loading from master file example.com.zone failed: file not found
zone example.com/IN: not loaded due to errors.
_default/example.com/IN: file not found
zone 0.168.192.in-addr.arpa/IN: loading from master file example.com.local failed: file not found
zone 0.168.192.in-addr.arpa/IN: not loaded due to errors.
_default/0.168.192.in-addr.arpa/IN: file not found
由于我是用物理机做的DNS去给虚拟机用,方便用虚拟机做实验嘛=。=所以下面这两个文件是我的配置:
vim example.com.zone
$TTL 1D
@ IN SOA silence.example.com. root.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS silence.example.com.
silence A 192.168.0.100
A 192.168.0.100
vm1 A 192.168.0.201
vm2 A 192.168.0.202
vm3 A 192.168.0.203
vm4 A 192.168.0.204
vm5 A 192.168.0.205
vm6 A 192.168.0.206
vm7 A 192.168.0.207
vm8 A 192.168.0.208
vim example.com.local
$TTL 1D
@ IN SOA silence.example.com. root.example.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS silence.example.com.
100 PTR example.com.
100 PTR silence.example.com.
201 PTR vm1.example.com.
202 PTR vm2.example.com.
203 PTR vm3.example.com.
204 PTR vm4.example.com.
205 PTR vm5.example.com.
206 PTR vm6.example.com.
207 PTR vm7.example.com.
208 PTR vm8.example.com.
下面来说说这两个文件的内容:
@ :代表zone的意思,在example.com,zone中代表example.com在example.com.local中代表0.168.192.in-addr.arpa
.:这个点很重要,代表一个完整的主机名而不是hostname,如果没有.则vm1.example.com代表vm1.example.com.example.com
A :Address 域名向ip地址转换的记录;
PTR:Printer ip地址向域名转换的记录;
NS:代表域内的dns服务器;
MX:代表域内的邮件服务器;
CNAME:域名的别名;
SOA:start of authority用于标示域内主DNS服务器。
Serial﹕其格式通常会是“年月日+修改次序”(但也不一定如此﹐您自己能够记得就行)。当 slave 要进行数据同步的时候﹐
会比较这个号码。如果发现在这里的号码比它那的值“大”﹐ 就进行更新﹐否则忽略。不过设 serial 有一个地方您要留意﹕不能超过 10 位数字﹗
Refresh﹕这里是是告诉 slave 要隔多久要进行数据同步(是否同步要看 Serial 的比较结果)。
Retry﹕如果 slave 在进行更新失败后﹐要隔多久再进行重试。
Expire﹕这是记录逾期时间﹕当 slave 一直未能成功与 master 取得联络﹐那到这里就放弃 retry﹐同时这里的数据也将标识为过期( expired )。
Minimum﹕这是最小预设 TTL 值﹐如果您在前面没有用“$TTL”来定义﹐就会以此值为准。
OK,文件配置来之后,重启服务,开启客户机进行测试吧~(注意更改你的测试机的DNS)
下面是我的测试情况:
[root@vm3 named]# dig vm1.example.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> vm1.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;vm1.example.com.INA
;; ANSWER SECTION:
vm1.example.com.86400INA192.168.0.201
;; AUTHORITY SECTION:
example.com.86400INNSsilence.example.com.
;; ADDITIONAL SECTION:
silence.example.com.86400INA192.168.0.100
;; Query time: 2 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Oct 11 19:21:45 2014
;; MSG SIZE rcvd: 87
[root@vm3 named]# dig -x 192.168.0.204
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 192.168.0.204
;; global options: +cmd
;; Got answer:
;; ->>HEADER<
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;204.0.168.192.in-addr.arpa.INPTR
;; ANSWER SECTION:
204.0.168.192.in-addr.arpa. 86400 INPTRvm4.example.com.
;; AUTHORITY SECTION:
0.168.192.in-addr.arpa.86400INNSsilence.example.com.
;; ADDITIONAL SECTION:
silence.example.com.86400INA192.168.0.100
;; Query time: 1 msec
;; SERVER: 192.168.0.100#53(192.168.0.100)
;; WHEN: Sat Oct 11 19:23:24 2014
;; MSG SIZE rcvd: 111
再来折腾下主从复制与文件同步吧~~
去主DNS(我的物理机)上进行配置:
cd /var/named/chroot/etc
对于name.conf这个文件暂时还不需要配置
vim name.rfc1912zones
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
allow-transfer { 192.168.0.203; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "example.com.local";
allow-update { none; };
allow-transfer { 192.168.0.203; };
};
在原来的每个域中加来一条参数而已!
现在需要一台虚拟机作为我的辅助DNS,马上开一台虚拟机 IP:192.168.0.203(DNS设置为自身)
在虚拟机中安装好bind bind-chroot
yum install bind bind-chroot -y
/etc/init.d/named start
cd /var/named/chroot/etc
vim named.conf
整个文件大致被我糟蹋成这个样子:
options {
// listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
// allow-query { any; };
// recursion yes;
// dnssec-enable yes;
// dnssec-validation yes;
// dnssec-lookaside auto;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
recursion yes;
include "/etc/named.rfc1912.zones";
zone "." IN {
type hint;
file "named.ca";
};
zone "example.com" IN {
type slave;
masters { 192.168.0.100; };
file "slaves/example.com.zone"; (从主DNS复制过来的数据保存在/var/named/chroot/var/named/slaves)
};
zone "0.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.0.100; };
file "slaves/example.com.local";
};
};
include "/etc/named.root.key";
在这个文件中,由于我们用到view来声明,所以所有的域都应该在view中包含,不然重启服务会出现以下错误:
Error in named configuration:
/etc/named.conf:37: when using 'view' statements, all zones must be in views
[FAILED]
OK,重启我的辅助DNS。看下我们要的两个数据文件复制过来了吗?文件同步:
在主DNS中配置
cd /var/named/chroot/etc
vim named.rfc1912.zones
修改我们的zone
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
allow-transfer { 192.168.0.203; };
also-notify { 192.168.0.203; };
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "example.com.local";
allow-update { none; };
allow-transfer { 192.168.0.203; };
also-notify { 192.168.0.203; };
};
在原来的配置加上also-notify参数!
然后就是我们两个数据库文件的修改:
vim /var/named/chroot/var/named/example.com.zone
$TTL 1D
@ IN SOA silence.example.com. root.example.com. (
2014101204 ; serial(d. admas)
2H ; refresh
20M ; retry
1W ; expire
1D) ; minimum
NS silence.example.com.
silence A 192.168.0.100
A 192.168.0.100
vm1 A 192.168.0.201
vm2 A 192.168.0.202
vm3 A 192.168.0.203
vm4 A 192.168.0.204
vm5 A 192.168.0.205
vm6 A 192.168.0.206
vm7 A 192.168.0.207
vm8 A 192.168.0.208
依样画葫芦,example.com.local会修改了吗?
在每次修改我们的数据库文件时我们一定要记住修改serial的值,然后reload服务,查看下辅助DNS的文件数据有没有同步吧~~~