用BIND建立DNS服务器

DNS (域名解析服务) 是将 IP 地址与 FQDN(fully qualified domain name,全称域名) 相互转换的一种 Internet 服务。通过DNS,人们可以无需记忆 IP 地址。运行 DNS 的计算机称作 域名服务器。DNS是网络服务的基础,感觉即简单又繁琐,有点琢磨不透的感觉。

一、DNS域名解析简要过程
比如客户机clinet向本地域名服务器ns请求解析www.abc.com.cn的简要过程:
1、clinet向ns请求解析www.abc.com.cn 。
2、ns收到请求后,先查询本地的缓存。如果有对应的信息记录,则直接返回结果给client.如果没有该记录,ns就向根域名服务器发起请求。 
3、根域名服务器就把cn这个顶级域名服务器的地址返回给ns。 
4、ns再向cn发送请求。 
5、接着cn域名服务器把com的域名服务器地址发回给ns。 
6、ns再向com发送请求。 
7、接着com域名服务器把abc 的域名服务器地址发回给ns。 
8、最后,由abc的域名服务器把对应的IP地址发回给ns,然后ns将返回的结果发给客户机。并保存到缓存中以便下次再次接到请求可以快速反应。

二、安装BIND服务套件
在终端提示符后输入以下命令来安装 dns:
sudo apt-get install bind9

三、相关配置文件
安装完BIND后,在/etc/bind目录存储配置文件,主要有以下三个以及其他域名对应的资源记录文件:
/etc/bind/named.conf
/etc/bind/named.conf.options
/etc/bind/named.conf.local
其中主配置文件是/etc/bind/named.conf。

四、主配置文件/etc/bind/named.conf
该文件包含有根区域的栏目,该栏目里面用file指定的/etc/bind/db.root文件里面存有世界上的13处根域名服务器的信息。这是域名服务器很重要的信息。另外,也包括了localhost等本地区域信息。 
该文件除了包含这些必要的、不必更改的区域栏目外,还用include行包含了其他的配置文件。比如: 
include "/etc/bind/named.conf.options"; 
该行加载的配置文件,包括directory、forwarders、query-source等常用的参数,我们可以在这个文件里更改这些配置。 

include "/etc/bind/named.conf.local"; 
该行加载的配置文件用来让我们配置个性化的DNS。
如果我们要修改部分选项参数,可以只修改options文件,如果要添加区域则可以只修改local文件。这样感觉比较有层次感、比较清晰、明朗,在修改的时候比较不会显得杂乱。

五、选项参数文件/etc/bind/named.conf.options
比如里面的    directory "/var/cache/bind"; 
指出了默认的工作目录是/var/cache/bind目录。这个目录是存放区域资源记录文件的默认目录。也就是说,如果你在区域块里面的file关键字指定的文件名如果没有包含文件的绝对地址的话,那就默认该文件存放在这里了。

六、本地区域配置文件/etc/bind/named.conf.local
如果我们要添加区域,可以直接在这个文件添加相应的区域块,比如:
zone "zkw.com" { 
type master; 
file "/etc/bind/db.zkw.com"; 
}; 

zone "cassati.com" { 
type master; 
file "/etc/bind/db.cassati.com"; 
}; 
这样就添加了zkw.com、和cassati.com这两个域名了。其中这俩域名的资源记录文件都存放在/etc/bind目录底下,并没有存放到工作目录/var/cache/bind底下,这完全取决于个人爱好。

七、资源记录文件/etc/bind/db.zkw.com
这个文件需要我们手工添加,当然我们可以从db.local中复制过来修改就可以。需要注意的是这个文件的文件名就是我们在named.conf.local里面的file关键字指定的。
以下是该文件的内容:
$TTL    604800 
@    IN    SOA    fh root.zkw.com. ( 
2010053110         ; Serial 
60        ; Refresh 
86400        ; Retry 
2419200        ; Expire 
604800 )    ; Negative Cache TTL 
;定义域名服务器
@    IN    NS    fh 

;定义A记录和别名记录
fh    IN    A       192.168.56.1 
www    IN    CNAME    fh 

;定义A记录和别名记录
server    IN    A    192.168.56.3 
www1    IN    CNAME    server 

;定义A记录
fedora    IN    A    192.168.56.5 

@    IN    AAAA    ::1 

