下一步 上一步 目录

4. 安装您闪亮的新 BIND

我应该提一下,如果您已经安装了 BIND,例如通过 RPM 包,那么在安装新的 BIND 之前,您可能应该先将其移除。在 Red Hat 系统上,这可能意味着移除 bindbind-utils 包,以及可能存在的 bind-develcaching-nameserver 包。

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

4.1 在 Jail 外部安装工具

这是简单的部分 :-) 。只需运行 make install,让它为您处理即可。之后您可能想要 chmod 000 /usr/local/sbin/named,以确保您不会意外运行非 chroot 版本的 BIND。(如果您没有像我建议的那样告诉它安装到 /usr/local/sbin 中,那么路径是 /usr/sbin/named。)

4.2 在 Jail 内部安装二进制文件

软件包中只有两个部分必须位于 chroot jail 内部:主要的 named 守护进程本身,以及 named-xfer,它用于区域传输。您可以直接从源代码树中复制它们

# cp src/bin/named/named /chroot/named/bin

# cp src/bin/named-xfer/named-xfer /chroot/named/bin

4.3 设置 Init 脚本

如果您有来自发行版的现有 init 脚本,最好的做法可能是简单地修改它以运行 /chroot/named/bin/named,并带有适当的开关。开关是... (请击鼓...)

以下是我在 Red Hat 6.0 系统上使用的 init 脚本。正如您所看到的,它几乎与 Red Hat 发行版本的方式完全相同。我还修改了 ndc restart 命令,以便它可以正确地重启服务器,并保持 chroot 状态。您也应该在您的 init 脚本中执行相同的操作,即使您不复制这个脚本。


#!/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 /chroot/named/bin/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 /chroot/named/bin/named -u named -g named -t /chroot/named
        echo
        touch /var/lock/subsys/named
        ;;
  stop)
        # Stop daemons.
        echo -n "Shutting down named: "
        killproc named
        rm -f /var/lock/subsys/named
        echo
        ;;
  status)
        /usr/local/sbin/ndc status
        exit $?
        ;;
  restart)
        /usr/local/sbin/ndc -n /chroot/named/bin/named "restart -u named -g named -t /chroot/named"
        exit $?
        ;;
  reload)
        /usr/local/sbin/ndc reload
        exit $?
        ;; 
  probe)
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/local/sbin/ndc reload >/dev/null 2>&1 || echo start
        exit 0
        ;;
  
  *)
        echo "Usage: named {start|stop|status|restart}"
        exit 1
esac

exit 0

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

NAME=named
DAEMON=/chroot/named/bin/$NAME
OPTIONS="-t /chroot/named -u named -g named"

4.4 配置更改

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

directory "/etc/namedb";
pid-file "/var/run/named.pid";
named-xfer "/bin/named-xfer";
由于此文件是由 named 守护进程读取的,因此所有路径当然都是相对于 chroot jail 的。

有些人还报告说必须在他们的 named.conf 中添加一个额外的块才能使 ndc 正常工作

controls {
    unix "/var/run/ndc" perm 0600 owner 0 group 0;
};


下一步 上一步 目录