在Debian Etch上安装和使用未绑定的Nameservers

在Debian Etch上安装和使用未绑定的Nameservers

版本1.0
作者:Falko Timme

Unbound是根据BSD许可证发布的验证,递归和缓存DNS解析器。 版本1.0.0于2008年5月20日发布。本教程介绍如何在Debian Etch上安装和使用它,包括为您自己的域创建区域。

本文档不附带任何形式的保证! 我想说,这不是设立这样一个制度的唯一办法。 实现这一目标有很多方法,但这是我所采取的方式。 我不会保证这将为您工作!

1安装Unbound

因为没有Debian软件包可用,我们必须从源安装Unbound。 首先我们安装先决条件:

apt-get install build-essential libssl-dev

然后我们下载并安装Unbound如下:

cd /tmp
wget http://www.unbound.net/downloads/unbound-latest.tar.gz
tar xvfz unbound-latest.tar.gz
cd unbound-1.0.0/
./configure
make
make install

接下来,我们创建一个名为unbound的用户和组:

groupadd unbound
useradd -d /var/unbound -m -g unbound -s /bin/false unbound

我们将使用目录/ var / unbound作为UnboundNameservers的主目录 - 它将包含Unbound配置,出于安全原因,Unbound将运行chroot。

接下来我们下载根Nameservers列表:

cd /var/unbound
wget ftp://ftp.internic.net/domain/named.cache

然后我们创建目录/ var / unbound / var / run ,它将保存Unbound PID文件unbound.pid ,并为其创建一个符号链接/var/run/unbound.pid

mkdir -p /var/unbound/var/run
chown -R unbound:unbound /var/unbound
ln -s /var/unbound/var/run/unbound.pid /var/run/unbound.pid

要启动/停止/重启Unbound,我们需要一个像这样的init脚本:

vi /etc/init.d/unbound
#!/bin/sh
#
# unbound        This shell script takes care of starting and stopping
#                unbound (DNS server).

exec="/usr/local/sbin/unbound"
prog="unbound"
config="/var/unbound/unbound.conf"
pidfile="/var/run/unbound.pid"
rootdir="/var/unbound"

case "$1" in
    start)
        [ -x $exec ] || exit 5
        [ -f $config ] || exit 6
        echo -n $"Starting $prog: "

        # setup root jail
        if [ -s /etc/localtime ]; then
            [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ;
            if [ ! -e ${rootdir}/etc/localtime ] || /usr/bin/cmp -s /etc/localtime ${rootdir}/etc/localtime; then
                cp -fp /etc/localtime ${rootdir}/etc/localtime
            fi;
        fi;
        if [ -s /etc/resolv.conf ]; then
            [ -d ${rootdir}/etc ] || mkdir -p ${rootdir}/etc ;
            if [ ! -e ${rootdir}/etc/resolv.conf ] || /usr/bin/cmp -s /etc/resolv.conf ${rootdir}/etc/resolv.conf; then
                cp -fp /etc/resolv.conf ${rootdir}/etc/resolv.conf
            fi;
        fi;
        if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then
            [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ;
            [ -e ${rootdir}/dev/log ] || touch ${rootdir}/dev/log
            mount --bind -n /dev/log ${rootdir}/dev/log >/dev/null 2>&1;
        fi;
        if ! egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then
            [ -d ${rootdir}/dev ] || mkdir -p ${rootdir}/dev ;
            [ -e ${rootdir}/dev/random ] || touch ${rootdir}/dev/random
            mount --bind -n /dev/random ${rootdir}/dev/random >/dev/null 2>&1;
        fi;

        # if not running, start it up here
        start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config
        echo
        ;;

    stop)
        echo -n $"Stopping $prog: "
        start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile
        echo
        if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/log' /proc/mounts; then
            umount ${rootdir}/dev/log >/dev/null 2>&1
        fi;
        if egrep -q '^/[^[:space:]]+[[:space:]]+'${rootdir}'/dev/random' /proc/mounts; then
            umount ${rootdir}/dev/random >/dev/null 2>&1
        fi;
        ;;

    restart)
        start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile
        start-stop-daemon --start --quiet --pidfile $pidfile --exec $exec -- -c $config
        ;;

    reload)
        start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec
        ;;

    force_reload)
        start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $pidfile --exec $exec
        ;;

    *)
        echo $"Usage: $0 {start|stop|restart|reload|force-reload}"
        exit 2
        ;;
