在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.com
和example.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链接
- Unbound: http : //www.unbound.net/index.html
- Debian: http : //www.debian.org