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!