这样,通过www.zkw.com就可以访问到192.168.56.1,通过www1.zkw.com可以访问到192.168.56.3,而通过fedora.zkw.com则可以访问到192.168.56.6。该文件的各个条目的详解请参考接下来的“bind中DNS的记录详解”。
其中的:
fh    IN    A       192.168.56.1 
www    IN    CNAME    fh 
这两条记录我们可以写成:
fh.zkw.com.    IN    A       192.168.56.1 
www.zkw.com.  IN    CNAME    fh.zkw.com.
也就是相对域名与绝对域名的差别。

八、bind中DNS的记录详解
以下转自中国开源项目http://www.opensourceproject.org.cn/article.php?id=682
A记录
A记录代表"主机名称"与"IP"地址的对应关系, 作用是把名称转换成IP地址
DNS使用A记录来回答"某主机名称所对应的IP地址是什么?"
主机名必须使用A记录转译成IP地址,网络层才知道如何选择路由,并将数据包送到目的地

CNAME记录
某些名称并没有对应的IP地址,而只是一个主机名的别名。
CNAME记录代表别名与规范主机名称(canonical name)之间的对应关系
如管理员可能公告他们网站的主机名称为www.a.com, 但其实www.a.com只是一个指向server1.a.com的CNAME记录而已。而在server1.a.com维护期间,可以临时将www.a.com指向server2.a.com

MX记录
MX记录提供邮件路由信息
提供网域的"邮件交换器"(Mail Exchanger)的主机名称以及相对应的优先值
当MTA要将邮件送到某个网域时,会优先将邮件交给该网域的MX主机
同一个网域可能有多个邮件交换器, 所以每一个MX记录都有一个优先值,供MTA作为选择MX主机的依据

PTR记录
PTR记录代表"IP地址"与"主机名"的对应关系,作用刚好与A记录相反
DNS系统使用PTR记录来回答"某IP地址所对应的主机名是什么?"
RFC 882构想,A记录与PTR记录应是互逆的,也就是说
从A记录可以查到域名到IP, 从PTR可以查到从IP到域名
但当多个域名对应同一个IP时,PTR记录应指向该IP地址的规范主机名
某些网络使用PTR记录来检验客户端的主机名称是否可信 

=====================================
DNS资源记录语法:
{name}  {TTL}  addr-class   record-type   record-specific-data

name
域记录的名字
通常只有第一个DNS资源记录设置name栏
对于区域文件中其他的资源记录,name也可能是空白,这种情况下,其他的资源记录接受先前的资源记录的名字

TTL
Live栏可选择的时间
它指定该数据在数据库中保管多长时间
此栏为空表示默认的生存周期在授权资源记录开始中指定

addr-class
地址类
大范围用于Internet地址和其他信息的地址类为IN

record-type
记录类型
常为A  NS  MX  CNAME        

record-specific-data
记录类型的数据

=============================================
.对于每个Internet域或区域,需要两个配置文件
1) 主机名到IP的转换设置域
;主域
;如果希望名字服务器是特定域的授权名字服务器,应设置主要的区域
;这里名字服务器配置为abc.com域的主要的名字服务器
;file用来指定区域或域特有的配置文件名, 如果这里指定的文件名和服务器的工作目录有关系,它必须在工作目录里
zone  "abc.com"{
type  master;
file  "abc.db";
};

;从域
;
;如果为特定的域设置多个名字服务器,可以使用type master选项只设置其中一个为主要的或授权名字服务器
;其它的名字服务器(个数不限)必须设置为从名字服务器
;
;这里当前名字服务器设置为abc.com域的从名字服务器
;主要的名字服务器列表指定一个或多个IP地址
;从名字服务器可以用来与这些IP地址联系更新其区域拷贝
;如果指定file选项,则区域配置的拷贝写在此文件中,推荐使用file可以加速服务器启动
zone  "abc.com"{
type slave;
masters  {206.171.50.10; 206.171.50.12; };
file     path_name;
};

;用来指定一组根名字服务器
;当名字服务器启动时,它使用此列表(暗示)来发现一个根名字服务器,得到根名字服务器的最近列表
zone  "."{
type  hint;
file  path_name;
};

;
;把域名服务器设置为206.171.50.0网络的主要的域名服务器
;所有对此206.171.50.0网络的IP到主机名的转换(即反向DNS)都由此域名服务器处理
zone  "50.171.206.in-addr.arpa"{
type  master;
file  "db.206.171.50";
};


