DNS 理解(笔记)

概念

是什么?

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个。 ---- 维基百科

13个根的地址.jpg

dig 命令用法在下半部分说道,或自己看下linux命令dig用法

例如:
www.example.com. 其中的.表示的就是根域

域是有授权跟上下级关系的,根将组织域的管理授权给组织域自己管理,根只知道自己的直接下级,或者说是授权下级,并不知道自己的下下级是谁。比如,根将.com授权给.com域自己来管理,并在根的ns服务器中记录.com域的ns服务器地址(下文会介绍一些相关概念)

组织域

组织域 (TLD: Top Level Domain 顶级域)

  • TLD(组织域)常见域:
    1. 组织域:.com .org .net .cc ……
    2. 国家域:.cn .jp .iq .ca ……
    3. 反向域: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)
  1. 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 )

  2. NS(Name Server): ZONE NAME --> FQDN (指定该域ns记录,一定要随之给条A记录)
    例:example.com.  600  IN  NS  ns.example.com.

  3. A(address):FQDN --> IPv4

  4. AAAA:FQDN --> IPv6

  5. PTR(pointer): IP --> FQDN ;(不区分IPv4,IPv6)

  6. MX(Mail eXchanger): ZONE NAME --> FQDN
    格式:ZONE NAME  TTL  IN  MX  pri(优先级,越小越高)  VALUE
    例:example.com.  600  IN  MX  10  mail.example.com.

  7. 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

转载于:https://my.oschina.net/JXinChenzZ/blog/1577880

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值