DNS: Domain Name Service
1、域名和主机名:
主机名形如www.baidu.com.(又称FQDN,完全限定域名)
域名是包含N个主机名的范围,如baidu.com域
2、域名解析或域名转换
FQDN<—>IP,背后有查询数据库的过程;
FQDN和IP之间的对应关系为m:n;
3、发展过程
最初通过文件存储映射关系 —> 集中式数据库存储映射关系 —> 目前的分布式数据库存储映射关系
4、DNS的分布式数据存储结构
####上级域只知道其直接下级域,而下级域仅仅通过配置文件知道根域####
根域
授权给NS管理各个直接下级域,并记录着各直接下级域的NS服务器的ip供客户查找
顶级域
组织域:.com, .org, .net,etc
国家域:.cn, .jp,etc
反向域:IP—>FQDN(使用的是不同于FQDN—>IP的另一个数据库)
二级域
常见的如baidu.com,ibm.com,etc
4、主机名解析
1>递归查找:请求者只需要发起一次请求即可得到答案,###根域忽略递归查找请求###
2>迭代查找:请求者需要发起多次请求才能得到答案
一般采用组合的方式工作:前半段客户机向ns发起递归查找,后半段ns对所请求的主机名进行迭代查找,得到结果后返回给客户机并缓存以供域内其他客户机请求;
5、名字服务器NS
1>主要功能:
@缓存域内主机对外部主机的名字查找结果(递归的方式工作),因此从一定程度上过滤了本地的DNS流量,减小本地带宽消耗并且减小了根域主机和顶级域主机的负载;
@响应本域外主机名字解析请求,一般是请求权威答案,如果查找成功返回权威应答并设置缓存时长TTL,如果查找失败直接回复名字差错(rcode标志位设置为3)并设置缓存时长TTL;如果请求非权威答案ns可以拒绝递归;
2>本地主机请求解析外部主机得到的答案一般是通过缓存得到的,又称非权威应答,有可能会过期从而导致解析结果错误,所以需要由权威域名解析服务器定义缓存时间,缓存时间越长权威域名解析服务器越空闲,但是主机名更新周期会更长;
3>域内主机向区域NS查找区域内的其他主机得到的一般都是权威应答,因为该NS服务器一般为本域的授权服务器,其答案具有权威性;
6、DNS服务器类型
###主从DNS服务器没有优先级的区别###
1>主DNS服务器:数据修改在此进行
2>辅助DNS服务器:定期请求数据同步,如果长时间得不到应答,则辅助DNS服务器也放弃
常用的配置参数
serial number(标示内容修改)、
refresh(同步时间间隔)、
retry(如果同步失败下次重试时间)、
expire(主服务器宕机)、
nagative answer TTL(否定答案缓存时间)
3>缓存DNS服务器:只提供缓存,不接受任何权威答案请求
4>转发器:只对DNS进行转发不缓存
7、DNS数据库内容
数据库中的每一个条目称为一个资源记录(RR)
资源记录的格式:NAME + [TTL(缓存时间) ] IN(internet) RRT(资源记录类型) VALUE
TTL 10; //定义了全局TTL之后RR中可以省略TTL字段
www.baidu.com. IN A 1.1.1.1
1.1.1.1 IN PTR www.baidu.com.
资源记录类型:标示主机在域内扮演的角色
A(Address) : FQDN—>IPv4
AAAA: FQDN—>IPv6
PTR: IP—>FQDN
特殊的资源类型:
SOA(Start Of Authority):必须为第一个记录,用于标示一个区域内部主从DNS如何同步以及起始授权对象,格式如下:
ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAILBOX(
serial number ;注释信息
refresh
retry
expire
na ttl)
baidu.com. 600 IN SOA ns1.baidu.com admin.baidu.com 1 1H 5M 1W 1D
说明:
I、时间单位:M(inute) H(our) D(ay) W(eek) S(econd)[default];
II、数据库文件中@用来表示区域名称
III、mailbox中不能含有@符号:admin@baidu.com —>admin.baidu.com
NS(Name Server): ZONE NAME —> FQDN of NS
baidu.com. IN NS ns1.baidu.com.
baidu.com. IN NS ns2.baidu.com.
ns1.baidu.com. IN A 1.1.1.2 //一般用不到此记录,因为上级域已经指定了NS
ns2.baidu.com. IN A 1.1.1.5
MX(Mail eXchanger): ZONE NAME —> FQDN of MAIL
格式如下:
ZONE NAME TTL IN MX PRI VALUE
baidu.com. 600 IN MX 10 mail.baidu.com.
mail.baidu.com. 600 IN A 1.1.1.3
####其中PRI为0-99,数字越小级别越高####
CNAME: FQDN—>FQDN
www2.baidu.com IN CNAME www.baidu.com
www2的正式名称为www,www2称为www的别名;
8、域Domain和区域Zone
域是一个逻辑概念,区域是一个物理概念,其中域包含正向区域和逆向区域
如规划baidu.com.域, 其中
ip为1.1.1.0/24
www 1.1.1.2
mail 1.1.1.3 MX
首先在获取.com授权
baidu.com. IN NS ns.baidu.com
ns.baidu.com IN A 1.1.1.1
然后建立两个区域文件:
正向区域文件
baidu.com. IN SOA
www(.baidu.com.) IN A 1.1.1.2 //简写会自动补区域名
mail IN MX //只定义在正向区域
反向区域文件
1.1.1.in-addr.arpa. IN SOA
1(.1.1.1.in-addr.arpa.) IN PTR www.baidu.com.
区域类型
主区域:master
从区域:slave
提示区域:hint,指明根域地址
转发区域:forward,跳过根域直接转到指定的域,值为{only | first}
zone “baidu.com” IN {
type forward;
forward first;
forwarders { 转发目的ip;};
};
9、区域传送:
完全区域传送axfr,传送整个区域文件
增量区域传送ixfr,只传送新增记录
10、配置文件
/etc/rc.d/init.d/named,named进程启动控制脚本;
/etc/named.conf,主要包含bind进程的工作属性的定义和区域的定义;
/etc/rndc.key,remote name domain controller密钥文件;
/etc/rndc.conf,远程控制相关配置;
/var/named/*,区域数据文件;
11、区域定义:
zone “ZONE NAME” IN {
type { master | slave | hint | forward };
};
主区域
file “区域数据文件”
从区域
file “区域数据文件”
masters { master1_ip; master2_ip; };
DNS查询常用客户端程序:
dig -t RT name [@ip]
如查询test.com域的名字服务器:dig -t NS test.com
dig -x ip
如查询1.1.1.1对应的主机名:dig -x 1.1.1.1
host -t RT name //与1类似,只是不能指定ip
nslookup:交互式
nslookup> server ip
nslookup> set q=RT
nslookup> NAME
子域定义:
SUB_ZONE_NAME IN NSNSSERVER_SUB_ZONE_NAME
NSSERVER_SUB_ZONE_NAME IN A IP
.com上授权子域baidu.com
baidu.com.IN NS ns1.baidu.com. //主DNS服务器
ns2.baidu.com. //辅DNS服务器
ns1.baidu.com.IN A 1.1.1.1
ns2.baidu.com.1.1.1.2
baidu.com上授权子域d1.baidu.com和d2.baidu.com
d1.baidu.com.IN NS ns1.d1.baidu.com.
d1.baidu.com.IN NS ns2.d1.baidu.com.
ns1.d1.baidu.com.IN A 2.2.2.2
ns2.d1.baidu.com.IN A 2.2.2.3
d2.baidu.com.IN NS ns1.d2.baidu.com.
d2.baidu.com.IN NS ns2.d2.baidu.com.
ns1.d2.baidu.com.IN A 3.3.3.3
ns2.d2.baidu.com.IN A 3.3.3.4
12、acl,访问控制列表
定义格式:
ack ACL_NAME {
ip;
…
};
###内置acl包含none和any###
13、CDN,Content Delivery Network内容分发网络
智能DNS(view视图)
缓存服务器
view VIEW_NAME{
//每个视图对应一个区域数据文件;
//一旦定义了视图,所有的区域都必须定义在视图中
};
###################################################
之前遇到一个奇怪的问题,本机建了dns服务器,但是dig @127.0.0.1的时候返回拒绝(dns query refused),
换个本机其它的ip都行,一开始以为是没有监听或者不允许127.0.0.1查询,查看了几遍配置文件发现原来127.0.0.1
不属于任何一个VIEW,最后加上localhost View之后就正常了,所以一定要确认所有的client都有对应的view。
###################################################
acl telecom {
1.1.1.1;
};
acl unicom {
2.2.2.2;
};
view telecom {
match-clients { telecom; };
zone “baidu.com” IN {
type master;
file “telecom.baidu.com.zone”;
};
};
view unicom {
match-clients{ any; };
zone “baidu.com” IN {
type master;
file “unicom.baidu.com.zone”;
};
};
14、日志记录
query-log yes;
logging {
channel my_file {
file “log_msg” versions 3 size 10k;
severity dynamic;
};
category xfer-in { my_file; };
};