歡迎您光臨本站 註冊首頁

centos 5.2下成功安裝bind-9.5.0

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

centos 5.2下成功安裝bind-9.5.0

平台: centos 5.2   軟體 bind-9.5.0.tar.gz
硬體:
# more /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Xeon(R) CPU            3065  @ 2.33GHz
stepping        : 11
cpu MHz         : 2333.000

下載 bind  http://www.isc.org
解壓bind-9.5.0.tar.gz
# tar -zxvf bind-9.5.0.tar.gz
進入 bind-9.5.0.tar.gz文件夾
# cd bind-9.5.0
創建安裝目錄,我是安裝在 /usr/local/named
# mkdir /usr/local/named
編譯,指定安裝目錄,指定man目錄,開啟多線程支持
# ./configure –prefix=/usr/local/named --mandir=/usr/local/share/man –enable-threads
Make 大約需要幾分鐘,只要不報錯就繼續下去。
# make
Make install 安裝
# make install
沒有報錯,就表示安裝成功了。
創建以下目錄以備用
# mkdir /usr/local/named/namedb
開始配置bind
創建 rndc.conf文件,用bind自帶程序生成
# cd /usr/local/named/

# sbin/rndc-confgen > etc/rndc.conf
把rndc.conf 中的key信息輸出到 named.conf 中
#cd /etc/
# tail –n10 rndc.conf | head -n9 | sed -e s/#\ //g > named.conf
編輯named.conf
# vi named.conf
寫入以下內容:
Option {
        Directory 「/usr/local/named」;
        Pid-file 「named.pid」;
        Allow-query { any ;};
        Dump-file 「/usr/local/named/data/cache_dump.db」;
        Statistics-file 「/usr/local/named/data/named_stats.txt」;
        };
Zone 「.」 in {
        Type hint;
        File 「named.root」;
        };
Zone 「localhost」 in {
         Type master;
         File 「localhost.zone」;
         };
Zone 「0.0.127.in-addr.arpa」 in {
           Type master;
           File 「localhost.rev」;
           };
退出,保存。
創建並編輯 localhost.zone 文件
# vi localhost.zone
寫入以下內容:
$TTL 3600
$ORIGIN 127.0.0.1.
@  1D IN SOA localhost. root.localhost. (
                     42         ;
                     3H         ;
                     15M        ;
                     1W         ;
                     3600);
   1D IN NS  127.0.0.1
   1D IN A   127.0.0.1
創建並編輯 localhost.rev 文件
# vi localhost.rev
寫入以下內容:
$TTL 3600
@  IN SOA  localhost.  root.localhost. (
              1; serial
              3600; refresh every hour
              900;  retry every 15 minutes
              3600000; expire 1000 hours
              3600); minimun 1 hour
   IN NS localhost.
1  IN PTR localhost.
下載一個named.root
ftp://ftp.rs.internic.net/domain/named.root
到/usr/local/named/下

特別注意:bind的配置文檔是區分大小寫的。
下面就可以啟動bind來測試安裝是否成功了
# /usr/local/named/sbin/named –gc /usr/local/named/etc/named.conf
加 –gc 參數,可以顯示出啟動日誌,以便出錯排查。
如果運行結果最後一行顯示
Running
表明安裝並啟動成功。
把named 添加到啟動項,隨操作系統一起啟動。
# cd /etc/rc.d
# vi rc.local
在最後添加以下內容
/usr/local/named/sbin/named –gc /usr/local/named/etc/named.conf
退出保存。
可以嘗試重啟伺服器,然後telnet 伺服器IP地址的53埠,驗證bind是否啟動。
# shutdown –r now
# telnet x.x.x.x 53
全部安裝結束,就可以開展應用的配置和測試了。

[ 本帖最後由 bigbigsh 於 2008-7-5 19:41 編輯 ]
《解決方案》

