概念
是什么?
DNS (Domain Name System)域名解析服务器
- linux 常用软件 BIND;另译
Berkeley Internet Name Domain
有啥用?
通过将主机名(FQDN Full Qualified Domain Name, 完全限定域名
)解析为IP 地址;IP地址解析成主机名的服务软件,这个过程叫名称解析(Name Resolving),在背后查询数据记录集得到结果
示例
FQDN ==> IP (正向解析) www.example.com --> 10.0.0.1
IP ==> FQDN (反向解析) 10.0.0.1 --> www.example.com
相关内容
IANA: 互联网地址名称分配机构(美国机构),通过维护,申请IP地址+FQDN(只有先后;申请后别人没办法使用相同域名)
ICNAA: 授权机构,区域授权;授权给组织域,国家域自行管理
域
根域 "."
根域名服务器(英语:root name server)是互联网域名解析系统(DNS)中最高级别的域名服务器,负责返回顶级域的权威域名服务器地址。它们是互联网基础设施中的重要部分,因为所有域名解析操作均离不开它们。由于DNS和某些协议(未分片的用户数据报协议(UDP)数据包在IPv4内的最大有效大小为512字节)的共同限制,根域名服务器地址的数量被限制为13个。 ---- 维基百科
dig 命令用法在下半部分说道,或自己看下linux命令dig用法
例如:
www.example.com.
其中的.
表示的就是根域
域是有授权跟上下级关系的,根将组织域的管理授权给组织域自己管理,根只知道自己的直接下级,或者说是授权下级,并不知道自己的下下级是谁。比如,根将.com
授权给.com
域自己来管理,并在根的ns
服务器中记录.com
域的ns
服务器地址(下文会介绍一些相关概念)
组织域
组织域 (TLD: Top Level Domain 顶级域)
- TLD(组织域)常见域:
- 组织域:
.com
.org
.net
.cc
…… - 国家域:
.cn
.jp
.iq
.ca
…… - 反向域:
IP --> FQDN
(正向解析跟反向解析不在同一个数据库中查询)- 反向:
IP --> FQDN
- 正向:
FQDN -->IP
- 反向:
- 组织域:
NS服务器
客户端请求一个主机的时候,通常是交由这个域下的ns
服务器解析(不考虑hosts文件,配置啥的),ns
服务器查看当前本地是否有该域名解析结果的缓存,如果没有就去找根.
,比如www.example.com
,如果本地没有该域名解析的结果就去找根,根只知道自己的直接下级中的.com
,根返回参考答案.com 的ns地址
,然后ns
服务器就去找.com
域下的ns服务器,.com
发现自己的域下有.example
的记录,然后返回.example
下的ns
服务器地址,然后ns
服务器再去找.example
域下的ns
服务器,找www,然后.example
域下的ns
服务器直接返回最后结果。
相关概念:
递归(根是不给任何人递归的):客户端
-->
根.
服务器-->
,根.
服务器-->
.com
服务器 ,根.
服务器-->
.example
服务器
大致理解成:A问B1+1=?
,B说我不知道C知道
,B去问C,B告诉A等于2
。在这过程中A只发出一次请求,B发出了两次最后得到答案迭代:客户端
-->
根.
服务器 ,客户端-->
.com
服务器 ,客户端-->
.example
服务器
大致理解成:A问B1+1=?
,B说我不知道C知道
,A去问C,C告诉A等于2
。在这过程中B只发出一次请求,A发出了两次最后得到答案权威答案:
ns
服务器返回自己直接域或子域下的域非权威答案:
ns
服务器返回非自己直接域或子域下的域
NS服务器
大致理解成,根将.com
域授权给.com
管理,但是要在根服务器的NS服务器中留下一个记录,让客户端来查询的时候好返回并告诉.com
域中NS服务器的地址。你理解成管理员也行,就像我问你XX小学三年级有没有个叫张三的,XX小学
相当域根.
,三年级相当于.com
域,张三
相当于.example
域,而NS服务器就相当于这个班的班主任(管理员),你问班主任他肯定知道有没有。
DNS服务器类型
主DNS服务器:数据(记录,配置)的修改
-
辅助DNS服务器服务器
请求数据同步(通过主版本号的变更,或者主通知从修改)涉及axfr/ixfr 完全/增量
serial number: 版本号(不超过十位)
refresh : 定义每隔多少时间检查主版本号时间 retry: 重试时间(refresh没有响应) expire: 过期时间(主宕机) nagative answer TTL: 否定答案缓存时长(该解析没有结果)
缓存DNS服务器
转发器
NS服务器数据库中的每一个条目称作一个资源记录(Resource Record,RR)
资源记录的格式:
NAME(名称) [TTL]
TTL(失效时间)
IN(表明Internet上的记录)
RRT(资源记录类型)
VALUE(值)
例如:
www.example.com. 600 IN A 10.0.0.1
10.0.0.1 600 IN PTR www.example.com.
资源记录类型(RRT)
SOA (Start Of Authority;起始授权记录)
格式:ZONE NAME TTL IN SOA FQDN ADMINISTRATOR_MAIL( serial number refresh retry expire nagative answer TTL )
时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒
邮箱地址:admin@example.com 写为--> admin.example.com @有特殊含义
例:example.com. 600 IN SOA ns1.example.com. admin.example.com. ( 20171123 1D 5M 3D 3H )
NS(Name Server): ZONE NAME
-->
FQDN (指定该域ns记录,一定要随之给条A记录)
例:example.com. 600 IN NS ns.example.com.
A(address):FQDN
-->
IPv4AAAA:FQDN
-->
IPv6PTR(pointer): IP
-->
FQDN ;(不区分IPv4,IPv6)MX(Mail eXchanger): ZONE NAME
-->
FQDN
格式:ZONE NAME TTL IN MX pri(优先级,越小越高) VALUE
例:example.com. 600 IN MX 10 mail.example.com.
CNAME(Canonical NAME;正式名称): FQDN
-->
FQDN
例:www2.example.com. 600 IN CNAME www.example.com.
域跟区域
域(Domain):一个逻辑概念
区域(Zone):不太好解释,他们有包含关系,又好像没有关系。
一个域中可以分为多个区域,但一个区域又能指向一个域。就好像根区域文件中定义.com
域记录,但是.com
域中有可以有多个区域。额。。。我也是看视频理解的,这个不太好描述
区域文件:
一般都会定义两个区域文件正向区域文件
和反向区域文件
正向区域文件:
example.com. 600 IN SOA ns1.example.com. admin.example.com. ( 20171122 1H 5M 1D 3H )
简写:
@ 600 IN SOA ns1 admin ( 20171122 1H 5M 1D 3H )
应该可以,我是试了下,dig
了下正常解析没有报错
反向区域文件(假如当前172.17.0.0/16段网络,网段反过来加后缀,后缀固定):
0.17.172.in-addr.arpa 600 IN SOA ns1.example.com. admin.example.com. ( 20171122 1H 5M 1D 3H )
简写:
@ 600 IN SOA ns1.example.com. admin.example.com. ( 20171122 1H 5M 1D 3H )
区域名一定不能简写-
区域传送方式 (主dns服务器传送更新数据至从dns服务器 ):
- 完全区域传送(同步所有):axfr
- 增量区域传送(同步修改):ixfr
-
区域类型:
- 提示区域(定义根在什么地方):hint
- 主区域:master
- 从区域:slave
- 转发区域(不需要通过根查询,直接配置需要查询域内的ns服务器地址):forward
BIND:Berkeley Internet Name Domain(ISC 维护)
-
配置文件:
-
/etc/named.conf
:定义BIND进程的工作数据,区域文件定义 -
/etc/rndc.key
:定义rndc访问秘钥 -
/etc/rndc.conf
:rndc访问配置文件 -
/var/named/
:区域数据文件存放位置 -
/etc/rc.d/init.d/named
{start|stop|restart|status|reload|configtest}:二进制启动文件
-
启动进程:
named
监听协议及端口:
53/UDP:查询,解析
53/TCP:主从同步数据传输
953/TCP:rndc访问时使用端口
/etc/named.conf 配置文件解析(主要options、zone、view)
options 参数选项解析
options {
directory "/PATH/TO/SOMEWHERE"; 工作目录
recursion yes; 是否开启递归
allow-recursion { 10.0.0.1/16; }; 定义递归客户端来源
masters { 10.0.0.1; }; 定义从服务器拉取数据的主服务器地址
querylog yes; 打开查询记录日志功能
allow-query {}; 允许谁来查询
allow-transfer {}; 允许谁发送传送请求(完全区域传送axfr\增量ixfr)
notify yes; 是否启动通知
forward {only|first}; 转发方式 only:直接丢给父域解析,或自己先解析
forwarders { 10.0.0.1/16; }; 接受转发地址
}; 严格限定语法,需要加结束符";"号
zone 参数选项解析
zone "ZONE NAME" IN {
type {master|slave|hint|forward}; 服务器类型
allow-transfer {none}; 执行区域传送主机
masters { 10.0.0.1; }; 定义从服务器拉取数据的主服务器地址
forward {only|first}; 转发方式 only:直接丢给父域解析
forwarders { 10.0.0.1/16; }; 接受装发地址
querylog yes; 打开查询记录日志功能
};
view 参数选项解析(定义视图实现智能dns解析)
一旦定义视图,zone都要定义在视图中
view VIEW_NAME {
match-clients {}; 匹配客户端来源
zone "ZONE NAME" IN { };
};
dig命令:
dig -t RT(资源记录类型) NAME(资源记录名称) @IP(指定ns地址查询)
-x IP: 查找该ip的FQDN
2017/11/23 13:40:41