slackware 13.1系统自带的bind版本为bind-9.4.3-P4,如果是在生产环境中搭建DNS服务器,为了安全考虑,强烈建议进行软件包升级.目前在slackware 13.1上最新的稳定版本是bind-9.4.3_P5.
更新软件包列表:
root@slackware:~# slackpkg update
升级bind:
root@slackware:~# slackpkg upgrade bind
好了,等待升级安装结后,你将得到最新版本的bind. 如果你在安装slackware 13.1的时候,并没有选择安装bind,你可以使用下面命令进行安装.
root@slackware:~# slackpkg install bind
接下来才是本篇文章的核心部分:Chroot 环境
,创建用户和组:
root@slackware:~# groupadd named
root@slackware:~# useradd -g named -d /var/named -s /bin/false named
第二,配置你的chroot目录.
在此假定你使用“/chroot/named”目录.
root@slackware:~# mkdir -p /chroot/named/{dev,etc,var}
添加bind需要访问的一些设备:
root@slackware:~# mknod /chroot/named/dev/null c 1 3
root@slackware:~# mknod /chroot/named/dev/random c 1 8
root@slackware:~# mknod /chroot/named/dev/zero c 1 5
root@slackware:~# chmod a w /chroot/named/dev/*
你还需要拷贝/etc/localtime 和 /etc/named.conf 到chroot目录:
root@slackware:~# cp /etc/localtime /chroot/named/etc
root@slackware:~# cp /etc/named.conf /chroot/named/etc
然后开始配置var目录:
root@slackware:~# mkdir -p /chroot/named/var/{log,run,named}
root@slackware:~# mkdir /chroot/named/var/run/named
root@slackware:~# chown named.named /chroot/named/var/run/named
root@slackware:~# chown named.named /chroot/named/var/{named,log}
假定你已经有一个可以工作的DNS服务器,现在拷贝你的zone文件到chroot目录:
root@slackware:~# cp /var/named/caching-example/* /chroot/named/var/named
关于使用bind的日志功能:
你可以加入以下内容到你的named.conf 配置文件中(语法及意义就不再叙述,感兴趣的朋友可以参考named. conf的联机帮助文档)
logging {
channel "bind_log" {
file "/var/log/named.log" versions 5 size 100k;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
category default {
bind_log;
};
};
创建配置rndc.conf:
root@slackware:~# rndc-confgen -r /dev/urandom > /chroot/named/etc/rndc.conf
把rndc.conf中
key "rndc-key" {
algorithm hmac-md5;
secret "U4jzup9pqIelfs7hDyl5zw==";
};
上述部分写进/chroot/named/etc/named.conf中.
<注>:在你生成的rndc.conf中上述 secret "……" 部分会不同,别忘记去掉每行最前面的注释符号“#”.
然后在/etc目录中生成一个到/chroot/named/etc/rndc.conf符号连接:
root@slackware:~# ln -s /chroot/named/etc/rndc.conf /etc
倒数第二步,修改bind的启动脚本/etc/rc.d/rc.bind:
找到下面以黄色背景显色的部分,
bind_start() {
if [ -x /usr/sbin/named ]; then
echo "Starting BIND: /usr/sbin/named"
/usr/sbin/named
sleep 1
fi
……
}
修改为 “/usr/sbin/named -u named -t /chroot/named -c /etc/named.conf”
一步,用脚本启动bind服务:
root@slackware:~# /etc/rc.d/rc.bind start
并检查bind是不是以chroot的方式运行:
root@slackwar |