由 silver810212 在 06-21-2004 15:31 发表:
Linux DNS and BIND 服务器
Linux DNS and BIND 服务器
LinuxAid.com.cn 01-02-19 23:17 12374p LinuxAid工程师编译
--------------------------------------------------------------------------------
概述
注意事项
软件包的来源
安装软件包需要注意的问题
编译和安装
配置和优化
编译和优化
清除不必要的文件
配置
Caching-only域名服务器
为简单的“caching”服务器配置“/etc/named.conf”文件
为简单的“caching”服务器配置“/var/named/db.127.0.0”文件
为简单的“caching”服务器配置“/var/named/db.cache”文件
主域名服务器
为主域名服务器配置“/etc/named.conf”文件
为主域名服务器和辅域名服务器配置“/var/named/db.127.0.0”文件
为主域名服务器和辅域名服务器配置“/var/named/db.208.164.186”文件
为主域名服务器配置“/var/named/db.openarch”文件
为主域名服务器和辅域名服务器配置“/var/named/db.cache”文件
二级域名服务器(辅域名服务器)
为二级域名服务器配置“/etc/named.conf”文件
为所有名称服务器配置“/etc/rc.d/init.d/named”脚本文件
加强BIND/DNS安全性
限制BIND运行于“虚”根(chroot)环境下。
清理工作
区带(Zone)转移
允许查询
转发限制
参考文献
DNS管理工具
DNS用户工具
安装到系统中的文件
概述
安装完所有必要的系统安全软件之后,下一步要考虑如何提高和调整服务器的网络性能。DNS对IP网络通讯来说是最重要的网络服务,因为所有的Linux客户机(client)至少都要配置成具有缓冲(caching)能力。为本地的客户端计算机建立缓冲服务可以降低主域名服务器(primary server)的负荷。一台“caching only”的域名服务器可以进行域名解析并把结果记录下来下次还要用到这个域名的时候就不要花很长时间解析了。这可以在很大程度上缩短下次域名解析的时间。
因为安全方面的问题,保证在企业内部网的主机和企业外部的主机之间不存在DNS这一点十分重要。如果只用IP地址连接企业外部的主机,当然就更安全了。
在我们的配置和安装中我们以非“root”用户在“chrooted”环境中运行BIND/DNS。我们提供了三种不同的配置:1)简单的“caching only”域名服务器(客户端);2)辅域名服务器(secondary server);3)主域名服务器(primary server)。
配置简单的“caching only”域名服务的服务器是不会用来做主/辅域名服务器的,只有主域名服务器或辅域名服务器才需要配置主域名或辅域名服务。通常情况下只有一台服务器作为主域名服务器,另一台服务器作为辅域名服务器,其它的服务器都作为简单的“caching only”客户端域名服务器。
上面是我们在这本书中介绍的DNS的配置的图示。我们在不同的服务器上使用了不同的设置(caching only DNS、主DNS和辅DNS)。在实际情况中有很多种可能存在,所以要根据需要和网络结构来配置。
注意事项
下面所有的命令都是Unix兼容的命令。
源路径都为“/var/tmp”(当然在实际情况中也可以用其它路径)。
安装在RedHat Linux 6.1下测试通过。
要用“root”用户进行安装。
bind的版本号是8.2.2-patchlevel5。
软件包的来源
bind主页: http://www.isc.org/。
下载:bind-contrib.tar.gz, bind-doc.tar.gz, bind-src.tar.gz。
安装软件包需要注意的问题
最好在编译前和编译后都做一张系统中所有文件的列表,然后用“diff”命令去比较它们,找出其中的差别并知道到底把软件安装在哪里。只要简单地在编译之前运行一下命令“find /* >dns1”,在编译和安装完软件之后运行命令“find /* > dns2”,最后用命令“diff dns1 dns2 > dns”找出变化。
编译和安装
把软件包(tar.gz)解压缩:
[root@deep /]# mkdir /var/tmp/bind
[root@deep /]# cp bind-contrib.tar.gz /var/tmp/bind/
[root@deep /]# cp bind-doc.tar.gz /var/tmp/bind/
[root@deep /]# cp bind-src.tar.gz /var/tmp/bind/
我们创建了一个名为“bind”的目录,用来处理tar文档。
转到新的“bind”目录(cd /var/tmp/bind),解压tar文件:
[root@deep bind]# tar xzpf bind-contrib.tar.gz
[root@deep bind]# tar xzpf bind-doc.tar.gz
[root@deep bind]# tar xzpf bind-src.tar.gz
配置和优化
编辑“Makefile.set”文件(vi /src/port/linux/Makefile.set),并加入:
'CC=egcs -D_GNU_SOURCE'
'CDEBUG=-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-
frame-pointer -fno-exceptions’
'DESTBIN=/usr/bin'
'DESTSBIN=/usr/sbin'
'DESTEXEC=/usr/sbin'
'DESTMAN=/usr/man'
'DESTHELP=/usr/lib'
'DESTETC=/etc'
'DESTRUN=/var/run'
'DESTLIB=/usr/lib/bind/lib'
'DESTINC=/usr/lib/bind/include'
'LEX=flex -8 -I'
'YACC=yacc -d'
'SYSLIBS=-lfl'
'INSTALL=install'
'MANDIR=man'
'MANROFF=cat'
'CATEXT=$$N'
'PS=ps -p'
'AR=ar crus'
'RANLIB=:'
第一行说明我们用的gcc编译器的名字是egcs,第二行是优化参数。“DESTLIB=”这一行说明bind所需的库函数目录,“DESTING=”说明bind的“include”目录在哪里。
编译和优化
输入下面的命令:
[root@deep bind]# make -C src
[root@deep bind]# make clean all -C src SUBDIRS=../doc/man
[root@deep bind]# make install -C src
[root@deep bind]# make install -C src SUBDIRS=../doc/man
“make”命令把所有的源文件都编译成二进制文件,接着“make install”把二进制文件和相关的配置文件安装到相应的目录中。
[root@deep bind]# strip /usr/bin/addr
[root@deep bind]# strip /usr/bin/dig
[root@deep bind]# strip /usr/bin/dnsquery
[root@deep bind]# strip /usr/bin/host
[root@deep bind]# strip /usr/bin/nslookup
[root@deep bind]# strip /usr/bin/nsupdate
[root@deep bind]# strip /usr/bin/mkservdb
[root@deep bind]# strip /usr/sbin/named
[root@deep bind]# strip /usr/sbin/named-xfer
[root@deep bind]# strip /usr/sbin/ndc
[root@deep bind]# strip /usr/sbin/dnskeygen
[root@deep bind]# strip /usr/sbin/irpd
[root@deep bind]# mkdir /var/named
“strip”命令去掉目标文件中的所有符号信息。这样二进制程序就会小一些,可以提高一点程序的性能。“mkdir”命令创建一个“/var/named”目录。
清除不必要的文件
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf bind/
这些命令删除用来编译和安装BIND/DNS的源文件。
配置
不同服务器的配置文件是不相同的,要根据需求和网络结构的实际情况来决定。可能在家里只要安装一个“caching only”的DNS服务器,在公司里就可能要安装主DNS、辅DNS和“caching only”DNS。
可以到这去下载“floppy.tgz”文件: http://pages.infinit.net/lotus1/doc...旅娼