# /usr/local/named/sbin/named -gc /usr/local/named/etc/named.conf
05-Jul-2008 15:33:10.074 starting BIND 9.5.0 -gc /usr/local/named/etc/named.conf
05-Jul-2008 15:33:10.074 found 2 CPUs, using 2 worker threads
05-Jul-2008 15:33:10.075 loading configuration from '/usr/local/named/etc/named.conf'
05-Jul-2008 15:33:10.076 listening on IPv4 interface lo, 127.0.0.1#53
05-Jul-2008 15:33:10.077 listening on IPv4 interface eth0, 192.168.1.11#53
05-Jul-2008 15:33:10.077 listening on IPv4 interface eth1, 196.196.0.252#53
05-Jul-2008 15:33:10.079 default max-cache-size (33554432) applies
05-Jul-2008 15:33:10.081 automatic empty zone: 0.IN-ADDR.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 127.IN-ADDR.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 254.169.IN-ADDR.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 2.0.192.IN-ADDR.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: D.F.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 8.E.F.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: 9.E.F.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: A.E.F.IP6.ARPA
05-Jul-2008 15:33:10.081 automatic empty zone: B.E.F.IP6.ARPA
05-Jul-2008 15:33:10.082 default max-cache-size (33554432) applies: view _bind
05-Jul-2008 15:33:10.083 command channel listening on 127.0.0.1#953
05-Jul-2008 15:33:10.083 ignoring config file logging statement due to -g option
05-Jul-2008 15:33:10.084 zone 0.0.127.in-addr.arpa/IN: loaded serial 1
05-Jul-2008 15:33:10.084 localhost.zone:3: ignoring out-of-zone data (127.0.0.1)
05-Jul-2008 15:33:10.085 zone localhost/IN: has 0 SOA records
05-Jul-2008 15:33:10.085 zone localhost/IN: has no NS records
05-Jul-2008 15:33:10.085 running
《解決方案》

怪事為什麼我service named start不用啟動是不是tar 包不支持啊~
# service named start
Starting named:
Error in named configuration:
/etc/named.conf:11: change directory to '/usr/local/named' failed: file not found
/etc/named.conf:11: parsing failed
                                                           

而用下面命令是正常的
/usr/local/named/sbin/named –gc /usr/local/named/etc/named.conf
《解決方案》

# cat /etc/init.d/named
《解決方案》

謝謝板主的回復,我把這個文件帖出來幫我指點指點

#!/bin/bash
#
# named           This shell script takes care of starting and stopping
#                 named (BIND DNS server).
#
# chkconfig: - 13 87
# 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.
[ -r /etc/sysconfig/network ] && . /etc/sysconfig/network

[ -r /etc/sysconfig/named ] && . /etc/sysconfig/named

export KRB5_KTNAME=${KEYTAB_FILE:-/etc/named.keytab}

# Don't kill named during clean-up
NAMED_SHUTDOWN_TIMEOUT=${NAMED_SHUTDOWN_TIMEOUT:-100}
if [ -n "$ROOTDIR" ]; then
   ROOTDIR=`echo $ROOTDIR | sed 's#//*#/#g;s#/$##'`;
   rdl=`/usr/bin/readlink $ROOTDIR`;
   if [ -n "$rdl" ]; then
      ROOTDIR="$rdl";
   fi;
fi

RETVAL=0
named='named'
if [[ "$ENABLE_SDB" = * ]] && [ -x /usr/sbin/named_sdb ]; then
    named='named_sdb';
fi;
prog=$named

