BIND9 的安装与配置.docx
《BIND9 的安装与配置.docx》由会员分享,可在线阅读,更多相关《BIND9 的安装与配置.docx(23页珍藏版)》请在冰豆网上搜索。
BIND9的安装与配置
3.BIND9的安装与配置
3.1bind简介
BIND(BerkeleyInternetNameDomain)是DomainNameSystem(DNS)协议的一个实现,提供了DNS主要功能的开放实现,包括
域名服务器(named)
DNS解析库函数
DNS服务器运行调试所用的工具
是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,
按照ISC的调查报告,BIND是世界上使用最多最广泛的域名服务系统。
不论你的邮件服务器,WEB服务器或者其他的services如何的安全可靠,DNS的故障会给你带来用户根本无法访问这些服务。
BIND,也是我们常说的named,由于多数网络应用程序使用其功能,所以在很多BIND的弱点及时被发现。
主要分为三个版本:
v41998年多数UNIX捆绑的是BIND4,已经被多数厂商抛弃了,除了OpenBSD还在使用。
OpenBSD核心人为BIND8过于复杂和不安全,所以继续使用BIND4。
这样一来BIND8/9的很多优点都不包括在v4中。
v8就是如今使用最多最广的版本,其详细内容可以参阅BIND8+域名服务器安全增强
v9最新版本的BIND,全部重新写过,免费(但是由商业公司资助),也添加了许多新的功能(但是安全上也可能有更多的问题)。
BIND9在2000年十月份推出,现在稳定版本是9.3.2。
3.2软件的相关资源
官方网站:
最新版本:
9.3.2http:
//www.isc.org/sw/bind/bind9.3.php#download
帮助文档:
http:
//www.isc.org/sw/bind/
配置文件样例:
FAQ:
3.3配置环境
环境:
GNU/LinuxDebian/testingLinux2.6.8-2-386
版本:
bind99.3.2-2
测试域名:
mydebian.org
测试ip:
192.168.102.47主域名服务器
192.168.102.48纯缓存域名服务器
192.168.102.49辅助域名服务器
192.168.102.49测试客户机
3.4配置文件说明
安装bind9的命令:
~#aptitudeupdate
~#aptitudeinstallbind9bind9-hostdnsutils
配置文件族:
#ls/etc/bind/-l
total44
-rw-r--r--1rootroot237Jan162006db.0
-rw-r--r--1rootroot271Jan162006db.127
-rw-r--r--1rootroot237Jan162006db.255
-rw-r--r--1rootroot353Jan162006db.empty
-rw-r--r--1rootroot256Jan162006db.local
-rw-r--r--1rootroot1507Jan162006db.root
-rw-r--r--1rootbind1611Jan162006named.conf
-rw-r--r--1rootbind165Jan162006named.conf.local
-rw-r--r--1rootbind672Jan162006named.conf.options
-rw-r-----1bindbind77Aug408:
41rndc.key
-rw-r--r--1rootroot1317Jan162006zones.rfc1918
配置文件说明:
named.conf
设置一般的named参数,指向该服务器使用的域数据库的信息源
named.conf.options
全局选项
db.root
根服务器指向文件,由InternetNIC创建和维护,无需修改,但是需要定期更新
db.local
localhost正向区文件,用于将名字localhost转换为本地回送IP地址(127.0.0.1)
db.127
localhost反向区文件,用于将本地回送IP地址(127.0.0.1)转换为名字localhost
其中,主配置文件/etc/named.conf的配置语句
命令用法
acl定义IP地址的访问控制清单
control定义ndc使用的控制通道
include把其他文件包含到配置文件中
key定义授权的安全密钥
logging定义日志写什么,写到哪
opitons定义全局配置选项和缺省值
server定义远程服务器的特征
trunsted-keys为服务器定义DNSSEC加密密钥
zone定义一个区
默认情况下,内容如下:
include"/etc/bind/named.conf.options";
zone"."{
typehint;
file"/etc/bind/db.root";
};
zone"localhost"{
typemaster;
file"/etc/bind/db.local";
};
zone"127.in-addr.arpa"{
typemaster;
file"/etc/bind/db.127";
};
zone"0.in-addr.arpa"{
typemaster;
file"/etc/bind/db.0";
};
zone"255.in-addr.arpa"{
typemaster;
file"/etc/bind/db.255";
};
include"/etc/bind/named.conf.local";
其中type项的值:
master:
表示定义的是主域名服务器
slave:
表示定义的是辅助域名服务器
hint:
表示是互联网中根域名服务器
在Debian环境中,options语句的配置内容,被移至named.conf.options文件中:
options{
directory"/var/cache/bind";
//Ifthereisafirewallbetweenyouandnameserversyouwant
//totalkto,youmightneedtouncommentthequery-source
//directivebelow.PreviousversionsofBINDalwaysasked
//questionsusingport53,butBIND8.1andlateruseanunprivileged
//portbydefault.
//query-sourceaddress*port53;
//IfyourISPprovidedoneormoreIPaddressesforstable
//nameservers,youprobablywanttousethemasforwarders.
//Uncommentthefollowingblock,andinserttheaddressesreplacing
//theall-0'splaceholder.
//forwarders{
//0.0.0.0;
//};
auth-nxdomainno;#conformtoRFC1035
};
3.5创建主域名服务器
a.首先,在在192.168.102.47机器上安全bind9
b.使用编辑器,比如vi,编辑配置文件/etc/bind/named.conf
加入如下内容
zone"mydebian.org"{
typemaster;//定义此区为主服务器
file"/etc/bind/db.mydebian";指定区资源文件的位置
};
zone"102.168.192.in-addr.arpa"{
typemaster;//定义此区为主服务器
file"/etc/bind/db.192";//指定区资源文件的位置
};
c.创建区资源文件:
创建区资源文件/etc/bind/db.mydebian内容如下
;
;BINDdatafileforlocalloopbackinterface
;
$TTL604800
$ORIGINmydebian.org.
@INSOAmydebian.org.root.mydebian.org.(
2006080401;Serial
604800;Refresh
86400;Retry
2419200;Expire
604800);NegativeCacheTTL
;
INNSns
INMX0mail.mydebian.org.
@INA192.168.102.47
nsINA192.168.102.47
wwwINA192.168.102.47
webserverINCNAMEwww
mailINA192.168.102.47
ftpINA192.168.102.48
ns2INA192.168.102.48
ns3INA192.168.102.49
第一行是TTL设定,生存时间记录字段。
它以秒为单位定义该资源记录中的信息存放在高速缓存中的时间长度。
这里定义为604800秒,也就是1周.
第二行是$ORIGIN设定,说明下面的记录出自何处.请您加倍留意最后的一个小小数点"."
然后,第三行,是一个SOA记录的设定,在这里我们看到一个特殊字符@,它就是ORIGIN的意思,也就是刚刚所定义的$ORIGINmydebian.org.的内容,您可以写成mydebian.org.也可以用@来代替。
假如这个文件前面没有定义$ORIGIN的话,那這个@的值就以named.conf里的zone.
接着SOA后面,指定了这个区域的授权主机和管理者的信箱,这里分别是"mydebian.org."和"root.mydebian.org."。
我们平时使用的信箱通常是“user@host”这样的格式,但因为@在DNS记录中是个保留字符,所以在SOA中就用“.”来代替了@。
目前这个信箱是"root@mydebian.org."。
接下来的SOA设置,是被括在“()”之间的5组数字,主要作为和slave服务器同步DNS资料所使用的资料:
Serial:
其格式通常会是“年月日+修改次序”(但也不一定如此,您自己能够记得就行)。
当slave要进行资料同步的时候,会比较这个号码。
如果发现在这里的号码比它那边的数值“大”,就进行更新,否则忽略。
不过设serial有一个地方您要留意:
不能超过10位数字!
Refresh:
这里是是告诉slave要隔多久要进行资料同步(是否同步要看Serial的比较结果)。
Retry:
如果slave在进行更新失败后,要隔多久再进行重试。
Expire:
这是记录逾期时间:
当slave一直未能成功与master取得联系,那到这里就放弃retry,同时这里的资料也将标识为过期(
expired)。
Minimum:
这是最小默认TTL值,如果您在前面没有用“$TTL”来定义,就会以此值为准。
请注意:
SOA记录中这对“()”符号之第一个“(”括号一定要和SOA写在同一行,而不能用Enter断行到下一行去,而且其左边最好有一个空格键或tab建。
而最后一个“)”括号也不能写在注解符号“;”的右边。
置DNS的RR记录档,其格式要求非常严格,我们丝毫不能掉以轻心。
比方说:
如果句子不是以空格键、Tab键、或注解符号(;)开头,也不在SOA的“()”之内,则表示要定义一个“新记录项(Entry)”;如果句子是以空格键或tab键开始的话,其设置被视为上一个“记录项”的内容。
所以,如果您要为“同一个记录项”定义多个记录设置,而不想重复打字,您倒可以偷懒:
在接着它的后面几行用空白或Tab来缩排就可以了。
NS表明负责mydebian.org.这个域的NameServer是mydebian.org这台主机
MX记录标明发往mydebian.org域的邮件由mail.mydebian.org这台服务器接收
A记录标明了IP地址和域名之间的对应关系
接下来创建该区的反向映射资源文件
/etc/bind/db.192内容如下:
;
;BINDreversedatafileforlocalloopbackinterface
;
$TTL604800
@INSOAmydebian.org.root.mydebian.org.(
2006080401;Serial
604800;Refresh
86400;Retry
2419200;Expire
604800);NegativeCacheTTL
;
@INNSmydebian.org.
47INPTRmail.mydebian.org.
47INPTRwww.mydebian.org.
47INPTRns.mydebian.org.
48INPTRftp.mydebian.org.
48INPTRns2.mydebian.org.
49INPTRns3.mydebian.org.
其中PTR记录用来解析IP地址对应的域名
d.重启DNS服务
/etc/init.d/bind9restart
此时查看系统日志,可了解BIND的启动情况,比如如下输出,则说明引导正常
tonybox:
~#tail/var/log/syslog
Aug1408:
36:
45localhostnamed[2792]:
zone127.in-addr.arpa/IN:
loadedserial1
Aug1408:
36:
45localhostnamed[2792]:
zone102.168.192.in-addr.arpa/IN:
loadedserial2006080801
Aug1408:
36:
45localhostnamed[2792]:
zone255.in-addr.arpa/IN:
loadedserial1
Aug1408:
36:
45localhostnamed[2792]:
zonelocalhost/IN:
loadedserial1
Aug1408:
36:
45localhostnamed[2792]:
zonemydebian.org/IN:
loadedserial2006080801
Aug1408:
36:
45localhostnamed[2792]:
running
Aug1408:
36:
45localhostnamed[2792]:
zonemydebian.org/IN:
sendingnotifies(serial2006080801)
Aug1408:
36:
45localhostnamed[2792]:
zone102.168.192.in-addr.arpa/IN:
sendingnotifies(serial2006080801)
Aug1408:
36:
45localhostnamed[2792]:
client192.168.102.47#1030:
receivednotifyforzone'mydebian.org'
Aug1408:
36:
45localhostnamed[2792]:
client192.168.102.47#1030:
receivednotifyforzone'102.168.192.in-addr.arpa'
e.在客户机上的设置
#cat/etc/resolv.conf
searchmydebian.org
nameserver192.168.102.47
f.测试:
使用nslookup测试
tonybox2:
~#nslookup
>settype=any
>mydebian.org
Server:
192.168.102.47
Address:
192.168.102.47#53
mydebian.org
origin=mydebian.org
mailaddr=root.mydebian.org
serial=2006080801
refresh=604800
retry=86400
expire=2419200
minimum=604800
mydebian.orgnameserver=ns.mydebian.org.
mydebian.orgmailexchanger=0mail.mydebian.org.
Name:
mydebian.org
Address:
192.168.102.47
使用dig测试
tonybox2:
~#dig@192.168.102.47mydebian.org
;<<>>DiG9.3.2<<>>@192.168.102.47mydebian.org
;(1serverfound)
;;globaloptions:
printcmd
;;Gotanswer:
;;->>HEADER<<-opcode:
QUERY,status:
NOERROR,id:
41793
;;flags:
qraardra;QUERY:
1,ANSWER:
1,AUTHORITY:
1,ADDITIONAL:
1
;;QUESTIONSECTION:
;mydebian.org.INA
;;ANSWERSECTION:
mydebian.org.604800INA192.168.102.47
;;AUTHORITYSECTION:
mydebian.org.604800INNSns.mydebian.org.
;;ADDITIONALSECTION:
ns.mydebian.org.604800INA192.168.102.47
;;Querytime:
31msec
;;SERVER:
192.168.102.47#53(192.168.102.47)
;;WHEN:
MonAug1409:
16:
272006
;;MSGSIZErcvd:
79
tonybox2:
~#dig@192.168.102.47ftp.mydebian.org
;<<>>DiG9.3.2<<>>@192.168.102.47ftp.mydebian.org
;(1serverfound)
;;globaloptions:
printcmd
;;Gotanswer:
;;->>HEADER<<-opcode:
QUERY,status:
NOERROR,id:
63890
;;flags:
qraardra;QUERY:
1,ANSWER:
1,AUTHORITY:
1,ADDITIONAL:
1
;;QUESTIONSECTION:
;ftp.mydebian.org.INA
;;ANSWERSECTION:
ftp.mydebian.org.604800INA192.168.102.48
;;AUTHORITYSECTION:
mydebian.org.604800INNSns.mydebian.org.
;;ADDITIONALSECTION:
ns.mydebian.org.604800INA192.168.102.47
;;Querytime:
22msec
;;SERVER:
192.168.102.47#53(192.168.102.47)
;;WHEN:
MonAug1409:
16:
412006
;;MSGSIZErcvd:
83
反向查询
tonybox2:
~#dig@192.168.102.47-x192.168.102.47
;<<>>DiG9.3.2<<>>@192.168.102.47-x192.168.102.47
;(1serverfound)
;;globaloptions:
printcmd
;;Gotanswer:
;;->>HEADER<<-opcode:
QUERY,status:
NOERROR,id:
21885
;;flags:
qraardra;QUERY:
1,ANSWER:
3,AUTHORITY:
1,ADDITIONAL:
1
;;QUESTIONSECTION:
;47.102.168.192.in-addr.arpa.INPTR
;;ANSWERSECTION:
47.102.168.192.in-addr.arpa.604800INPTRwww.mydebian.org.
47.102.168.192.in-addr.arpa.604800INPTRmail.mydebian.org.
47.102.168.192.in-addr.arpa.604800INPTRmydebian.org.
;;AUTHORITYSECTION:
102.168.192.in-addr.arpa.604800INNSmydebian.org.
;;ADDITIONALSECTION:
mydebian.org.604800INA192.168.102.47
;;Querytime:
33msec
;;SERVER:
192.168.1