分类:
2007-06-20 23:36:16
本人接触DNS有4年多的时间了,也许以后就不弄DNS了,赶紧写个总结吧,因为我们维护的DNS还是相当庞大的,遇到过一些问题,一并写下来,希望对大家有些帮助。
安装及升级都很简单,网上的文章很多,我就随便copy一个了^_^, 重点是在第三部分(维护经验)。
安装
1.BIND的安装
1.1.用root用户安装
#su -
1.2.将准备安装的BIND(例如:bind-9.2.3cn2.tar.gz)ftp到服务器上
1.3.BIND的安装路径
采用默认安装路径:/usr/local/
1.4.BIND的安装过程
$gunzip -xvf bind-9.2.3cn2.tar.gz
$tar -xvf bind-9.2.3cn2.tar
$cd bind-9.2.3cn2
$./configure
$make
$su -
#PATH=$PATH:/usr/ccs/bin;export PATH
#make install
1.5.启动DNS服务
#/usr/local/sbin/named
2).BIND的升级
2.1.用root用户安装
#su -
2.2.将准备安装的BIND(例如:bind-9.2.1.tar)ftp到服务器上
从ftp.cnnic.net.cn下载BIND软件
2.3. 解包
#gzcat bind-9.2.3cn2.tar.gz |tar xvf -
2.4.编译
$cd bind-9.2.3cn2
$./configure
$make
2.5. 安装
$ su -
设置路径
# PATH=$PATH:/usr/ccs/bin; export PATH
备份/usr/local/sbin/named和/usr/local/sbin/named-xfer
# mv /usr/local/sbin/named /usr/local/sbin/named_YYYYMMDD
# mv /usr/local/sbin/named-xfer /usr/local/sbin/named-xfer_YYYYMMDD
# make install
2.6.重启named
# kill -9 `cat /usr/local/etc/named.pid`
# /usr/local/sbin/named
2.7.测试
$ dig @hostname com.cn soa
一点经验
1) named的加载及更新
修改named.conf或zonefile文件时
修改步骤:
1)一般都需要加大序列号
2)修改完毕后,记得用/usr/local/sbin/下bind自带的checkconf和checkzone检查语法是否正确!
/usr/local/sbin/checkconf ./name.conf
/usr/local/sbin/checkzone sina.com.cn ./sina.com.cn.zone
3)就必须重起named进程来重新加载配置信息,使刚才的修改生效。
在这里我要特别强调一下加载的意义。
系统启动DNS 的named进程时,系统都会把配置信息(主要就是named.conf和zonefile文件)做一个检查,正确的话就把配置信息写入DNS服务器的内存里,供用户进行查询。所以说用户查询得到的信息是放在内存里的信息,而不一定是named.conf里定义的zonefile信息。
可能有点复杂了,举个例子吧。
一台DNS的named.conf里写了abc.com这个域的zonefile文件是/etc/zone/abc.zone里。
某日9点,需要修改一下abc.zone,此时abc.zone的soa号2006070801,
dig @localhsot abc.com soa号也是2006070801. 修改完后soa号变为2006110801,操作员没有检查重起了一下named就不管它了,以为万事大吉了!
后来用户询问为啥修改的信息没成功,操作员只去检查zonefile,改修改的都改了,认为没有问题。其实他错得很厉害,修改的信息有问题(即文件abc.zone),系统没有加载到内存中,所以该用户的修改没有成功,虽然看起来abc.zone的soa号已修改。
这时候排错的步骤:
1) dig @localhsot abc.com soa 发现soa号还是以前的,说明修改有问题。
2) 检查文件
/usr/local/sbin/checkconf ./name.conf
/usr/local/sbin/checkzone abc.com ./abc.zone
3)checkzone会提示哪一行有问题,改正过来,再次检查,没问题后重起named。
4) 过几分钟(named的加载需要一点时间,取决于zonefile的大小),用dig命令检查加载是否成功。
2) named启动的排错
检查named启动的错误,可用
/usr/local/sbin/named –d 5 系统会在当前目录生成named.run文件,
grep err named.run找出报错信息,加以处理。记得找到后杀掉named,删掉named.run, 正常启动named(/usr/local/sbin/named),因为named.run占用空间比较大。
3)named.conf里的一些比较重要的参数
also_notify: 一般情况notify是发给zonefile中包含在NS记录中的服务器。没有在NS记录的服务器要发notify就必须配置also_notify。
genary log 会记载加载信息
Xfer_out.log 作为主DNS下发dns记录的日志。
Xfer_in.log 记载从主更新的zonefile信息, 传输是否成功都会记载, 若不成功,可删掉辅的zonefile再重起named一次.
4)排错小经验
1)在本机dig无结果
看named是否在,port是否是默认端口(在named.conf里的listen里)
2) 主辅更新不成功的原因:
辅不在主定义的allow_transfer里,网络不通,其他原因要察看辅DNS的Xfer_in.log。