今天做了一个比较简单的正向解析的DNS服务,只要了解了DNS服务里面配置文件的意思那么做起来就很简单了。下面开始切入正题。

Bind是Berkeley Internet Name Domain Service的简写,它是一款实现DNS服务器的开放源码软件。Bind原本是美国DARPA资助伯克里大学(Berkeley)开设的一个研究生课题,后来经过多年的变化发展,已经成为世界上使用最为广泛的DNS服务器软件,目前Internet上绝大多数的DNS服务器有都是用Bind来架设的。 

DNS服务介绍:

后台进程:named 
脚本:/etc/rc.d/init.d/named 
使用端口:53(tcp,udp) 
所需RPM包:bind-9.3.3-10.el5 
相关RPM包:bind-chroot   

caching-nameserver 
配置文件:/var/named/chroot/etc/named.conf 
相关路径:/var/named/ 

1990年以后,bind-chroot增加了bind服务器的安全性,早期Linux服务都是以root权限启动和运行的,随着技术的发展,各种服务变得越来越复杂,导致BUG和漏洞越来越多。***利用服务的漏洞***系统,能获得root级别的权限,从而控制整个系统。 
为了减缓这种***所带来的负面影响,现在服务器软件通常设计为以root权限启动,然后服务器进程自行放弃root,再以某个低权限的系统账号来运行进程。这种方式的好处在于该服务被***者利用漏洞***时,由于进程权限很低,***者得到的访问权限又是基于这个较低权限。 

bind的主配置文件/etc/named.conf ,我们先安装bind服务器 

bind-9.3.3-10.el5.i386.rpm 
bind-libbind-devel-9.3.3-10.el5.i386.rpm 
bind-sdb-9.3.3-10.el5.i386.rpm 
bind-devel-9.3.3-10.el5.i386.rpm 
caching-nameserver-9.3.3-10.el5.i386.rpm 
bind-chroot-9.3.3-10.el5.i386.rpm

bind的配置文件默认是没有的,需要自己手写,但是很多,容易写错,所以我们安装模板文件,然后来修改。由于安装了chroot环境,所以我们的/etc/named.conf  应该在/var/named/chroot/etc/ 目录。

cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf

 

 

 

编辑named.conf这个文件,把文件里面多余的东西删除了,只剩下红色中的内容,然后我们来写

[root@www /]# cat /var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 192.168.55.201; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { 192.168.55.0/24; };
};

先检查主机的名字,使用hostname 

[root@www /]# hostname
www.bolin.com

我修改我的主机名为:www.bolin.com  .这里我们要用FQDN样式把你们的主机名改改,这里很重要。linux的主机名要修改3个地方不知道大家还记得不。

www.bolin.com
[root@www /]# vi /etc/hosts

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               www.bolin.com
::1            localhost6.localdomain6localhost6                              

[root@www /]# vi /etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=www.bolin.com                  我们把这里也要改过来

修改完了我们继续:

我们以bolin.com 这个二级域名来建一个域名服务器

全局配置(options )  
options 语句在每个配置文件中只有一个。如果出现多个options, 则第一个options 的配置有效,并会产生一个警告信息。

listen-on port 53 { 127.0.0.1; };

监听端口,修改成自己的IP地址,如果有多个IP,就写多个,每行要以;结束。

directory       "/var/named";

zone文件的存放目录,这里的/var/named 是相对目录,在chroot环境下/var/named目录下。

allow-query     { localhost; }; 

允许查询的client,我们修改成本地网段192.168.55.0/24  如下:

[root@www /]# cat var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 192.168.55.201; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { 192.168.55.0/24; };
};

下面我们开始写zone文件 

区域配置(zone ) 

zone 语句作用是定义DNS 区域,在此语句中可定义DNS 区域选项 

zone区域设置,第一步,设置根区域 

当DNS服务器处理递归查询时,如果本地区域文件不能进行查询的解析,就会转到根DNS服务器查询,所以在主配置文件named.conf文件中还要定义根区域。 
zone "." IN {  
type hint; 
file "named.ca";  
}; 
type:设置域的类型 
file:设置根服务列表文件名

 

