从源代码包安装BIND9

本文介绍从源代码安装并配置BIND 9的方法。BIND 9是DNS在Unix和Linux下实现的新一代版本,有诸多特点。安装需系统有支持ANSI C的编译器,经下载、解压、编译、安装步骤,还给出配置最简单的bind cache server的方法及相关配置文件内容。

从源代码包安装BIND9

Posted on 2004年10月3日 16:56

ISC 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 NSns
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 NSlocalhost.
* 1D IN PTRlocalhost.

这样所有的配置文件就搞定了。不过如果你希望你的 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 命令测试看看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值