======================================
;SOA授权的开始
;
;SOA或授权的开始记录用来表示区域的启动
;每个区域必须只有一个SOA记录
;从名字服务器,在不能和主服务器通信的情况下,将提供12小时DNS服务, 在指定的时间后停止为那个区域提供DNS服务;不过经仍要尝试和主服务器通信
;
@  IN  SOA   nameserver.      contact-email-address(
serial_number;  
refresh_number;   //以秒为单位, 从名字服务器与主名字服务器比较才决定是否要更新
retry_number;       //以秒为单位, 由于外部原因,   从服务器重新传输一个失败的区域前要等多长时间
expire_number;    //以秒为单位, 是从名字服务器使用区域数据有效期的上限值
minimum_number; //以秒为单位, 是指在区域文件中没有指定生存期的资源记录上生存期TTL的限制,如果在一些区域的资源记录上有TTL值,则这里的minimum_number也是最低限度
)

@
是名字
并且总是被设置为@
在同一文件中别的资源记录不能重复

nameserver
指定当前域名服务器的主机名

contact-email-address
指定系统管理员的email

;
;名字服务器主机名为ns.abc.com
;电子邮件地址是[email protected]   (在SOA记录中邮件的@被换成.)

@    IN    SOA  ns.abc.com.    kdent.abc.com.  (
1049310513     ;serial
10800              ;refresh
3600                ;retry
604800           ;expire
900                  ;ttl
)            

==========================================
NS
名字服务器
用来为域指定名字服务器

IN   NS   name-server-hostname
注意:没有指定name和TTL, 因为名字仅需要使用@字符在SOA记录中指定 ;  TTL使用SOA记录中的minimum

IN   NS   ns.abc.com.               //说明ns.abc.com.是当前区域文件的名字服务器,  可以指定多个NS记录

;
; Nameservers
;
abc.com.       IN   NS   ns.abc.com.

===================================

A记录
Address记录
用来为特定主机指定IP地址
语法:  hostname   IN   A   IP-Address
A记录把主机名指定为IP地址
完整的主机名后应有一个点.
每个主机至少应有一个A记录
可以使用缩写, 此时缩写被增加到短名上  www    IN   A   206.171.50.51  ;将指定 www.abc.com

;
; Host Addresses
;
abc.com.                    IN   A  192.168.100.50
www                            IN   A  192.168.100.50
server1.abc.com.     IN   A  192.168.100.200
ns.abc.com.              IN   A   192.168.100.5
mail1.abc.com.        IN   A   192.168.100.6
mail2.abc.com.        IN   A   192.168.100.50
mail3.abc.com.        IN   A   192.168.100.123

===================================

PTR记录
域名指针
PTR记录代表"IP地址"与"主机名"的对应关系,作用刚好与A记录相反
DNS系统使用PTR记录来回答"某IP地址所对应的主机名是什么?"
RFC 882构想,A记录与PTR记录应是互逆的,也就是说
从A记录可以查到域名到IP, 从PTR可以查到从IP到域名
但当多个域名对应同一个IP时,PTR记录应指向该IP地址的规范主机名

某些网络使用PTR记录来检验客户端的主机名称是否可信

格式
ip      IN   PTR   hostname.
206.171.50.51   IN   PTR   www.abc.com.

可也以使用缩写
206.171.50.51   IN   PTR   www      //同样也是指定www.abc.com.


===================================
CNAME
规范命名
指定规范(正式)主机名的别名
格式:        
Alias   IN   CNAME    Canonical-hostname

;       
; CNAME  Records
;
pop.abc.com.    IN  CNAME   mail1.abc.com.
www.abc.com.    IN  CNAME   server1.abc.com.

也可使用缩写如下
pop    IN  CNAME   mail1.abc.com.
www    IN  CNAME   server1.abc.com.

===================================
MX
邮件交换
用来指定设置为域的SMTP服务器的主机名
格式:
IN   MX  preference-value    mail-server-hostname.

;
; Mail  Exchanger
;
IN   MX   0    mail.abc.com.
IN   MX  10   mail1.abc.com.
IN   MX  20   mail2.abc.com.
IN   MX  30   mail3.abc.com.


===================================

[注释]
IN              表示这些资源都在Internet上

发布了66 篇原创文章 · 获赞 8 · 访问量 18万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章