nmdcOption()
{ let i=0;
  for a in $*;
  do ((++i));
     if [ $a = -c ]; then
         ((++i));
         eval 'echo $'$i;
elif [[ $a = -c* ]]; then
         echo ${a#-c};
     fi;
  done;
}

named_c_option=`nmdcOption $OPTIONS`;
named_conf=${named_c_option:-/etc/named.conf};

dbusEnabled=0;
for a in $OPTIONS; do
    if [ $a  = "-D" ]; then
        dbusEnabled=1;
    fi;
done

if [ $dbusEnabled -eq 0 ] && [ -z "$DISABLE_NAMED_DBUS" ] ; then
    NetworkManagerEnabled=0
    for l in 0 1 2 3 4 5 6; do
        if /sbin/chkconfig --level=$l NetworkManager >/dev/null 2>&1; then
            NetworkManagerEnabled=1;
        fi;
    done
if [ $NetworkManagerEnabled -eq 1 ]; then
        OPTIONS="$OPTIONS -D";
    fi;
    dbusEnabled=1;
fi

start() {

        [ -x /usr/sbin/$named ] || exit 5

        if [ ! -r ${ROOTDIR}${named_conf} ] ; then
           if [ -z "$named_c_option" ] && [ -r ${ROOTDIR}/etc/named.caching-nameserver.conf ]; then
               named_conf='/etc/named.caching-nameserver.conf';
               OPTIONS="$OPTIONS -c ${named_conf}";
           else
               echo Locating $ROOTDIR/${named_conf} failed:
               failure
               echo;
               exit 6;
           fi;
        fi;
# Start daemons.
        echo -n $"Starting $named: "
        if [ -n "`/sbin/pidof -o %PPID $named`" ]; then
                echo -n $"$named: already running"
                failure
                echo
                return 1
        fi
        ckcf_options='-z'; # enable named-checkzone for each zone (9.3.1+) !
        if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
                OPTIONS="${OPTIONS} -t ${ROOTDIR}"
                ckcf_options="$ckcf_options -t ${ROOTDIR}";
                if [ -s /etc/localtime ]; then
                    cp -fp /etc/localtime ${ROOTDIR}/etc/localtime
                fi;
                if [ ! -d ${ROOTDIR}/proc ]; then
                    mkdir -p ${ROOTDIR}/proc
                fi
                if ! egrep -q '^/proc[[:space:]]+'${ROOTDIR}'/proc' /proc/mounts; then
                    mount --bind -n /proc ${ROOTDIR}/proc >/dev/null 2>&1
                fi
if [ $dbusEnabled -eq 1 ]; then
                    if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${ROOTDIR}'/var/run/dbus' /proc/mounts; then
                        mkdir -p ${ROOTDIR}/var/run/dbus
                        if [ ! -d  /var/run/dbus ] ; then
                            mkdir -p /var/run/dbus ;
                        fi;
                        mount --bind -n /var/run/dbus ${ROOTDIR}/var/run/dbus > /dev/null 2>&1;
                    fi;
                fi;
        fi
        no_write_master_zones=0
        if [ -e /etc/selinux/config ]; then
           .  /etc/selinux/config
           if [[ ( "$SELINUX" != 'disabled') && ("$SELINUXTYPE" != "") && (-d /etc/selinux/${SELINUXTYPE}) && (-e /etc/selinux/${SELINUXTYPE}/booleans || (-e /etc/selinux/${SELINUXTYPE}/booleans.local)) ]]; then
               if [ -e /etc/selinux/${SELINUXTYPE}/booleans.local ]; then
                   . /etc/selinux/${SELINUXTYPE}/booleans.local;
               else
                   . /etc/selinux/${SELINUXTYPE}/booleans;
               fi;

if echo "$named_write_master_zones" | /bin/egrep -q '^+$'; then
                   if [ "$named_write_master_zones" -eq 1 ] ; then
                       /bin/chown -f --from=root:named named:named $ROOTDIR/var/named
                   elif [ "$named_write_master_zones" -eq 0 ] ; then
                       /bin/chown -f --from=named:named root:named $ROOTDIR/var/named
                   fi;
               fi;
           else
               no_write_master_zones=1
           fi;
        else
            no_write_master_zones=1
        fi;
        if [ "$no_write_master_zones" -eq 1 ]; then
            if [[ "$ENABLE_ZONE_WRITE" =  * ]]; then
                /bin/chown -f --from=root:named named:named $ROOTDIR/var/named
            elif [[ "$ENABLE_ZONE_WRITE" =  * ]]; then
                /bin/chown -f --from=named:named root:named $ROOTDIR/var/named
            fi;
fi
        conf_ok=0;
        if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options ${named_conf} >/dev/null 2>&1; then
           conf_ok=1;
        else
           RETVAL=$?;
        fi
        if [ $conf_ok -eq 1 ]; then
           daemon /usr/sbin/$named -u named ${OPTIONS};
           RETVAL=$?;
           if [ $RETVAL -eq 0 ]; then
               rm -f /var/run/named.pid
               rm -f /var/run/named_sdb.pid 2>/dev/null
               ln -s $ROOTDIR/var/run/named/named.pid /var/run/named.pid;
               if [ "$named" = "named_sdb" ]; then
                   ln -s $ROOTDIR/var/run/named/named.pid /var/run/named_sdb.pid;
               fi;
           fi;
           if [ -n "`/sbin/pidof -o %PPID $named`" ]; then
               # Verify that named actually started (JM 2006-10-04)
               if [ ! -e $ROOTDIR/var/run/named/named.pid ]; then
# If there is not a file containing the PID of the now running named daemon then create it (JM 2006-10-04)
                  echo `/sbin/pidof -o %PPID $named` > $ROOTDIR/var/run/named/named.pid;
                  if [ "$named" = "named_sdb" ]; then
                     echo `/sbin/pidof -o %PPID $named` > $ROOTDIR/var/run/named/named_sdb.pid;
                  fi;
               fi;
           fi;
        else
           named_err="`/usr/sbin/named-checkconf $ckcf_options $named_conf 2>&1`";
           echo
           echo $"Error in named configuration"':';
           echo "$named_err";
           failure
           echo
           if [ -x /usr/bin/logger ]; then
               echo "$named_err" | /usr/bin/logger -pdaemon.error -tnamed
           fi;
           return 7;
fi;
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/named
        echo
        return $RETVAL
}
stop() {
        # Stop daemons.
        echo -n $"Stopping $named: "
        /usr/sbin/rndc stop >/dev/null 2>&1
        RETVAL=$?
        [ "$RETVAL" -eq 0 ] || killproc "$named" -TERM >/dev/null 2>&1

        timeout=0
        RETVAL=0
        while /sbin/pidof -o %PPID "$named" >/dev/null; do
                if [ $timeout -ge $NAMED_SHUTDOWN_TIMEOUT ]; then
                        RETVAL=1
                        break
                else
                        sleep 2 && echo -n "."
                        timeout=$((timeout+2))
                fi;
done
        if [ $RETVAL -eq 0 ]; then
            rm -f /var/lock/subsys/named
            rm -f /var/run/named.pid
            rm -f /var/run/named_sdb.pid 2>/dev/null
        fi;
        if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
            if egrep -q '^/proc[[:space:]]+'${ROOTDIR}'/proc' /proc/mounts; then
               umount ${ROOTDIR}/proc >/dev/null 2>&1
            fi
            if [ $dbusEnabled -eq 1 ]; then
               if egrep -q '^/[^[:space:]]+[[:space:]]+'${ROOTDIR}'/var/run/dbus' /proc/mounts; then
                  umount ${ROOTDIR}/var/run/dbus > /dev/null 2>&1
               fi;
            fi;
        fi;
        if [ $RETVAL -eq 0 ]; then
            success
        else
            failure
        fi;
        echo
return $RETVAL
}
rhstatus() {
        /usr/sbin/rndc status
        status /usr/sbin/$named
        return $?
}
restart() {
        stop
# wait a couple of seconds for the named to finish closing down
        sleep 2
        start
}
reload() {
        echo -n $"Reloading $named: "
        p=`/sbin/pidof -o %PPID $named`
        RETVAL=$?
        if [ "$RETVAL" -eq 0 ]; then
            /usr/sbin/rndc reload >/dev/null 2>&1 || /bin/kill -HUP $p;
            RETVAL=$?
        fi
[ "$RETVAL" -eq 0 ] && success $"$named reload" || failure $"$named reload"
        echo
        return $?
}
probe() {
        # named knows how to reload intelligently; we don't want linuxconf
        # to offer to restart every time
        /usr/sbin/rndc reload >/dev/null 2>&1 || echo start
        return $?
}
checkconfig() {
        ckcf_options='-z'; # enable named-checkzone for each zone (9.3.1+) !
        if [ -n "${ROOTDIR}" -a "x${ROOTDIR}" != "x/" ]; then
                OPTIONS="${OPTIONS} -t ${ROOTDIR}"
                ckcf_options="$ckcf_options -t ${ROOTDIR}";
        fi;
        if [ -x /usr/sbin/named-checkconf ] && [ -x /usr/sbin/named-checkzone ] && /usr/sbin/named-checkconf $ckcf_options ${named_conf} | cat ; then
            return 0;
        else
            return 1;
        fi
}

# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                rhstatus
                ;;
        restart)
                restart
                ;;
        condrestart)
                [ -e /var/lock/subsys/named ] && restart;
                ;;
        reload)
                reload
                ;;
        probe)
                probe
                ;;
        checkconfig|configtest|check|test)
                checkconfig
                ;;
        *)
                echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|configtest|probe}"
                exit 2
