域名分级
根域: .
顶级域: .com .cn .org .net
域: baidu.com qq.com sina.com
主机: www.baidu.com mail.sina.com
DNS解析过程
如在qq.com域下面有台client,其dns-server是dns.qq.com,则client访问www.baidu.com(dns为ns.baidu.com)时,先请求dns.qq.com,dns.qq.com查询缓存中有没有www.baidu.com条目的缓存,如果有,则直接返回www.baidu.com的IP,如果没有,则请求如下:
1. 请求 `根域`(`.`),查询`.com`域的管理Server IP
2. 请求`.com`域,查询`baidu.com`域的管理Server IP,也就是 `ns.baidu.com`
3. 请求`ns.baidu.com`,查询域中`www`主机的IP
此时,dns.qq.com
将查询得到的www.baidu.com
的IP返回给Client,同时缓存,在缓存还没失效之前有其他Client再次请求www.baidu.com
时,则直接从缓存中取,不再查询。对于client来说是递归的(client->dns.qq.com),对于dns-server来说是迭代的(上述123过程),
DNS Server只依据条目响应查询,不负责是否存在
dns的分类
1.权威DNS:
权威DNS是经过上一级授权对域名进行解析的服务器,同时它可以把解析授权转授给其他人
2.递归DNS:
负责接受用户对任意域名查询,并返回结果给用户。
3.转发DNS:
负责接受用户查询,并返回结果给用户。
权威应答与非权威应答
如果DNS服务器在自己的区域文件里找到了客户端需要查询的记录,否则就是非权威应答
TTL值
TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上被缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值,默认单位是秒(s)。
一.增大TTL值,可以节约域名解析时间
二.减小TTL值,可以减少更换IP(A记录)后到生效的时间
资源记录(Resource Record, RR)格式
@表示继承
A记录(正向)
将域名指向一个IPv4地址,FQDN-->IPv4
FQDN:Full Qualified Domain Name,完全限定域名,如 mail.sina.com
RRT:Resource Record Type,资源记录类型。
FQND TTL IN RRT IP
www.sina.com. 600 IN A 1.1.1.1
IPv6的类型为AAAA
PTR记录(反向)
IP反向查询域名,IP-->FQDN
IP TTL IN RRT FQDN
11.0.168.192.in-addr.arpa. 600 IN PTR mail.sina.com.
12.0.168.192.in-addr.arpa. 600 IN PTR ftp.sina.com.
NS记录
域名解析服务器记录,ZONE-NAME->FQDN,也叫授权记录
Zone-Name TTL IN NS FQND
163.com. 600 IN NS ns.163.com.
ns.163.com. 600 IN A 1.1.1.1
NS和A记录成组出现,构成一个完整的NS记录,多个NS记录时依次被响应
MX记录(mail exchager)
电子邮箱服务,将指向邮件服务器地址,ZONE-NAME->FQDN,MX记录有优先级(priority)之分,0-99,数字越大,优先级越高
ZONE-NAME TTL IN RRT priority FQDN
163.com. 600 IN MX 11 mail1.163.com.
mail1.163.com. 600 IN A 1.1.1.1
MX和A记录成组出现,构成一个完整的MX记录
SOA(Start Of Authority)记录
区域传送记录,描述区域传送规则(描述主从对象,以及如何主从如何同步),必须定义在数据文件的第一行
ZONE-NAME TTL IN SOA FQDN(主DNS地址) admin-mail-address (
serial number; 版本号,区域复制依据,每次主要区域修改完数据后,要手动增加它的值
refresh ; 刷新时间,辅助DNS服务器请求与源服务器同步的等待时间。当刷新间隔到期时,辅助DNS服务器请求源服务器的SOA记录副本。然后,辅助DNS服务器将源服务器的SOA记录的序列号与其本地SOA记录的序列号比较,如果不同,则辅助DNS服务器从主要DNS服务器请求区域传输。
retry ; 重试时间,辅助DNS服务器在请求失败后,等待多长时间重试。通常这个应该短于刷新时间
expire ; 过期时间,时间到期时,如辅助DNS服务器还无法与源服务器进行区域传输,则辅助DNS服务器会把它的本地数据当作不可靠数据
minimum ; 否定答案缓存时间
)
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
邮箱格式:admin@sina.com -写为-> admin.sina.com
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (
2013040101
1H
5M
1W
1D )
CNAME(Canonical NAME)记录
将域名指向一个域名,FQDN->FQDN
FQDN TTL IN RRT FQDN
mail.163.com. 600 IN CNAME mail.qq.com.
泛域名解析
* 600 IN A IP #除了明确标识,其他都解析到该地址
域和区域(domain & zone)
domain是逻辑概念,如sina.com,zone是物理概念,对应数据文件
正向域
sina.com. 600 IN SOA ns1.sina.com. admin.sina.com. (
2013040101
1H
5M
1W
1D )
www 600 IN A 192.168.0.10
www2 600 IN A 192.168.0.11
sina.com. 600 IN MX 10 mail.sina.com.
mail.sina.com. 600 IN A 192.168.0.20
反向域
反向域的name为网段地址,且反写
0.168.192.in-addr.arpa IN SOA ns1.sina.com. admin.sina.com (
2013040101
1H
5M
1W
1D )
10.0.168.192.in-addr.arpa. 600 IN PTR www.sina.com.
11 IN PTR www2.sina.com.
区域类型
主区域:master
从区域:slave
提示区域:hint,定义根在什么地方
转发区域:forward,比如直接配置.com域的地址,而不从根查询
安装Bind
yum install -y bind
/etc/named.conf #主配置文件
/etc/rndc.key #rndc的密钥文件
/etc/rndc.conf #rndc配置文件
/var/named/ #区域数据文件
/etc/rc.d/init.d/named #服务脚本
{start|stop|restart|status|reload}
/var/named/named.ca 13个根节点配置文件
一些工具
随bind安装
/usr/sbin/named-checkconf #检查配置文件
/usr/sbin/named-checkzone #检查区域文件
/usr/sbin/rndc-confgen #生成rndc配置
bind-utils 工具包
/usr/bin/dig
/usr/bin/host
/usr/bin/nslookup
设置开机启动
chkconfig named on
named.conf
options { #全局选项,对所有的zone生效
listen-on port 53 { 127.0.0.1; }; #监听IPv4及端口。这里设置表示只侦听127.0.0.1这个地址。如不定义此选项或者0.0.0.0表示侦听所有网络
listen-on-v6 port 53 { ::1; }; ##监听IPv6及端口
directory "/var/named"; #数据文件目录
notify yes;# 启用通知功能,master修改,主动通知slave
allow-query { 192.168.0.0/24; }; #允许提交查询的客户端,如不定义此选项表示允许所有查询
query-source port 53; #客户端在进行DNS查询时必须使用53做为源端口
recursion yes; #是否开启递归查询
allow-recursion {192.168.0.0/24;192.168.0.1/24};#允许提交递归查询的客户端,如不定义此选项表示允许所有
allow-transfer {192.168.0.254;};#允许区域传输的DNS服务器(辅助DNS),不写表示允许所有
forwarders {192.168.0.9;};#转发到指定服务器解析
forward only|first;#only表示如果在指定的转发器找不到,不会去向根查询,first表示快速转发(默认)
dnssec-enable yes;# 是否支持DNSSEC开关,默认为yes
dnssec-validation yes; #是否进行DNSSEC确认开关,默认为no
dnssec-lookaside auto; #当设置dnssec-lookaside,它为验证器提供另外一个能在网络区域的顶层验证DNSKEY的方法
};
logging { #日志
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN { #根区域定义
type hint;#区域类型
file "named.ca";#区域数据文件路径,相对与directory
#masters { master1.ip;master2.ip } #如果是从区域,指定master地址
};
zone "sina.com" IN { #正向域
type master;
file "sina.com";
};
zone "0.168.192.in-addr.arpa" IN {#反向域
type master;
file "0.168.192.zone";
};
zone类型
Master
主DNS服务器:拥有区域数据文件,并对此区域提供数据管理
Slave
辅助区域:拥有主DNS服务器区域数据文件的副本,辅助DNS服务器从主DNS服务器同步所有区域数据
Stub
stub区域和slave类似,但它只复制主DNS服务器上的NS记录,而不像辅助DNS服务器会复制所有区域数据
Forward
一个forward zone是每个域的配置转发的主要部分。一个zone语句中的type forward可以包括一个forward和或forwarders子句,它会在区域名称给定的域中查询。如果没有forwarders语句或forwarders是空表,那么这个域就不会转发,消除了options语句中有关转发的配置
Hint
根域名服务器的初始化组指定使用的线索区域hint zone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,服务器使用编译时默认的根服务器线索。不是IN的类别没有内置的默认线索服务器
主从传送
1.修改named.conf中option定义
notify yes
2.修改named.conf中zone的定义:
zone "zone-name" IN { #根区域定义
type slave;#标明是从dns
file "slaves/named.ca";#区域数据文件路径,相对与directory,由于named无对/etc/named目录的写权限,所以放在slaves下
masters { master1.ip;master2.ip } #指定master地址
};
3.增加从服务器的NS记录以及A记录
4.防火墙配置
打开master tcp 53端口
打开slave tcp 53端口
5.开启从服务器
service named start
手动区域传输
dig -t axfr|ixfr 区域名称 @辅助DNS服务器
axfr:完全传输
ixfr:增量传输
子域授权
1.在子域zone文件中添加授权NS记录
子域名称 IN NS 子域dns-server-name
a.sina.com. IN NS ns1.a.sina.com.
2.子域DNS A记录
子域dns-server-name IN A IP
ns1.a.sina.com. IN A 0.0.0.0
3.编辑子域 named.conf 添加zone记录
zone "a.sina.com" IN {
type master;
file "a.sina.com";
};
4.增加zone对应的数据文件
5.重启服务
DNS View
view view_name {
match-client{ip段1;ip段2};
//区域定义
};
match-client:指定IP段使用view中的zone定义,any匹配所有IP
注意
- 一旦定义了view 所有的zone都必须定义在view中
- 根zone只需要定义在需要递归的view中