从源代码包安装BIND9
Posted on 2004年10月3日 16:56ISC BIND 是 DNS 在 Unix 和 Linux 下的具体实现,BIND 9 更是重新编写大部分 BIND 结构代码的新一代版本,BIND 9 的主要特点有:
- DNS安全
DNSSEC (signed zones)
TSIG (signed DNS requests) - IPv6
Answers DNS queries on IPv6 sockets
IPv6 resource records (DNAME, etc.)
Experimental IPv6 Resolver Library - 实现了 DNS 协议新扩展的功能
IXFR, DDNS, Notify, EDNS0
Improved standards conformance - 视图功能(Views)
一台服务器可以提供DNS名字空间的多个视图 - 支持多处理器
- 增强了代码的可移植性
BIND 9的当前最新版本是 BIND 9.3.0,下面我们介绍如何从源代码安装 BIND 9。
1、从源代码安装BIND要求你的Unix或Linux系统上装有支持ANSI C的编译器,如果没有,你可以使用GNU提供的gcc
2、到 www.isc.org 网站下载你需要的版本的BIND源代码包
3、下载到你的系统后,将源代码安装包放到 /usr/src 目录中(你也可以放到别的目录,我习惯用这个目录放置源代码包)准备安装
4、解压源代码包:
$ cd /usr/src
$ tar xvfz bind-9.3.0.tar.gz (9.3.0是bind的版本号)
如果你的 tar 命令不支持z选项(用于解压gz后缀的压缩包),你可以分两步做:
$ gunzip bind-9.3.0.tar.gz
$ tar xvf bind-9.3.0.tar
这样源代码就解压到 bind-9.3.0目录中了。
5、开始编译:
$ cd bind-9.3.0
$ ./configure
正像单词的意思一样,configure 是编译前对源代码进行针对具体操作系统的编译参数配置,有很多选项可以选择,大家可以用 --help 选项来查看所有可用的选项,这里介绍几个最常用的选项:
--prefix=/usr/local/bind 设置bind的安装目录,默认是/usr/local。
有的人喜欢将bind安装在单独的目录就可以如此设置
--sysconfdir=/etc/bind 设置named.conf配置文件放置的目录,默认是"$prefix/etc"
--localstatdir=/var 设置 run/named.pid 放置的目录,默认是"$prefix/var"
--with-libtool 将BIND的库文件编译为动态共享库文件,这个选项默认是未选择的。
如果不选这个选项,那么编译后的named命令会比较大,lib目录中的库文件都是.a后缀的
如果选上这个选项,那么编译后的named命令会很小,lib目录中的库文件则是.so后缀
--enable-threads 如果你的系统有多个CPU,那么可以使用这个选项
如果 ./configure 没有报错的话,那么就可以开始编译源代码了。
$ make
编译需要一小会时间,编译完成后则开始安装BIND,安装需要 root 用户权限,所以要先转换成root用户。
$ su -
# make install
这样BIND9就已经安装完成了,但要让BIND能正常工作,还需要做一些配置。下面介绍配置最简单的 bind cache server。由于本文是希望让 DNS 的初学者能尽快的配置出服务器,因此未详细解释一些细节。推荐初学者详读《dns and bind》。
named.conf 文件是 BIND 的配置文件,配置如下:
=============
named.conf
=============
options {
directory "/var/bind";
listen-on-v6 { none }; // 禁止IPv6的功能
listen-on { 127.0.0.1; }; // 如果你有多个网卡,而你只想监听特定的一个网卡,就可以使用这个选项
pid-file "/var/run/named.pid"; // 设置 named 进程运行时记录PID号的文件
};
zone "." IN {
type hint;
file "named.cache";
};
zone "localhost" IN {
type master; // 区的类型设置为 master
file "localhost.zone"; // 区数据文件的位置
allow-update { none; }; // 不允许动态更新本区的数据
notify no; // 由于不允许动态更新,那么就不需要更新通知的功能
};
zone "127.in-addr.arpa" IN {
type master;
file "127.zone";
allow-update { none; };
notify no;
};
下面是三个 zone 所需要的区配置文件:
=============
named.cache
=============
这个文件记录了所有根 dns 服务器的信息,是由 www.internic.net 维护的,一般好几年才变动一次。你可以到ftp://ftp.rs.internic.net/domain/named.cache 去下载,这里就不列出来了。
=============
localhost.zone
=============
$TTL 1W
@ IN SOA ns.localhost. root.localhost. (
2004100501 ; Serial
28800 ; Refresh
14400 ; Retry
604800 ; Expire - 1 week
86400 ) ; Minimum
IN NS ns
localhost. IN A 127.0.0.1
=============
127.zone
=============
$ORIGIN 127.in-addr.arpa.
$TTL 1W
@ 1D IN SOA localhost. root.localhost. (
2004100501 ; Serial
3H ; Refresh
15M ; Retry
1W ; Expire
1D ) ; Minimum
1D IN NS localhost.
* 1D IN PTR localhost.
这样所有的配置文件就搞定了。不过如果你希望你的 named 进程能够更安全一些,那么你可以将 named 进程用专门的一个用户(比如:named 用户)来运行,而不是用权限最大的 root 用户来运行。操作步骤如下:
1、创建 named 用户,记得将用户的 shell 设置为无法登陆的类型。
2、chown root /etc/bind/named.conf
chmod 644 /etc/bind/named.conf
3、chown named /var/bind/*
chmod 644 /var/bind/*
5、启动 named 进程时使用 -u named 选项。
这样子一个最简单的 cache server 就配置好了。记得启动 named 进程后,查看一下 syslog 看看是否有出错信息,然后用 nslookup 或 dig 命令测试看看。
转自:http://blog.csdn.net/bjbs_270/article/details/136012