esac

exit $?
《解決方案》

好像是配置文件的目錄不正常,,
《解決方案》

是chroot的問題

[ 本帖最後由 llzqq 於 2008-7-7 11:57 編輯 ]
《解決方案》

有兩個問題需要注意:
1. 安裝過發行盤所帶的BIND,已經有/etc/init.d/named文件。這個腳本中預設的named為/usr/sbin/named,一般編譯安裝的預設路徑為/usr/local/sbin/named,因此需要調整;
2. /etc/init.d/named腳本指定了-t /var/named/chroot參數啟動,因此數據文件一般是在/var/named/chroot/var/named/下面,而不是字面上的/var/named/下面。
《解決方案》

對的發行版好像有這些目錄..但是我查了一下系統里還有裝# rpm -q bind
bind-9.3.4-6.P1.el5
你們一提醒我一看有兩個版本的BIND。。對不起各大老大讓你們見笑了

我刪除原來的版本后,感覺還是有點問題。。但我說不出來。。各位老大幫忙看看問題的所在
# service named start
named: unrecognized service


# /usr/local/named/sbin/named -g

)
07-Jul-2008 14:22:30.709 zone localhost/IN: has 0 SOA records
07-Jul-2008 14:22:30.709 zone localhost/IN: has no NS records
07-Jul-2008 14:22:30.709 running


