码迷,mamicode.com
首页 > 其他好文 > 详细

编译安装bind及SysV服务脚本编写

时间:2015-03-28 19:05:38      阅读:414      评论:0      收藏:0      [点我收藏+]

标签:bind、编译安装、服务脚本

1、解析程序包

# wget http://ftp.isc.org/isc/bind9/9.7.3/bind-9.7.3.tar.gz   
# tar xvf bind-9.7.3.tar.gz   
# cd bind-9.7.3.tar.gz
# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --disable-ipv6 --enable-threads --enable-epoll --disable-chroot
# make
# make install            #但是安装完成之后什么都没有,可以看一下
# ls /etc/named
bind.keys            #就只有一个文件
# ls /var/named
...No such file or directory        #连目录都没有
# ls doc        #看看有没有什么模板
arm doxygen Makefile Makefile.in misc xsl            #没有模板
# cd /usr/local/bind9                #到安装目录看看
# ls
bin include lib sbin share var            #没有模板
# cd bin/
# ls
dig host isc-config.sh nslookup nsupdate            #这些命令都有
# cd ../sbin/
# ls
arpaname            dnssec-keygen   dnssec-verify   named          named-journalprint    
ddns-confgen         dnssec-revoke   genrandom      named-checkconf    nsec3hash  
dnssec-dsfromkey    dnssec-settime  isc-hmac-fixup  named-checkzone   rndc
dnssec-keyfromlabel dnssec-signzone lwresd          named-compilezone rndc-confgen
# rndc
-bash: rndc: command not found        #命令也不能用
# vim /etc/profile.d/bind9.conf.sh
export PATH=/usr/local/bind9/bin:/usr/loacl/bind9/sbin:$PATH
# . /etc/profile.d/bind9.sh
# rndc        #现在才能使用,但是主配置文件没有,rndc的key也没有,所有的都要自己手动写

2、主配置文件/etc/named/named.conf样例

# mkdir /var/named
# cd /etc/named/
# vim named.conf
options {
    directory "/var/named";
    pid-file "/var/run/named.pid";
};

zone "." IN {
    type hint;
    file "named.ca";
};

zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
    type master;
    file "named.local";
    allow-update { none; };
};

3、生成rndc.conf

# rndc-confgen > /etc/named/rndc.conf
# cat rndc.conf
...
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#     algorithm hmac-md5;
#     secret "xqwTfCRuEt4N8zCYJBnN1w==";
# };
#
# controls {
#     inet 127.0.0.1 port 953
#         allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf        #将上面要加入的内容加到named.conf文件中的后面
# vim named.conf        #把配置文件后N行复制到named.conf,并移除注释
key "rndc-key" {
    algorithm hmac-md5;
    secret "xqwTfCRuEt4N8zCYJBnN1w==";
};
controls {
    inet 127.0.0.1 port 953
        allow { 127.0.0.1; } keys { "rndc-key"; };
};

4、在/var/named建立区域解析库

# cd /var/named
# dig -t NS . @172.19.0.6 > /var/named/named.ca
# vim localhost.zone
$TTL 1D
@    IN    SOA    localhost.    admin.localhost. (
                    0
                    2H
                    1H
                    1W
                    3H )
@    IN    NS    localhost.
localhost.    IN    A    127.0.0.1
# cp localhost.zone named.local
# vim named.local
$TTL 1D
@    IN    SOA    localhost.    admin.localhost. (
                    0
                    2H
                    1H
                    1W
                    3H )
@    IN    NS    localhost.
1    IN    PTR    localhost.
# useradd -r named
# man -M /usr/local/bind9/share/man/ named
# chown root:named ./*
# chmod 640 ./*
# ll
# chown root:named /etc/named/*
# chmod 640 /etc/named/*
# named -u named -f -g -4

再开一个终端,查看本机地址是否开始监听

# ss -tunl
# rndc status        #现在named已经开始工作了

5、建立服务脚本

# vim /etc/rc.d/init.d/named    #每次启动都要指定,太麻烦了,写个脚本
#!/bin/bash
# chkconfig: 2345 70 50
# description: named

[ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions

PidFile=/var/run/named.pid
LockFile=/var/lock/subsys/named
named=named

start() {
    [ -x /usr/local/bind9/sbin/$named ] || exit 4
    if [ -f $LockFile ]; then
        echo -n "$named is already running..."
        failure
        echo
        exit 5
    fi
    
    echo -n "Starting $named: "
    daemon --pidfile "$PidFile" /usr/local/bind9/sbin/$named -u named -4
    RETVAL=$?
    echo
    if [ $RETVAL -eq 0 ]; then
        touch $LockFile
        return 0
    else
        rm -f $LockFile $PidFile
        return 1
    fi
}

stop() {
    if [ ! -f $LockFile ];then
        echo "$named is not started."
        failure
    fi

    echo -n "Stopping $named: "
    killproc $named
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f $LockFile
    return 0
}

restart() {
    stop
    sleep 1
    start
}

reload() {
    echo -n "Reloading $named: "
    killproc $named -HUP
    RETVAL=$?
    echo
    return $RETVAL
}

status() {
    if pidof $named > /dev/null && [ -f $PidFile ]; then
        echo "$named is running..."
    else
        echo "$named is stopped..."
    fi
}

case $1 in
start)
    start ;;
stop) 
    stop ;;
restart)
    restart ;;
reload)
    reload ;;
status)
    status ;;
*)
    echo "Usage:"
    exit 2;;
esac
# bash -n /etc/rc.d/init.d/named
# chmod +x /etc/rc.d/init.d/named
# chkconfig --add named
# service named start
Starting named:                                        [  OK  ]
# service named start
Starting named:                                        [FAILED]
# service named stop
Stopping named:                                        [  OK  ]
# service named restart
Starting named:                                        [  OK  ]
Stopping named:                                        [  OK  ]
# service named reload
Reloading named:                                       [  OK  ] 
# service named status
named is stopped...        #出错了这里应该是named is running
# chown -R named:named /usr/local/bind9/var/run/        #改下权限
# vim /etc/named/named.conf
pid-file "/usr/local/bind9/var/run/named.pid";        #这个地方改一下
# vim /etc/rc.d/init.d/named
PidFile=/usr/local/bind9/var/run/named.pid        #这也改
# service named stop 
Stopping named:                                        [  OK  ]
# service named stop 
Stopping named:                                        [FAILED]
# service named start
Starting named:                                        [  OK  ]
# service named status
named is running...
# service named stop 
Stopping named:                                        [  OK  ]
# service named status
named is stopped...


本文出自 “三哥” 博客,请务必保留此出处http://523958392.blog.51cto.com/9871195/1625849

编译安装bind及SysV服务脚本编写

标签:bind、编译安装、服务脚本

原文地址:http://523958392.blog.51cto.com/9871195/1625849

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!