esac

exit 0

使脚本可执行并为其创建系统启动链接:

chmod 755 /etc/init.d/unbound
update-rc.d unbound defaults

这就是安装。

2配置不绑定

现在我们创建Unbound配置文件/var/unbound/unbound.conf 。 您可以在/tmp/unbound-1.0.0/doc/example.conf中找到一个示例配置文件,其中有很多解释。 您也可以访问http://www.unbound.net/documentation/unbound.conf.html了解有关Unbound配置的更多信息。

在以下配置中,我添加了我要在UnboundNameservers上托管的域的两个区域( example.comexample.net )。 如果您熟悉BINDNameservers,您可以非常快速地学习Unbound语法。 根据需要调整区域,如果只需要本地解析器,则将其保留:

vi /var/unbound/unbound.conf
server:
        verbosity: 1
        interface: 0.0.0.0
        port: 53
        do-ip4: yes
        do-ip6: yes
        do-udp: yes
        do-tcp: yes
        do-daemonize: yes
        access-control: 0.0.0.0/0 allow
        #access-control: 0.0.0.0/0 refuse
        #access-control: 127.0.0.0/8 allow
        chroot: "/var/unbound"
        username: "unbound"
        directory: "/var/unbound"
        use-syslog: yes
        pidfile: "/var/run/unbound.pid"
        root-hints: "/var/unbound/named.cache"

        local-zone: "example.com." static
        local-data: "example.com. 86400 IN NS ns1.hostingcompany.com."
        local-data: "example.com. 86400 IN NS ns2.hostingcompany.com."
        local-data: "example.com. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400"
        local-data: "example.com. 86400 IN A 1.2.3.4"
        local-data: "www.example.com. 86400 IN CNAME example.com."
        local-data: "mail.example.com. 86400 IN A 1.2.3.4"
        local-data: "example.com. 86400 IN MX 10 mail.example.com."
        local-data: "example.com. 86400 IN TXT v=spf1 a mx ~all"

        local-zone: "example.net." static
        local-data: "example.net. 86400 IN NS ns1.hostingcompany.com."
        local-data: "example.net. 86400 IN NS ns2.hostingcompany.com."
        local-data: "example.net. 86400 IN SOA ns1.hostingcompany.com. hostmaster.hostingcompany.com. 2008052201 28800 7200 604800 86400"
        local-data: "example.net. 86400 IN A 1.2.3.4"
        local-data: "www.example.net. 86400 IN CNAME example.net."
        local-data: "mail.example.net. 86400 IN A 1.2.3.4"
        local-data: "example.net. 86400 IN MX 10 mail.example.net."
        local-data: "example.net. 86400 IN TXT v=spf1 a mx ~all"

我在这里使用了接口:0.0.0.0 ,这意味着Unbound在所有网络接口上监听,而access-control:0.0.0.0/0允许任何人可以连接到Unbound。 例如,如果你想让localhost被允许连接,你会使用

[...]
        access-control: 0.0.0.0/0 refuse
        access-control: 127.0.0.0/8 allow
[...]

代替。

要检查Unbound配置的语法是否正确,可以使用unbound-checkconf命令:

unbound-checkconf /var/unbound/unbound.conf
server1:~# unbound-checkconf /var/unbound/unbound.conf
unbound-checkconf: no errors in /var/unbound/unbound.conf
server1:~#

如果语法确定,您最终可以启动Unbound:

/etc/init.d/unbound start

要了解有关Unbound的更多信息,请参阅Unbound文档

3链接

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