下一页 上一页 目录

4. 安装您全新的 BIND

我应该提一下,如果您已经安装了 BIND,比如通过 RPM 包安装的,那么在安装新的版本之前,您应该先移除旧版本。在 Red Hat 系统上,这通常意味着你需要移除 bindbind-utils 软件包,如果你安装了 bind-develcaching-nameserver,也可能需要移除它们。

您可能需要保存一份 init 脚本的副本 (例如,/etc/rc.d/init.d/named),如果有的话,在执行移除操作之前;这在稍后会很有用。

如果您是从旧版本的 BIND 升级,例如 BIND 8,您需要阅读 BIND 源代码包中 doc/misc/migration 文件中的迁移文档。本文档不处理任何迁移问题;我只是假设您正在替换一个现有的、可正常工作的 BIND 9 安装。

4.1 安装二进制文件

这是简单的部分 :-) 。只需运行 make install 并让它为您处理即可。真的,就这么简单!

4.2 设置 Init 脚本

如果您从您的发行版中获得了一个现有的 init 脚本,那么最好的做法可能是简单地修改它,以使用适当的开关来运行新的二进制文件。 这些开关是... (请击鼓...)

以下是我在 Red Hat 6.0 系统上使用的 init 脚本。 正如您所见,它几乎与 Red Hat 发行的版本完全相同。 我还没有尝试过 rndc 命令,但我看不出它们有任何理由不能工作。


#!/bin/sh
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: 345 55 45
# description: named (BIND) is a Domain Name Server (DNS) \
# that is used to resolve host names to IP addresses.
# probe: true

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0

[ -f /usr/local/sbin/named ] || exit 0

[ -f /chroot/named/etc/named.conf ] || exit 0

# See how we were called.
case "$1" in
  start)
        # Start daemons.
        echo -n "Starting named: "
        daemon /usr/local/sbin/named -u named -t /chroot/named -c /etc/named.conf
        echo
        touch /var/lock/subsys/named
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc named
        rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        status named
        exit $?
        ;;
  restart)
        $0 stop
        $0 start
        exit $?
        ;;
  reload)
        /usr/local/sbin/rndc reload
        exit $?
        ;; 
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/local/sbin/rndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;
  
  *)
        echo "Usage: named {start|stop|status|restart|reload}"
        exit 1
esac

exit 0

与 syslogd 一样,从 Red Hat 7.2 开始,此过程甚至更加容易。 有一个名为 /etc/sysconfig/named 的文件,可以在其中定义 syslogd 的额外参数。 但是,Red Hat 7.2 上的默认 /etc/rc.d/init.d/named 将在启动前检查 /etc/named.conf 的存在。 您需要更正此路径。

在 Caldera OpenLinux 系统上,您只需修改顶部定义的变量,它显然会为您处理其余的事情

NAME=named
DAEMON=/usr/local/sbin/$NAME
OPTIONS="-t /chroot/named -u named -c /etc/named.conf"

对于 FreeBSD 4.3,您可以编辑 rc.conf 文件并在其中输入以下内容

named_enable="YES"
named_program="chroot/named/bin/named"
named_flags="-u named -t /chroot/named -c /etc/namedb/named.conf"

4.3 配置更改

您还需要在 named.conf 中添加或更改一些选项,以保持各个目录的正确。 特别是,您应该在 options 部分添加(或更改,如果您已经拥有它们)以下指令

directory "/etc/namedb";
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";
由于此文件由 named 守护进程读取,因此所有路径当然都相对于 chroot jail。 截至撰写本文时,BIND 9 不支持以前版本中的许多统计信息和转储文件。 据推测,以后的版本会支持;如果您运行的是这样的版本,您可能需要添加额外的条目以使 BIND 也将它们写入 /var/run 目录。


下一页 上一页 目录