继续,指定正向解析的配置文件

记住,bind对配置文件要求很严格,就算是有些地方多了个空格,服务器都可能启动不了。

下面我直接贴出我name.conf里面配置文件的内容然后在给大家解释代表什么意思:如下

 

[root@www /]# cat var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 192.168.55.201; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        query-source    port 53;
        query-source-v6 port 53;
        allow-query     { 192.168.55.0/24; };
};

zone "." IN {
        type hint;
        file "named.ca";
};
 
zone "bolin.com" IN {
        type master;
        file "bolin.com.zone";
};

上面红字标出的是一个简单的name.conf文件。修改完毕保存后我们去修改区别文件,添加记录。

cp /var/named/chroot/var/named/localhost.zone /var/named/chroot/var/named/bolin.com.zone

bolin.com.zone  是你刚才在name.conf里面定义的名字,这个要注意                                                       

然后编辑区域文件,添加记录:    

[root@www /]# vi var/named/chroot/var/named/bolin.com.zone

$TTL    86400
@               IN SOA  www.bolin.com       root.bolin.com. (
                                2011040701              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

@               IN NS           www.bolin.com.
www             IN A            192.168.55.201
@               IN mx 5         www.bolin.com.
mail            IN A            192.168.55.88

TTL是生存期,单位是秒 

$TTL是全局定义的 

第二行 SOA记录,@取代在/etc/named.conf中指定的域名。 

SOA段中的数字,分别为:序列号、刷新、重试、过期、生存期

序列号:序列号用于DNS数据库文件的版本控制。每当数据被改变,这个序列号就应该被增加。 
刷新:从服务器向主服务器查询最新数据的间隔周期。每一次检查时从服务器的数据是否需要更改,则根据序列号来判别。 
重试:一旦从服务器尝试连接主服务器失败,下一次查询主服务器的延迟时间。 
过期:如果从服务器无法连通主服务器,则在经过此时间后,宣告其数据过期。 
生存期:服务器回答 ‘无此域名’ 的间隔时间。

数字的默认单位为秒。否则:W= 周、D= 日、H= 小时、M= 分钟。

IN 是internet记录 

SOA 是SOA 初始化记录,我们说的是初始授权记录,这个翻译不过,理解很多反正知道是那个意思就行了

www.bolin.com. 是DNS服务器的名称 

root.bolin.com. 是管理员的邮箱地址 

第一个:NS (name server)  设置域名服务器的域名    然后再添加一个MX邮件交换记录。   然后保存退出。正向解析文件就写完了。

下一步就可以启动DNS服务了。

先修给下你自己的DNS:[root@www /]# vi /etc/resolv.conf

search localdomain

nameserver 192.168.55.201

完成后启动DNS服务:service named restart

                                               

我们现在来测试我们的DNS 

dig -t soa michael.com

dig -t mx michael.com

这是dig 工具,查询 michael.com域中的SOA记录和MX记录

[root@www /]# dig -t soa www.bolin.com

; <<>> DiG 9.3.4-P1 <<>> -t soa www.bolin.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55108
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;www.bolin.com.                 IN      SOA

;; AUTHORITY SECTION:
bolin.com.              86400   IN      SOA     www.bolin.com.bolin.com. root.bolin.com. 2011040701 10800 900 604800 86400

;; Query time: 11 msec
;; SERVER: 192.168.55.201#53(192.168.55.201)
;; WHEN: Sat Mar 19 20:16:44 2011
;; MSG SIZE  rcvd: 86

[root@www /]# 

nslookup 也可以 和WIN下面是一样的用法

[root@www /]# nslookup www.bolin.com
Server:         192.168.55.201
Address:        192.168.55.201#53

Name:   www.bolin.com
Address: 192.168.55.201

OK啦 ~~~ 看到没  DNS服务搭建就到这里了当你明白每个配置文件里面内容的意思以后就会发现其实很简单。