DNS服务安装配置

####################################################

# 安装

####################################################

groupadd named

useradd -g named -d /usr/local/etc/named -s /sbin/nologin named

cd /home/pkg/

wget ftp://ftp.isc.org/isc/bind9/9.3.0/bind-9.3.0.tar.gz

tar zxvf bind-9.3.0.tar.gz

cd bind-9.3.0

./configure --prefix=/usr/local --mandir=/usr/local/share/man

make

make install

####################################################

# 配置:

####################################################

当安装完毕后,bind并不能立即使用,这是因为还有些配置文件没有配置。我们将举些简单的配置作为例子。

在标准安装,有一个 named.conf文件, 一个rndc.conf文件,和一个namedb 目录,该目录包含 localhost.rev文件。我们安装这些到“/usr/local/etc”目录。如果该目录不存在,就先创建一个:

mkdir /usr/local/etc

同样,我们还需要创建一个“namedb”目录:

mkdir /var/namedb

现在,我们编辑“named.conf”文件。我们以后可以添加更多的内容,但现在它看起来是这样的

options {

directory "/var/namedb"; // 工作目录

pid-file "named.pid"; // 放pid文件到工作目录,否则pid文件在/var/run目录

};

zone "." {

type hint;

file "named.root";

};

// 提供loopback地址127.0.0.1的反向地址映射

zone "0.0.127.in-addr.arpa" {

type master;

file "localhost.rev";

notify no;

};

zone "173.76.207.in-addr.arpa" in { type master; file

"db.207.76.173";notify no; };

//注意上面和下面形式不同的例子实际上完成的是一样的功能。

zone "bind.com" {

type master;

file "bind.com.zone";

notify no;

};

其中named.root(有时也称为named.cache,都是指的同一个东西,大家的习惯不同嘛)中包含的是目前全球顶级域名服务器地址信息,该文件有可能会随着时间的推移而变得过时了,需要我们定期去网上更新。这里是internic提供的免费下载的named.root,该文件的信息总是最新的。

wget ftp://ftp.internic.net/domain/named.root

mv named.root named/named.root

下面,我们创建localhost.rev文件。该文件看起来是这样的:

$TTL 3600

@ IN SOA user1.bind.com. hostmaster.bind.com.

(

1 ; Serial ; Increment by one after every change

3600 ; Refresh every hour

900 ; Retry every 15 minutes

3600000 ; Expire 1000 hours

3600 ) ; Minimum 1 hour


IN NS nameserv1.bind.com.

IN NS nameserv2.bind.com.


1 IN PTR localhost.

你也可以下载localhost.rev文件,并将下载的文件放置到/var/namedb目录中:

mv localhost.rev /var/namedb

下面我们创建rndc.conf文件,并用它补充named.conf文件。rndc.conf 文件可以通过程序自动创建。我们先改变目录至/usr/local/etc :

cd /usr/local/etc

我们使用rndc-confgen产生该配置文件

/usr/local/sbin/rndc-confgen > rndc.conf

rndc.conf文件也包括一些必须加入到named.conf的行。我们可以通过下面命令自动将这些行加到named.conf文件中:

tail -n10 rndc.conf | head -n9 | sed -e s/#\ //g >> named.conf

或者把如下一行加到named.conf文件最后

include "/usr/local/etc/rndc.key";

然后

tail -n10 rndc.conf | head -n9 | sed -e s/#\ //g > rndc.key

现在,我们可以准备运行bind了。首先我们先在console上通过命令运行:

/usr/local/sbin/named -u named -gc /usr/local/etc/named.conf &

在出现一些信息后,将最后显示一行为“running”。

使用如下命令:

/usr/local/sbin/rndc -c /usr/local/etc/rndc.conf status

它将显示我们服务器已经运行了,显示如下:

number of zones: 43

debug level: 0

xfers running: 0

xfers deferred: 0

soa queries in progress: 0

query logging is OFF

recursive clients: 0/1000

tcp clients: 0/100

server is up and running

查看dns服务:

tcpdump port 53 -n

或者ps aux|grep named

bind启动后,我们可以用rndc来控制bind的运行、重新调配置文件,而不再需要野蛮地用kill对付bind了。

下面附上几个配置文件,供参考,对于我们的dns只需要把现有的dns里面的一台的配置文件和db库文件复制过来即可。

####################################################

# 配置文件(named.conf)

####################################################

acl internals { 192.168.0.0/16; 210.78.136.34; 202.99.88.192/26; };

