DNS服务器配置的相关知识和操作
一、什么是名称解析?
我们知道,主机之间通信必需要知道对方的ip地址,但是,ip地址并不好记,而且互联网上主机那么多,不可能都记下来。有一个解决办法,我们可以给主机取个方便记忆的名称,让名称与ip地址建立关联,然后我们就可透过主机的名称访问主机了。例如,用户要访问网易,并不是直接输入其web主机的ip地址,而是输入其名称www.163.com,这个名称会被某种机制解析为对应的ip地址,用户获取到其ip地址后就能发起连接请求了
所以,名称解析就是根据用户所提供的一种名称,去查询解析库,以得到另一种名称(地址)。解析库实际上是某种存储,存储着名称和地址之间的对应关系,这种存储有多种形式:
文本文件:不适宜存储大量的记录,检索缓慢;如本地的/etc/hosts文件;
关系型数据库:有索引机制,检索快;如mysql,oracle
LDAP(lightweight directory access protocol,轻量目录访问协议):检索比关系型数据库更快
二、DNS基础
DNS(domain name system,域名系统)就是一种名称解析机制或协议
DNS采用C/S架构:
server:bind,53/udp(用于DNS查询,较快),53/tcp(用于区域传送)
client:共享库
1、DNS的分级授权管理:
由于互联网主机太多,名称解析请求量太过庞大,在一个或多个DNS服务器上存储所有的记录完全不现实,为此,DNS实行分级授权管理:将整个名称空间分成多级多个域,每个DNS服务器管理一片区域。每级DNS服务器管理下一级DNS服务器,不越级管理,直至最后一级DNS服务器解析一块区域的主机。好比地球上有多个国家,国家又分省、省分市、市分区、一个区由多个公民组成;中央管理省、省管理市...,但中央不会直接管理公民。
wKiom1ZdCoiisHg4AAF3uapxstk450.png
根域:root domain,整个名称空间,由一个“.”表示。全球有13个DNS根服务器
一级域(顶级域):top-level domain
组织域:.com, .org, .net, .mil, .edu, .gov
国家域:.cn, .us, .uk, .jp, .tw, .hk, .iq, .ir
反向域:.in-addr.arpa
二级域:公司、组织、个人使用;如.sohu,.amazon
主机:如www,mail
例如 www.163.com,实际上末尾省略了一个“.”,完整的应写作www.163.com.,我们称为之为 FQDN(full qulified domain name,完全限定域名),从右到左其区域逐渐缩小:其一级域为“.com”,二级域为“.163”,因此域名为“.163.com.”,而主机名为www
▲FQDN中的主机名与主机的hostname是两个不同概念,不要求一样:前者是在网络上公开的用于通信的主机标识,可供解析;后者只是某个特定主机的代号,不能被解析。例如www.163.com这个站点可能对应多个ip,即对应多个web主机,这些主机在网络上有个共同的标识www,而在本地我们可以分别给它们取名node1,node2....以作区分
2、DNS解析:
正向解析:FQDN --> IP,一个名称可以对应多个ip
反向解析:IP --> FQDN,一个ip也可对应多个名称
正向解析和反向解析分别使用一个解析库
3、DNS查询过程:
总体过程为:/etc/hosts --> local dns cache --> dns server (cache) --> 迭代
客户端首先查询本机上的/etc/hosts文件,无结果则查询本机DNS缓存,无结果再请求区域内的DNS服务器,DNS服务器上若没有结果则会发起迭代查询只有针对非本区域的FQDN的才会发起迭代),获取到结果后会先缓存再返给客户端,客户端也会将解析的结果缓存。详细过程见上图
本机DNS缓存加速了名称解析过程,减轻了服务器端压力。本机DNS缓存和DNS服务器缓存都是有有效期的,因为名称对应的ip地址是可能会发生改变的
根据DNS的分级管理和迭代查询机制,一个DNS服务器要在互联网上工作,必须到域名注册商那里注册(在父域DNS服务器的区域解析库中添加NS和A记录)
4、DNS服务器类型:
主DNS服务器
从DNS服务器
缓存服务器:不解析任何区域,但允许递归
主从DNS服务器解析库文件同步的过程:区域传送 (单方向传送),基于53/tcp
完全区域传送:axfr
增量区域传送: ixfr
周期性检查 + 通知
5、区域解析库
资源记录:rr(resource record)
㈠资源记录类型:表示此记录解析的属性
SOA:Start Of Authority, 起始授权记录,一个区域文件只能有一个;
NS:Name Server
MX:Mail eXchange, 邮件交换器,MX记录有优先级属性(0-99);
A:FQDN --> IP,专用于正向解析库
PTR:IP --> FQDN,专用于反向解析库
AAAA:FQDN --> IPv6,专用于正向解析库
CNAME:Canonical Name,正式名称
㈡资源记录格式:
name [ttl] IN RRType value #ttl为DNS缓存时长
①SOA:Start Of Authority,起始授权记录。任何解析文件的第一个记录的类型必须是SOA且一个区域文件只能有一个
name: 区域名称,通常可以简写为@
value: 主DNS服务器的FQDN,也可以当前区域的区域名称;
例如:@ IN SOA ns.xiaoxiongboke.com. admin.xiaoxiongboke.com.(邮箱) (
serial number #解析库的版本号,例如2014080401;若有配置主从,每次修改解析文件,要更新版本号,以便从服务器同步
refresh time #主从服务器周期性同步的时间间隔
retry time #主服务器未响应从服务器,从服务器的重试时间间隔
expire time #主服务器一直无响应,从服务器解析库的失效时长
negative answer ttl #否定答案(无结果)的统一缓存时长
)
说明:@表示当前当前定义的区域,按上面的例子,完整地应写为xiaoxiongboke.com.
因@在解析库中有特殊意义,故邮箱地址中不能使用,而用.代替,如上面的admin.xiaoxiongboke.com.
②NS:name server
name: 区域名称
value: DNS服务器的FQDN
例如:@ IN NS ns.xiaoxiongboke.com.
注意:
如果有多台NS服务器,每一个都必须有对应的NS记录;
对于正向解析文件来讲,每一个NS的FQDN都应该有一个A记录;
③MX:Mail eXchanger
name: 区域名称
value: 邮件服务器的FQDN
例如:
@ IN MX 10 mail.xiaoxiongboke.com.
@ IN MX 20 mail2.xiaoxiongboke.com.
注意:
如果有多台MX服务器,每一个都必须有对应的MX记录;但各MX记录还有优先级属性(0-99)
④A:Address
name: FQDN
value: IP
例如:
www.xiaoxiongboke.com. IN A 1.1.1.1
www.xiaoxiongboke.com. IN A 1.1.1.2
pop3.xiaoxiongboke.com. IN A 1.1.1.3
imap.xiaoxiongboke.com. IN A 1.1.1.3
泛域名解析:将所有匹配不到资源记录的请求都解析到指定ip地址
*.xiaoxiongboke.com. IN A 1.1.1.1
用途:
⑴可以让域名支持无限的子域名;
⑵防止用户错误输入导致的网站不能访问;例如 wwww.xiaoxiongboke.com
⑤AAAA:ipv6 IP
⑥CNAME:Canonical Name
name: FQDN
value: FQDN
例如:
www.xiaoxiongboke.com. IN A 1.1.1.5
web.xiaoxiongboke.com. IN CNAME www.xiaoxiongboke.com. #前者是后者的别名
⑦PTR:pointer,反向解析
name: 逆向的主机IP地址加后缀.in-addr.arpa.,例如172.16.100.7/16, 网络地址为172.16, 主机地址为100.7,其name为7.100.in-addr.arpa.
value: FQDN
例如:
7.100.in-addr.arpa. IN PTR www.xiaoxiongboke.com.
三、DNS服务器基本配置
bind (bekerley internet name domain)是DNS服务端的软件包名
服务脚本:/etc/rc.d/init.d/named
配置文件:/etc/named.conf, /etc/named.rfc1912.zones
区域解析库文件:/var/named/zone_name.zone
安全起见,DNS服务进程是以系统用户named的身份运行的。named可运行于chroot环境,即可以/var/named/chroot/作为named进程的根,要实现这一功能需要另外安装bind-chroot包。
Linux有一个特性:只有管理员才能使用小于1024的端口,因此named进程得由管理员启动,启动完成后再切换为以named系统用户的身份运行
1、安装配置过程
①安装程序包
yum install bind
②修改配置文件:
- options { #全局配置段
- ...
- // directory "/var/named"; #工作目录;必不可少
- };
- zone "ZONE_NAME" IN { #可定义多个区域
- type {master|slave|hint|forward};
- file "mageedu.com.zone"; #注意:必须以分号结尾
- };
- logging {
- ...
- };
■options中几个重要参数:
1、listen-on port 53 { any; };
监听在哪些地址上。预设是监听在127.0.0.1,亦即只有本机可以对DNS服务进行查询,所以应改成any或直接用//将本条目注释掉
2、directory "/var/named";
工作目录,解析库的存放位置。必不可少
3、allow-query { any; };
这个是针对用户端的设定,指定谁可以对我的DNS服务提出查询请求
4、recursion yes; #允许递归
recursion no; #不递归,意思就是本机管理的域名之外的DNS请求都不回答
allow-recursion { ip; };
★区域既可定义在主配置文件/etc/named.conf中,也中定义在/etc/named.rfc1912.zones中,因为主配置文件默认已 include 后者了
反向区域的名称为逆向网络地址加.in-addr.arpa做后缀。例如 16.172.in-addr.arpa
③为每一个区域提供解析库
变量的定义
资源记录
说明:
⑴正向解析和反向解析文件中的名称可以仅使用相对名称,它们均相对当前区域而言;
⑵绝对后缀可以使用$ORIGIN来定义;
2、检查工具
named-checkconf:检查配置文件的语法和完整性
named-checkzone:检查区域解析库文件的语法和完整性
用法:named-checkzone zonename filename
例如named-checkzone xiaoxiongboke.com /var/named/xiaoxiongboke.com.zone
service named configtest