ubuntu下Bind9安装配置指南

发布时间:2020-07-26编辑:脚本学堂
本指南是写给那些想学习如何配置和维护DNS服务器的人,例如为某个网络或者DNS zones(DNS域)提供 Domain Name(域名)服务。

Slave Server(从服务器)

首先,在主服务器上,您必须允许域可以传输。这个在 /etc/bind/named.conf.local 中域定义的示例如下所示:
 

复制代码 代码如下:

[...]

zone "example.com" {
type master;
file "/etc/bind/db.example.com";
allow-transfer {
@ip_slave;
};
};

[...]

在从服务器上,您还必须象主服务器上一样做同样处理。然后编辑 /etc/bind/named.conf.local 并为域添加下列声明:
 

复制代码 代码如下:

[...]

zone "example.com" {
type slave;
file "/etc/bind/db.example.com";
masters { @ip_master; };
};

[...]

重启服务器,您将在 /var/log/syslog 类似下面的提示:
syslog.5.gz:May 14 23:33:53 smith named[5064]: zone example.com/IN: transferred serial 2006051401
syslog.5.gz:May 14 23:33:53 smith named[5064]: transfer of 'example.com/IN' from 10.0.0.202#53: end of transfer

Chrooting BIND9

Chrooting BIND9 从安全角度来说是被推荐的安装。在 chroot 环境中,BIND9 可以访问所有它所需的文件和硬件,但不能访问它所不需要的。
要 chroot BIND9,只需为它创建一个 chroot 环境并在下面添加额外配置。

The Chroot Enviroment(Chroot 环境)

创建下面目录结构
 

复制代码 代码如下:
$ sudo mkdir -p /chroot/named
$ cd /chroot/named
$ sudo mkdir -p dev etc/namedb/slave var/run

为 chroot 环境设置权限
 

复制代码 代码如下:
$ sudo chown root:root /chroot
$ sudo chmod 700 /chroot
$ sudo chown bind:bind /chroot/named
$ sudo chmod 700 /chroot/named

创建或移动 bind 配置文件。
 

复制代码 代码如下:

$ sudo touch /chroot/named/etc/named.conf

$ sudo cp /etc/named.conf /chroot/named/etc

将 /chroot/named/etc/namedb/slave 目录的写权限赋予 bind 用户。
$sudo chown bind:bind /chroot/named/etc/namedb/slave

所有的从域将放置在此处。这样可以增强安全性,如果攻击者得到了 bind 用户的权限,他们也没有办法修改您的主域文件。因此在 /chroot/named/etc/named.conf 文件中的所有的从文件名都必须带着指向从目录的目录名。下面列出了一个域定义的示例:
 

复制代码 代码如下:
zone “my.zone.com.” {
type slave;
file “slaves/my.zone.com.dns”;
masters {
10.1.1.10;
};
};

创建 BIND9 的环境
 

复制代码 代码如下:
$ sudo mknod /chroot/named/dev/null c 1 3
$ sudo mknod /chroot/named/dev/random c 1 8

给 bind 用户访问 /chroot/named/var/run 目录的权限,该目录用于保存 PID 和状态数据
 

复制代码 代码如下:
$ sudo chown bind:bind /chroot/named/var/run

(BIND9 的配置)

在 /etc/default/bind9 中编辑 bind 启动选项。原来选项如下:
 

复制代码 代码如下:
/etc/default/bind9:
OPTIONS=”-u bind”
现在改为
/etc/default/bind9:
OPTIONS="-u bind -t /var/named -t /chroot/named -c /etc/named.conf"

选项 -t 将 bind 操作的根目录改成 /chroot/named,选项 -c 则告诉 bind 配置文件在 /etc/named.conf。记住用 -t 设置的是相对路径

named.conf 文件也必须接受额外的选项以便正常运行,下面是最小的选项集:
/chroot/named/etc/named.conf:
 

复制代码 代码如下:
options {
directory "/etc/namedb";
pid-file "/var/run/named.pid";
statistics-file "/var/run/named.stats";
};

(Ubuntu 的 syslogd 守护进程配置)
/etc/init.d/sysklogd:
[...]

SYSLOGD="-u syslog -a /chroot/named/dev/log"

[...]

(注意:检查该配置)
Restart the syslog server and BIND9(重启 syslog 服务及 BIND9)
 

复制代码 代码如下:
$ sudo /etc/init.d/sysklogd restart
$ sudo /etc/init.d/bind9 restart

这里,您要检查 /var/log/messages 是否有 bind 引起的错误。

(开始、停止和重启 BIND9)

复制代码 代码如下:

使用下列命令开始 BIND9:
$ sudo /etc/init.d/bind9 start

停止它,使用:
$ sudo /etc/init.d/bind9 stop

最后,要重启它,运行:
$ sudo /etc/init.d/bind9 restart

Status(状态)
要检查您的 BIND9 安装状态:
 

复制代码 代码如下:
$ host $record localhost

$ dig $record @localhost

(在这里 localhost 是您安装 BIND9 的系统。如果不要 localhost,那么使用适当的 IP 地址。)

您可以从 Universe 库中安装 bindgraph 包(要激活 Universe 库 - 请参见 AddingRepositoriesHowto),并用它来监视您的 BIND9 服务器的使用,配置细节可以在 bindgraph README 文档中找到。