options {

version "Hello,this is my DNS.Welcome to u :)";

directory "/usr/local/etc/named";

pid-file "named.pid";

forwarders { 202.106.196.115; 211.94.65.97; };

// forward only;

// recursion no;

allow-query { any; };

allow-recursion { internals; };

allow-transfer { internals; };

// listen-on { 192.168.10.2; };

// listen-on port 53 { 192.168.10.2; };

};

controls {

inet 127.0.0.1 allow { localhost; } keys { rndc-key; };

};

include "/usr/local/etc/rndc.key";

# 日志

/*

logging {

category "default" { "default_syslog"; "default_debug"; };

category "unmatched" { "null"; };

channel "default_syslog" {

syslog daemon;

severity info;

};

channel "default_debug" {

file "default_debug.log";

severity dynamic;

};

channel "null" { null; };

};

*/

# 根域

# ftp://ftp.internic.net/domain/named.cache

# ftp://rs.internic.net/domain/named.cache

zone "." {

type hint;

file "named.cache";

};

# 本地域

zone "localhost" {

type master;

file "localhost.zone";

notify no;

};

zone "0.0.127.in-addr.arpa" {

type master;

file "0.0.127.in-addr.arpa.zone";

notify no;

};

# 主域

zone "xyz.com" {

type master;

file "xyz.com.zone";

allow-transfer { 192.168.10.1; };

};

zone "10.168.192.in-addr.arpa" {

type master;

file "10.168.192.in-addr.arpa.zone";

allow-transfer { 192.168.10.1; };

};

# 辅域

zone "abc.com" {

type slave;

file "abc.com.zone";

masters { 192.168.100.1; };

};

zone "100.168.192.in-addr.arpa" {

type slave;

file "100.168.192.in-addr.arpa.zone";

masters { 192.168.100.1; };

};

####################################################

# 本地域文件(named/localhost.zone)

####################################################

$TTL 86400

@ IN SOA @ root.localhost (

1 ; serial

28800 ; refresh

7200 ; retry

604800 ; expire

86400 ; ttl

)

IN NS localhost.

@ IN A 127.0.0.1

####################################################

# 本地域反向解析文件(named/0.0.127.in-addr.arpa.zone)

####################################################

$TTL 86400

@ IN SOA localhost. root.localhost (

1 ; serial

28800 ; refresh

7200 ; retry

604800 ; expire

86400 ; ttk

)

@ IN NS localhost.

1 IN PTR localhost.

####################################################

# 主域文件(named/xyz.com.zone)

####################################################

$TTL 86400

@ IN SOA ns2.xyz.com. postmaster.xyz.com. (

1 ; serial

28800 ; refresh

7200 ; retry

604800 ; expire

86400 ; ttl

)

IN NS ns1.xyz.com.

IN NS ns2.xyz.com.

IN MX 10 mail.xyz.com.

IN A 192.168.10.3

ns1 IN A 192.168.10.1

ns2 IN A 192.168.10.2

www IN A 192.168.10.3

mail IN A 192.168.10.4

win IN CNAME www.xyz.com.

lin IN CNAME www.xyz.com.

####################################################

# 主域反向解析文件(named/10.168.192.in-addr.arpa.zone)

####################################################

$TTL 86400

@ IN SOA ns2.xyz.com. postmaster.xyz.com. (

1 ; serial

28800 ; refresh

7200 ; retry

604800 ; expire

86400 ; ttk

)

IN NS ns1.xyz.com.

IN NS ns2.xyz.com.

1 IN PTR ns1.xyz.com.

2 IN PTR ns2.xyz.com.

3 IN PTR www.xyz.com.

4 IN PTR mail.xyz.com.

3 IN PTR xyz.com.

3 IN PTR win.xyz.com.

3 IN PTR lin.xyz.com.

####################################################

# 防火墙设置

####################################################

###################################################

# 运行DNS

###################################################

chown -R named.named /var/namedb

/usr/local/sbin/named-checkconf

/usr/local/sbin/named-checkzone xyz.com /var/namedb/xyz.com.zone

/usr/local/sbin/named -u named -gc /usr/local/etc/named.conf

/usr/local/sbin/named -u named -c /usr/local/etc/named.conf

/usr/local/sbin/rndc -c /usr/local/etc/rndc.conf status

注:修改主区域文件后,要把serial设为更大的值


可以把如下加入到/etc/rc/local实现开机自动启动named

/usr/sbin/named -u named -gc /usr/local/etc/named.conf

修改dns的db文件后只需要/usr/local/sbin/rndc reload即可。

echo "/usr/local/sbin/named -u named -gc /usr/local/etc/named.conf &" >> /etc/rc.local