# /usr/local/named/sbin/named -gc  /usr/local/named/etc/named.conf


07-Jul-2008 14:23:30.555 default max-cache-size (33554432) applies: view _bind
07-Jul-2008 14:23:30.556 /usr/local/named/etc/named.conf:7: couldn't add command channel 127.0.0.1#953: address in use
07-Jul-2008 14:23:30.557 ignoring config file logging statement due to -g option
07-Jul-2008 14:23:30.557 zone 0.0.127.in-addr.arpa/IN: loaded serial 1
07-Jul-2008 14:23:30.558 localhost.zone:3: ignoring out-of-zone data (127.0.0.1)
07-Jul-2008 14:23:30.558 zone localhost/IN: has 0 SOA records
07-Jul-2008 14:23:30.558 zone localhost/IN: has no NS records
07-Jul-2008 14:23:30.558 running

# cat /var/log/messages

Jul  7 19:01:18 hwt avahi-daemon: avahi-daemon 0.6.16 starting up.
Jul  7 19:01:18 hwt avahi-daemon: WARNING: No NSS support for mDNS detected, consider installing nss-mdns!
Jul  7 19:01:18 hwt avahi-daemon: Successfully called chroot().
Jul  7 19:01:18 hwt avahi-daemon: Successfully dropped remaining capabilities.

[ 本帖最後由 bigbigsh 於 2008-7-7 19:09 編輯 ]
《解決方案》

為什麼會有這個報錯呢
# cat /var/log/messages

Jul  7 19:01:18 hwt avahi-daemon: avahi-daemon 0.6.16 starting up.
Jul  7 19:01:18 hwt avahi-daemon: WARNING: No NSS support for mDNS detected, consider installing nss-mdns!

[火星人 ] centos 5.2下成功安裝bind-9.5.0已經有735次圍觀

http://coctec.com/docs/service/show-post-29100.html