版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。 http://chenbin.blog.51cto.com/945033/343796
|
DNS
服务的配置。
DNS
的简介:
DNS
和
BIND
的关系:
DNS
是一种网络通信的名称。
BIND
是提供
DNS
服务的软件。
DNS
使用
TCP
和
UDP
的
53
号端口,一般情况下为了查询速度使用的是
UDP53
端口。正向解析就是输入域名解析到
IP
地址,反向解析就是输入
IP
地址解析到域名。正向解析和反向解析一般不需要配套配置,也就是说有一个正向解析不一定非要一个反向解析。事实上,需要正反解析成对的仅有邮件服务器。
DNS
的搜索流程:
当我们在浏览器中输入一个网址时,计算机是怎样查找到一个
IP
地址的呢?首先,计算机会查找缓存,如果缓存没有,那么查找
hosts
文件(
linux
中这个文件对应的是
/etc/hosts
),如果
hosts
文件也没有的话,那么就向顶域查找(根域),如果根域没有就会向该主机提供二级域的
IP
地址,然后主机再向二级域查找,如果二级域还不能查到,二级域就会向主机提供三级域的
IP
地址,然后主机再向三级域查找……,直到查找完成。当查找到后,主机会把该域名和
IP
地址的映射关系存入到缓存中,以便下一次对同一主机名称的查询请求,默认会在缓存中保留
24
小时。
DNS
基本配置:
第一步:安装软件:
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
DNS
服务器的主程序。
[root@localhost ~]# rpm �Civh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
将
bind
目录关在一个目录里面在。
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-utils-9.3.4-10.P1.el5.i386.rpm
DNS
服务的工具包。
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
DNS
缓存。
第二步
:
编辑配置文件
:
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
修改如下内容:
(
一个
IP
,三个
any
。
)
listen-on port 53 { 192.168.100.200; }; //
修改为本机
IP
地址。
allow-query { any; }; //
允许所有人查询。
match-clients { any; }; //
允许任意客房端。
match-destinations { any; }; //
允许任意目标。
编辑区域文件:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
新建一个正向
rhel.com
区域:
zone "rhel.com" IN {
type master; //
设置主从。
file "rhel.com.zone"; //
配置文件的名称。
allow-update { none; };
};
编辑区域配置文件:
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone //
一定要加
-p
这个参数,否则发现不能解析,
-p
是复制后不更改文件的权限。
[root@localhost named]# vi rhel.com.zone
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
IN A 127.0.0.1
IN AAAA ::1
www IN A 192.168.100.200
mail IN A 192.168.1.1
配置文件详解:
$TTL 86400
表示默认的
TTL
值。(单位:秒)
@ IN SOA @ root (
第一个
@
表示区域,第二个
@
表示主机名,
SOA
是主从认证、授权方面的记录,
root
是管理员邮箱,如果管理员邮箱是
[email protected]
,在这里可以写成
root
,如果写全就是
root.rhel.com
,因为
@
在这里表示本机的意思,所以就以
.
代替。
SOA
的五个参数的含义:
42 // serial
,这是一个序列号,主从之间更新的依据。
3H // refresh
,更新时间,从服务器多久主动请求更新一次。
15M // retry
,重试时间,当从服务器更新失败后,多久再更新。
1W // expiry
,失效时间,当从服务器多长时间没有成功更新时,就不再更新。
1D // minimum
,相当于
TTL
值。
这几个参数的大小限制如下:
serial<=2^32=4294967296
refresh>=retry*2
refresh+retry<expiry
expiry>=retry*10
expiry>=7 day
IN NS @ //NS
记录,后面跟域名服务器的名称。
@
代表本机。前面的
@
可以省略。
www IN A 192.168.100.200 //
主机记录。
新建一个反向
rhel.com
区域:
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "100.168.192.in-addr.arpa" IN {
type master;
file "in-addr.rhel.com.zone";
allow-update { none; };
};
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p named.local in-addr.rhel.com.zone
[root@localhost named]# vi in-addr.rhel.com.zone
$TTL 86400
@ IN SOA localhost. root.localhost. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS localhost.
200 IN PTR www.rhel.com.
1 IN PTR mail.rhel.com
这里和正向区域的配置基本一样,只是多了一条
PTR
记录。
PTR
的格式:前面是对应的
IP
地址,后面是主机名。
第三步:配置完成,重启服务。
[root@localhost named]# service named restart
第四步:测试:
在
windows
下:
D:\Users\chenbin>nslookup
默认服务器
: UnKnown
Address: 202.43.150.244
> server 192.168.100.200 //
更改
DNS
服务器
DNS request timed out.
timeout was 2 seconds.
默认服务器
: [192.168.100.200]
Address: 192.168.100.200
> www.rhel.com
服务器
: [192.168.100.200]
Address: 192.168.100.200
名称
: www.rhel.com
Address: 192.168.100.200
> mail.rhel.com
服务器
: [192.168.100.200]
Address: 192.168.100.200
名称
: mail.rhel.com
Address: 192.168.1.1
已经成功解析。或者这样测试:
nslookup mail.rhel.com
。但这样不能指定
DNS
服务器的地址(或者是我不知道而已)。
清除
DNS
缓存:
D:\Users\chenbin>ipconfig /flushdns
Windows IP
配置
已成功刷新
DNS
解析缓存。
在
linux
下:
首先,设置
DNS
服务器地址:
[root@linux3 ~]# vi /etc/resolv.conf
nameserver 192.168.100.200 //
添加
DNS SERVER
地址。
使用
nslookup
测试:
[root@linux3 ~]# nslookup
> mail.rhel.com
Server: 192.168.100.200
Address: 192.168.100.200#53
Name: mail.rhel.com
Address: 192.168.1.1
同样也可以使用
server
命令更改
dns
地址。
> server 192.168.100.1
Default server: 192.168.100.1
Address: 192.168.100.1#53
使用
dig
测试:
[root@linux3 ~]# dig mail.rhel.com
; <<>> DiG 9.3.4-P1 <<>> mail.rhel.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27292
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; QUESTION SECTION:
;mail.rhel.com. IN A
;; ANSWER SECTION:
mail.rhel.com. 86400 IN A 192.168.1.1
;; AUTHORITY SECTION:
rhel.com. 86400 IN NS rhel.com.
;; ADDITIONAL SECTION:
rhel.com. 86400 IN A 127.0.0.1
rhel.com. 86400 IN AAAA ::1
;; Query time: 16 msec
;; SERVER: 192.168.100.200#53(192.168.100.200)
;; WHEN: Wed Apr 7 07:09:28 2010
;; MSG SIZE rcvd: 105
使用
host
命令:
[root@linux3 ~]# host mail.rhel.com
mail.rhel.com has address 192.168.1.1
[root@linux3 ~]# host 192.168.100.200
200.100.168.192.in-addr.arpa domain name pointer www.rhel.com.
DNS
的主辅服务器配置:
为了不间断的提供
DNS
查询,我们需要两台以上的
DNS
服务器,如果有多个
DNS
服务器,一般只要一台
Master DNS
,其他的都为
Slave DNS
服务器,
Slave DNS
没有数据库,它的数据库是由
Master DNS
提供。主、辅服务器之间必需能够相互传送区域文件信息。
第一步:配置主
DNS
服务器。
因为刚才已经配置好了主
DNS
服务器,这里就省略。
第二步:配置辅
DNS
服务器。
安装软件:
[root@linux3 ~]# cd /misc/cd/Server/
[root@linux3 Server]# rpm -ivh bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@linux3 Server]# rpm -ivh bind-chroot-9.3.4-10.P1.el5.i386.rpm
修改配置文件:
[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
listen-on port 53 { 192.168.100.201; }; //
修改为本机地址。监听这个地址的
53
端口。
allow-query { any; };
match-clients { any; };
match-destinations { any; };
新建区域:
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com" IN {
type Slave; //
设为辅服务器。
file "slaves/rhel.com.zone"; //
别忘了前面的
slaves
。还有后面的
s
。
Masters {192.168.100.200;}; //
指定主服务器。
allow-update { none; };
};
zone "100.168.192.in-addr.arpa" IN {
type Slave;
file "slaves/in-addr.rhel.com.zone";
Masters {192.168.100.200;};
allow-update { none; };
};
因为辅服务器的区域配置文件是从主服务器上复制过来的,所以这里就不需要区域配置文件了。
重启服务:
[root@linux3 named]# service named restart
测试:
(
以
windows
为例
)
D:\Users\chenbin>nslookup
默认服务器
: www.rhel.com
Address: 192.168.100.200
> server 192.168.100.201
默认服务器
: [192.168.100.201]
Address: 192.168.100.201
> mail.rhel.com
服务器
: [192.168.100.201]
Address: 192.168.100.201
名称
: mail.rhel.com
Address: 192.168.1.1
DNS
转发服务器的配置:
使用
forward
和
forwarders
设置转发。
forward
用于指定转发方式,
forwarders
用于指定要转发到的服务器。转发方式有两种,一种是
forward first,
这是默认转发方式,当有查询请求时,首先转发到
forwarders
设置的转发器查询,如果查询不到,则再到本地服务器上查询;另一种是
forward only,
当有查询请求时,只转发到
forwarders
设置的转发器查询,查询不到也不在本地查询。
forwarders
后面跟的是要转发到的服务器地址,如有多个地址,则用分号隔开。
在所有区域上转发:
[root@linux3 named]# vi /var/named/chroot/etc/named.caching-nameserver.conf
在选项里添加:
options {
listen-on port 53 { 192.168.100.201; };
listen-on-v6 port 53 { ::1; };
forwarders {192.168.100.200;};
//
如有多个地址用分号隔开。
重启服务后测试:
> mail.rhel.com
服务器
: [192.168.100.201]
Address: 192.168.100.201
非权威应答
:
//
注意这里,因为不是本机查找到的所以会有这个非权威应答。
名称
: mail.rhel.com
Address: 192.168.1.1
在单个区域转发:
新建一个转发区域:
[root@linux3 named]# vi /var/named/chroot/etc/named.rfc1912.zones
zone "rhel.com"IN{
type forward;
forwarders {192.168.100.200;};
};
重启服务后测试。
DNS
的子域授权配置:
配置主服务器。
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@localhost ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@localhost ~]# vi /var/named/chroot/etc/named.rfc1912.zones
[root@localhost ~]# cd /var/named/chroot/var/named/
[root@localhost named]# cp -p localhost.zone rhel.com.zone
[root@localhost named]# vi rhel.com.zone
添加如下几行:
xyz IN NS xyz.rhel.com //xyz.rhel.com
区域的解析由
xyz.rhel.com
主机来完成。
.
xyz IN A 192.168.100.201 //
添加主机
IP
地址。
www IN A 192.168.100.200
mail IN A 192.168.100.1
子域的配置:
[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/bind-chroot-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# rpm -ivh /misc/cd/Server/caching-nameserver-9.3.4-10.P1.el5.i386.rpm
[root@linux3 ~]# vi /var/named/chroot/etc/named.caching-nameserver.conf
[root@linux3 ~]# vi /var/named/chroot/etc/named.rfc1912.zones
[root@linux3 ~]# cd /var/named/chroot/var/named/
[root@linux3 named]# cp -p localhost.zone xyz.rhel.com.zone
[root@linux3 named]# vi xyz.rhel.com.zone
www IN A 192.168.100.201
mail IN A 192.168.10.10
添加两条
A
记录。
重启服务后测试。
DNS
常用命令:
ipconfig /flushdns //
在
windows
系统下清除
DNS
缓存。
rndc flush //
在
liunx
下清除
DNS
缓存。
nslookup //
可用于在
windowst
和
linux
下测试
DNS
。
dig //
用于在
linux
下测试
DNS
。
host //
用于在
linux
下测试
DNS
。
service named restart //
重启
DNS
服务。
service named status //
查看
DNS
状态。
netstat �Cln //
查看
DNS
的端口状态。
DNS
排错:
一、
如果所有都做正确后,发现不能解析,看是不是防火墙的问题,把防火墙关闭再试试,曾经因为这个差点放弃了才想起来。
二、
从服务器的区域文件是放在
/var/named/chroot/var/named/slaves
目录下的,所以在新建区域时,区域文件前要加个
slaves
,不要忘了后面的
s
。
三、
要注意写主机名的时候别忘了后面的
.
了,这很重要。
四、
如果遇到不能解析时,也许是
DNS
缓存在做怪。
五、
如果遇到不能解析时,也许是复制区域配置文件时忘了加
-p
参数了,引起权限问题。
|