2007年3月27日星期二

Bind 域名服务器的配置

Bind是一款开放源码的DNS服务器软件,Bind是由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain。它是目前世界上使用最为广泛的DNS服务器软件,支持各种Unix平台和Windows平台。FreeBSD6.1-stable版本在安装时会自动将该软件安装。
Bind包含了一个叫named的后台进程和resolver库。Bind服务器在后台运行时,通过众所周知的端口提供服务。UDP(User Datagram Protocol)和TCP(Transmission ControlProtocol)在DNS 中的标准端口通常是53,可在/etc/services中设置。
resolver(DNS client程序)就是一系列驻留在系统库中的程序,用来提供出其它程序来访问DNS 服务的端口。

启动53号端口

[root@root]# cd /etc/defaults
[root@root /etc/defaults]# vi rc.conf


进入FreeBSD系统后,输入如上命令,在打开的文件中找到如下的记录行:

named_enable="NO" # Run named, the DNS server (or NO).
named_program="/usr/sbin/named" # path to named, if you want a different one.
#named_flags="" # Flags for named
named_pidfile="/var/run/named/pid" # Must set this in named.conf as well
named_uid="bind" # User to run named as
named_chrootdir="/var/named" # Chroot directory (or "" not to auto-chroot it)
named_chroot_autoupdate="YES" # Automatically install/update chrooted
# components of named. See /etc/rc.d/named.
named_symlink_enable="YES" # Symlink the chrooted pid file

将之复制到/etc/rc.conf,并修改named_enable=“yes”,若要在系统启动时,域名服务自动启动,将named_flags=””前的“#”去掉。
保存rc.conf文件后,输入如下命令,启动域名服务:

[root@root /etc]# /etc/rc.d/named start

输入如下命令, 可查看53号端口是否启动,若端口为53号的处于listen状态,则成功启动。

[root@root /etc]# netstat –aln |grep 53


添加zone
假设这里配置的域名为example.net
输入如下命令:

[root@root ]# cd /etc/namedb
[root@root /etc/namedb]# vi namedb.conf

在该文件中,我们可以看到如下的记录行:

options {
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";

说明:
directory:域名服务器的工作目录。
pid_file:把DNS进程文件加入到工作目录中。
在文件中加入如下记录:

zone "example.net" {
type master;
file "master/example.net.db";
};

说明:
type:是域名的类型。
file :则是表示该域的DNS数据库文件名及其存储位置,这要结合前面的directory来设置。“master/example.net.db”则表示该文件在/etc/namedb/master下。

建立域example.net的DNS数据库
一个域的DNS数据库是由该域的主名字服务器的系统管理员维护的一个文本文件集合,这些文本文件成为区文件,就是在“named.conf”中定义的file。它们包括两种类型的项:分析器命令(如$TTL)和资源记录(Resource Records)。资源记录是数据库的真实部分,而分析命令只是提供输入记录的一些简便途径。
资源记录的基本格式:
[name] [ttl] [class] type data
name字段:表示一个主机或者一个域。
ttl字段:以秒为单位,存活时间,与TCP/IP中的TTL差不多含义,但在网络TTL是指跳数。在Bind中,用$TTL指令。一般将存活时间设为一周,这样,可以减少网络流量和DNS的负载。
class字段:一般都使用“IN”,对应的是internet。
type字段:有SOA、A、NS、PTR、MX、CNAME等。
data字段:根据type字段不同而不同。
用如下命令打开域exmple.net的DNS数据库的文本文件example.net.db:

[root@root]# vi /etc/namedb/master/example.net.db

添加如下记录:

$TTL 3h
example.net. IN SOA start.example.net. end.example.net.(
2 ;Serial
3h ;Refresh, 3 hours
1h ;Retry, 1 hour
1w ;Expire, 1 week
2h ;Minimum, 2 hours
)
example.net. IN NS start
ww IN A 127.0.0.1
www IN A 172.16.237.208
start IN A 172.16.237.208
end IN A 172.16.237.208

说明:
SOA记录:每个区仅有一个SOA记录,该区一直延伸到遇见另有个SOA记录为止。SOA记录包括该区的名字,联系方式和各种不同的超时值。
example.net.:因为在上面named.conf中添加的zone语句指定的名字是example.net(后面的“.”不可忘);可以在这个区文件中使用 $ORIGIN分析器指令进行更改,也可以用“@”简写。
IN:class字段。
start.example.net.:该区的主名字服务器(后面的“.”不可忘记)。
end.example.net.:域管理员的邮箱。它之后的圆括号用来让SOA记录跨越几行。
第一个数值2:Serial,代表该区的序列号,更新数据文件必须更新这个区的序列号,否则从服务器将不更新。
第二个数值3h:Refresh,指定多长时间从服务器要与主服务器进行核对。
第三个数值1h:Retry,代表如果从服务器试图检查主服务器的序列号时,主服务器没有响应,则经过1hour重新检查。
第四个数值1w:Expire,决定从服务器在没有主服务器的情况下持续提供域数据服务的时间长短。
第五个数值2h:Minimum,指高速缓存否定回答的存活时间(可能指客户机如果要解析某台服务器的IP,而这台服务器是不代表客户查询的存活时间)。
上面所说明的都属于SOA记录。
NS记录:识别一个区有权威性的服务器(即所有主服务器和从服务器),并把子域委托给其他机构。
A记录:是DNS数据库的核心。一个主机必须为它的每个网络接口得到一条A记录。所以在本设计中都采取更新A记录。
执行named命令,重新启动DNS服务:

[root@root /etc]# /etc/rc.d/named restart


用nslookup查看配置好的域名

[root@root /etc/namedb/master]# nslookup
> server 172.16.237.208
Default server: 172.16.237.208
Address: 172.16.237.208#53
> www.example.net
Server: 172.16.237.208
Address: 172.16.237.208#53
Name: www.example.net
Address: 172.16.237.208
>

至此,一个简单的域名服务器配置好。

没有评论 :

发表评论