虽然我所用的Red Hat AS3 中有rpm包,但是为了方便其他操作系统的朋友,我们还是从源代码包方式安装。首先从ISC公司的主页(http://www.isc.org/products/BIND/)下Bind 9 软件包。
wget ftp://ftp.isc.org/isc/bind9/9.2.3/bind-9.2.3.tar.gz
(我没下最新的,下的是稳定版,您可以根据自己的需要选取)
接着开始解压缩(为描述简单,以下操作如无特殊声明,都是以root权限进行)
tar vzxf bind-9.2.3.tar.gz
卸载Red Hat 中原有的Bind,一共有三个rpm包
rpm -e bind bind-utils caching-nameserver
进入该目录开始编译安装
./configure --prefix=/usr/local --disable-ipv6 --disable-threads
#因为ipv6和线程方式我用不到就去掉了,把Bind 9安装到/usr/local下
make;make install
到此Bind 9已经安装完成了,普通的 DNS Server 到此就安装结束了,而对我们的chroot 而言才刚开始呢。
2、构建chroot 目录环境
a.创建Bind 工作目录/chroot/named及下属工作目录
rm -rf /chroot/named #删除原来的旧目录,之所以加这句是我写shell的时候调试方便
mkdir -p /chroot/named
cd /chroot/named
mkdir dev (虚拟/dev)
mkdir etc (虚拟/etc)
mkdir logs (存放日志)
mkdir -p var/run (将来会在这下面放一个named.pid文件)
b.建立Bind的组和用户named
groupadd named
useradd -g named -d /chroot/named -s /bin/true named
pASswd -l named #-l ,Lock,表示锁定用户
c.创建虚拟设备(dev),日志记录的时候有的选项可能用到它们。在默认情况下,是使用/dev目录下的文件,但是由于我们需要把DNS限制到一个目录,所以必须完全把/dev下用到的文件(或者说设备)模拟过来才可以。
ls -lL /dev/zero /dev/null /dev/random
看到类似
crw-rw-rw- 1 root root 1, 3 2003-09-15 /dev/null
crw-r--r-- 1 root root 1, 8 2003-09-15 /dev/random
crw-rw-rw- 1 root root 1, 5 2003-09-15 /dev/zero
这样的,将其中的1,3这样的数字记录下来,这表示主设备号和次设备号(一般来说主设备号用来区分设备的种类;次设备号则是为了作唯一性区分,标明不同属性――注意,在unix系统中是把设备也当作文件来对待的),在redhat 9下,ls加不加-L参数都无所谓,但是在Solaris下则一定要加上才可以显示。
mknod dev/null c 1 3
mknod dev/zero c 1 5
mknod dev/random c 1 8
d.复制时钟文件到我们chroot的etc下,Linux 的时钟设置文件为:/etc/localtime ,实际上这个文件是 /usr/share/zoneinfo 目录下对应文件的符号连接。(假设我们所处的地区位于上海,那么只要运行以下的命令就可以设置时区了。 ln -sf /usr/share/zoneinfo/ASia/Shanghai /etc/localtime;注意在天缘用的solaris 2.6中并没有此文件,而是该用/usr/share/lib/zoneinfo/GB)
cp /etc/localtime etc/
3、创建和设置BIND 9配置文件
默认情形下,bind以/etc/named.conf文件为配置文件。但由于我们这里是要做chroot的DNS,因此需要把named.conf放到/chroot/named/conf下去,然后再做一个符号连接到/etc/named.conf。首先创建并编辑named.conf文件(由于介绍DNS的文章大多对named.conf的配置解释得相当详细,因此我就不一句句解释了,大家结合注释,参考其他文章看看,很容易理解的)
vi /chroot/named/etc/named.conf,输入以下内容(由于每个人的配置都不同,所以天缘在这里只列出一个做cache only的DNS的设置) //隐藏真实版本号,我这里写个4.0作刻意误导 logging { //日志记录 channel SEC_log { channel STAT_log { category cname { null; }; //根解析 // localhost 解析 // localhost 反向解析 |
之后进行符号连接到/etc目录下
ln -s /chroot/named/etc/named.conf /etc/named.conf
好了,接下来,当然就是设置named.root、named.local、named.127.0.0三个文件了,注意,这三个文件的真实位置是在/chroot/named/conf下哦。
新闻热点
疑难解答