一、概述
DNS 全名 Domain Name System,即域名系统。DNS 服务的主要功能是完成 FQDN 和 IP 之间的转换。FQDN 即 Full Qulified Domain Name,译为完全合格域名。FQDN 又是由主机名称和它的域名(包括根域和顶级域)组成。
DNS 的组织结构可以看作是树状结构,最上层叫做根域,用 . 表示。根域下面叫做顶级域(TLD,Top Level Domain)顶级域下面还可以分为多级。每一部 DNS 服务器仅能够查询到其下一层的主机地址,而下层的 DNS 服务器仅能够查询到根域名服务器。全球总共有 13 台根域名服务器,名称为 *.root-servers.net. 。其中,* 代表从 a 到 m 这 13 个字母。
在每一台 DNS 服务器内部维护着一个数据库,对每一个域(Domain)都有一个区域(Zone)文件,记录这个域(Domain)内的主机 FQDN 与 IP 之间的对应关系。例如:yahoo 申请到 yahoo.com. 这个域名,那么在这个域内,它可以定义自己的主机名称与 IP 地址对应关系,如 www.yahoo.com. ftp.yahoo.com. 等等。它可以为这些子域建立共同的一部 DNS 服务器,假如是 ns.yahoo.com.,在这部服务器内,建立区域(Zone)文件用来描述 www.yahoo.com. 对应的 IP 地址,ftp.yahoo.com. 对应的 IP 地址等。
二、DNS 服务器类型
主 DNS 服务器 :FQDN <--> IP 数据修改
辅助 DNS 服务器 :请求与主 DNS 数据同步
缓存 DNS 服务器 :缓存其他 DNS 服务器的内容,不解析域名
转发 DNS 服务器 :转发其他 DNS 服务器的内容
三、区域(Zone)类型
主区域:master
主 DNS 服务器的区域文件
从区域:slave
辅助 DNS 服务器的区域文件
提示区域:hint
提示根域名服务器位置
转发区域:forward
直接解析请求而不用到根服务器查询
四、区域文件格式和内容
区域文件中,每一条记录称作一个资源记录(RR,Resource Record)。资源记录(RR)又分为不同的资源记录类型(RRT,Resource Record Type)不同 RRT 的 RR 格式如下:
SOA(Start Of Authority)
每个区域文件的第一条 RR,格式:ZoneName TTL IN SOA FQDN ADMIN_MAILBOX (
serial number
refresh
retry
expire
nagative answer TTL
)
ZoneName:区域名称
TTL:生存时间
IN:表明是 Internet 记录
SOA:表明是 SOA 记录
FQDN:主 DNS 服务器的 FQDN
ADMIN_MAILBOX:管理员邮箱,其中 @ 要用 . 来代替
serial number:序列号,用于主从 DNS 同步
refresh:刷新时间,辅助 DNS 与 主 DNS 同步数据的时间间隔
retry:重试时间,同步未成功时进行重试的时间间隔
expire:过期时间,超过这个时间,辅助 DNS 则认为主 DNS 宕机
negative answer TTL:请求答案未找到的缓存时间
注:时间单位有 M(分) H(小时) D(天) W(周) 默认单位是秒
NS(Name Server)
区域文件的第二条件 RR,格式:ZoneName TTL IN NS FQDN
NS 实现 Name Zone 到 FQDN 的转换。
必需配合 A 记录出现。
A(Address)
格式:FQDN TTL IN A IPv4
A 实现 FQDN 到 IP 地址的转换。
MX(Mail eXchanger)
格式:ZoneName TTL IN MX PRI FQDN
PRI:优先级,从 0 - 99,数字越低,优先级越高
必需配合 A 记录出现。
AAAA
FQDN 到 IPv6 的转换。
PTR(PoinTeR)
实现反解,即 IP 地址到 FQDN 的转换。
CNAME(Canonical NAME)
设定别名,格式:FQDN TTL IN CNAME FQDN
为同一个服务设定多个域名。
五、一个简单的 DNS 配置过程
目前使用的最多的 DNS 服务器软件是 BIND(Berkeleyz Internet Name Domain)。BIND 是由美国加州大学伯克利分校研发的,现在这个软件由 ISC 组织进行维护,可以在官网上下载到这个软件的最新版本。http://www.isc.org/
安装完成后有一下几个重要的文件和目录
/etc/named.conf:BIND主配置文件,定义全局属性和区域
/var/named/:区域数据文件存放目录
/var/named/named.ca:互联网根域名服务器的地址
/var/named/named.localhost:本地主机名的正向(FQDN---->IP)解析
/var/named/named.loopback:本地主机名的反向(IP---->FQDN)解析
注:named.ca 文件可以通过 dig 命令生成:dig -t NS . @a.root-servers.net. > /var/named/named.ca
创建 /etc/named.conf 文件
这里,我仅演示配置一个简单的 DNS 服务器的过程,所以我们先手动创建一个配置文件
#备份配置文件 mv /etc/named.conf /etc/named.conf.bak #创建自己的配置文件 touch /etc/named.conf #修改权限 chown root:named /etc/named.conf chmod 640 /etc/named.conf
这里假设我申请到一个域名叫做 jerry.com. ,而且我有一个网段 10.16.0.0/24,那么我这样分配:
DNS服务器:10.16.0.1 //ns.jerry.com.
www服务器:10.16.0.2 10.16.0.3 //www.jerry.com.
f t p服务器:10.16.0.4 //ftp.jerry.com.
邮件服务器:10.16.0.5 //mail.jerry.com.
编辑 /etc/named.conf 文件
#全局配置 options { directory "/var/named"; }; #定义区域 #file 文件的位置是相对于 directory 目录的 #根域名服务器 zone "." IN { type hint; file "named.ca"; }; #本地主机名正解 zone "localhost" IN { type master; file "named.localhost"; }; #本地主机名反解 zone "0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; }; #jerrycom. 域名服务器正解 zone "jerry.com" IN { type master; filen "jerry.com.zone"; }; #jerry.com. 域名服务器反解 zone "0.16.10.in-addr.arpa" IN { type master; file "10.16.0.zone"; };
注:DNS 区域的正解析和反解析要对应,注意反解析的写法:以倒着写的网段开头,然后跟上统一的后缀 .in-addr.arpa
创建区域数据文件
named.ca、named.localhost、named.loopback 文件是 BIND 自动生成的,这里我只创建 jerry.com.zone 和 10.16.0.zone 文件
创建 /var/named/jerry.com.zone 文件
jerry.com. 600 IN SOA ns.jerry.com. admin.jerry.com. ( 2014031301 1H 5M 2D 6H ) jerry.com. 600 IN NS ns.jerry.com. jerry.com. 600 IN MX 10 mail.jerry.com. ns.jerry.com. 600 IN A 10.16.0.1 www.jerry.com. 600 IN A 10.16.0.2 www.jerry.com. 600 IN A 10.16.0.3 ftp.jerry.com. 600 IN A 10.16.0.4 mail.jerry.com. 600 IN A 10.16.0.5
创建 /var/named/10.16.0.zone 文件
0.16.10.in-addr.arpa. 600 IN SOA ns.jerry.com. admin.jerry.com. ( 2014.01301 1H 5M 2D 6H ) 0.16.10.in-addr.arpa. 600 IN NS ns.jerry.com. 1.0.16.10.in-addr.arpa. 600 IN PTR ns.jerry.com. 2.0.16.10.in-addr.arpa. 600 IN PTR www.jerry.com. 3.0.16.10.in-addr.arpa. 600 IN PTR www.jerry.com. 4.0.16.10.in-addr.arpa. 600 IN PTR ftp.jerry.com. 5.0.16.10.in-addr.arpa. 600 IN PTR mail.jerry.com.
修改区域文件属性
chwon root:named /var/named/jerry.com.zone /var/named/10.16.0.zone chmod 640 /var/named/jerry.com.zone /var/named/10.16.0.zone
创建完成,可以通过以下命令来验证文件的正确性
named-checkconf named-checkzone "jerry.com" jerry.com.zone named-checkzone "0.16.10.in-addr.arpa" 10.16.0.zone
重启 DNS 服务
service named restart