DNS培训
DNS 相关学习与实践简介DOMAIN NAME SYSTEM:域名系统TCP/IP网络中的功能实体,通过该服务器,用户只通过域名就可以访问对应的服务器。在TCP/IP网络中域名与IP 地址一一对应,
DNS 相关学习与实践
简介
DOMAIN NAME SYSTEM:域名系统
TCP/IP网络中的功能实体,通过该服务器,用户只通过域名就可以访问对应的服务器。在TCP/IP网络中域名与IP 地址一一对应,域名便于记忆,但网络中的服务器间只能通过IP 地址相互识别,域名和IP 地址之间的转换称为域名解析,域名解析需要通过专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器。
起源
<摘录>20世纪70年代的美国,此时的ARPAnet ,这个由美国国防部出资兴建的网络,只是一个拥有几百台主机的很小很友好的网络。那么这几百台主机如何相互串门儿呢?原来每一台主机都有一个通讯录,记录这其他主机的地址。每当要访问另外一台主机时,先从自己的通讯录上查出目地主机的地址,然后去访问。这一切都如此顺畅。正如你所知,“但是”马上就要来了。但是,随着ARPAnet 采用了TCP/IP协议簇,网络上的新增主机如雨后春笋般层出不穷。从几百台很快发展到了成千上万台,而且还在不断增加。这么多台主机间如何访问呢?那位说了,该咋访问咋访问呗,不是每台主机有通讯录么?只要扩充通讯录就行了。这样行吗?短期内是可以凑合的,但会带来很多问题。比如说,网络上的一台主机要改变自己的地址了,那么剩下的几万台主机如果还想正常访问这台主机的话,那么必须要更新自己的通讯录,这个代价是很大的。再比如,网络上如果有两台主机的名字一样,那么就会造成名字冲突,可是又很难保证每台主机的名字都不一样。最关键的问题是通讯录文件的线性结构并不是很好。这些问题在网络主机少的时候根本不是问题,但是如果网络规模爆炸式增长,那么这个问题就变得刻不容缓了。如果不能妥善解决,那么终将限制网络的发展。时代开始呼唤新的“通讯录”。
新的“通讯录”应该具备什么样的特性才能满足网络的发展呢?通讯录已经不能满足需求了,应该是一个更高深的东西,名曰“系统”,才能搞定问题。新系统应该允许本地管理数据,同时数据又能被整个网络所使用。管理的分散化能消除单一主机的瓶颈,缓解流量问题。同时本地管理能使及时更新数据变得简单得多。新系统应该使用层次结构的名字空间来为主机命名,从而确保名字的惟一性。
在南加州大学的信息科学所一位巨牛的主导下,新系统很快被设计了出来。正如你知,这就是我们今天故事的主角:DNS-------DOMAIN NAME SYSTEM 。实际上, DNS 是一个分布式数据库。它允许对整个数据库的各个部分进行本地控制;同时整个网络也能通过客户—服务器方式访问每个部分的数据。借助备份和缓存机制,DNS 将具有强壮性和足够的性能。
,结构
DNS 是标准的树结构,是非常标准的树结构,它将在课本学到的树结构完美的实现了出来,它既没有森林的复杂,也没有图、矩阵等的强方向性,异常清晰的框架结构注定了DNS 功能的强大,也为当前DNS 在网络中愈加重要的地位打下了坚实的基础。 看一幅“域名空间”图,就是一棵树:
树中每个节点都有一个可以长达63 个字符的文本标号(text label )(不含“. ”)。空标号(长度为0)是为根保留的。树中任何一个节点的完整域名(domain name )都是从该节点到根的路径上所有节点标号的顺序连接。域名总是从节点向根(向上)的方向读,并用“. ”来分隔路径上所出现的各个名字(文本标号)。如果根节点的标号出现在一个节点的域名中,那么这个名字看上去就像以“. ”结束,比如www.huawei.com. ,但它实际上是以分隔符“. ”和根的空标号结束的。当根的空标号单独出现时,简写成一个单独的点“. ”。因而,有些软件将域名末端出现的“. ”解释为这个域名是绝对(absolute )域名。绝对域名是相对于根而言的,它惟一确定一个节点在层次结构中的位置。绝对域名也用以指代全限定域名(f u l l yqualified domain name),通常简写成FQDN 。不以“. ”结束的域名有时被解释为是相对于某个非根域的。也叫相对域名。
一个域(domain )就是域名空间中的一棵子树。域的名字也就是这棵子树的顶端节点的域名。在上图中,每一个节点以及它的子节点就构成了一个域。要想判断一个域是否是另一个域的子域,很简单,只用比较它们的域名即可。子域的域名是以其父域的域名来结尾的。例如,域la.tyrell.com 一定是tyrell.com 的子域,因为la.tyrell.com 是以tyrell.com 结尾的。同样地,它也是com 的子域。
顺便普及一下GTLD 域名空间:
com 商业组织,如IBM (ibm.com )
edu 教育组织,如柏克莱大学(berkeley.edu )
gov 政府单位,如NASA (nasa.gov )及国家科学基金会(nsf.gov
mil 军事单位,如美国陆军(army.mil )及海军(navy.mil )
net 网络组织,如NSFNET (nsf.net )
org 非营利性组织,如美国国家公园(nationalpark.org )
int 国际性组织,如NATO (nato.int )
特点
由于DNS 的这种树形结构,使它具有了以下特点:
1) 每个域名服务器只维护其下一级的服务器的信息
这是至关重要的,因为此点,对于某台DNS 服务器,它只需要管理它的子节点,对上只要知道它父节点的信息即可。举个例子,对于陕西DNS 来说,陕西DNS 只用关心省内几套DNS 的信息以及根DNS 即可,对陕西DNS 来说,邻省、外省、外国是一个概念,即山西、河南和印尼对陕西DNS 来说都是一样的。
2) 数据库可以无限扩容
横向树是可以无限延伸的。
3) 可以提供无限的查询能力(QPS )
有序的树结构给予查询带来了极大方便,深度、广度优先、哈夫曼树等,给查询提供了无限可能。
GPRS 域名空间
看一眼GPRS 域名空间的局部片段,可以很好的理解整个DNS 架构与其优越性。 由上往下
第一级:MCC 这一级的域名通过MCC 区分不同国家的GPRS 网络。例如460代表中国。 第二级:MNC 这一级的域名通过MNC 区分同一国家不同的GPRS 网络。例如001是中国联通,002是中国移动TD 。
第三级:根据其用途规划格式,如定义全网通用APN ,像CMWAP ,如地区APN ,像LN ,如区分位置区,像LAC 。
第四级及以下层级:皆根据第三级的配置自行规划,但是总层级不超过127级。
由这样一个清晰的树形结构连接起来各个设备信息,使整个网络的域名更加规范化,可以更加高效快速的索引。
DNS 作用
在流程当中可以更清晰的体现DNS 的作用。
还是以GPRS 网络为例,会在以下流程中用到域名解析,也就是会经过DNS : PDP 上下文激活流程
(1) MS 发起PDP 上下文激活请求,激活消息中携带了APN 名称,如CMNET 。
(2) SGSN 接收到PDP 上下文激活请求,向DNS Server发起域名解析请求,需要解
析的域名为完整的APN ,如CMNET.MNC000.MCC460.GPRS 。
(3) DNS Server将解析结果返回给SGSN ,解析结果为GGSN 信令面的IP 地址,如
10.161.234.254。
(4) SGSN 根据解析结果,发送激活请求给目标GGSN ,消息中携带了APN 。
(5) GGSN 接收到激活请求后,根据APN 为MS 分配IP 地址,并将分配的IP 地址
返回给SGSN 。
(6) SGSN 将GGSN 分配的IP 地址发送给MS ,激活成功。
(7) 激活成功后,MS 可以使用分配的IP 地址与外部网络进行通信。
SGSN 间路由区更新流程(Inter RAU)
(1) MS 从一个SGSN 的路由区移动到另一个SGSN 的路由区,发起RAU 请求,
请求消息中携带了Old RAI,如46000123401。
(2) 新SGSN 接收到RAU 请求,向DNS Server发起域名解析请求,需要解析的
域名由RAI 转化得到,如RAC0001.LAC1234.MNC0000.MCC0460.GPRS 。
(3) DNS Server 将解析结果返回给新SGSN ,解析结果为旧SGSN 的信令面IP
地址,如10.161.234.254。
(4) 新SGSN 根据解析结果,向旧SGSN 请求MS 的信息。
(5) 旧SGSN 收到请求后,将保存的MS 的各类信息发送给新SGSN 。
(6) 新SGSN 以Update Location消息通知HLR SGSN的改变。
(7) HLR 发送Update Location Ack消息给新SGSN 确认Update Location消息。
(8) 新SGSN 发送RAU 接受给MS ,RAU 成功。
SGSN 间SRNS 重定位流程(Inter-SGSN SRNS Relocation)
(1) SRNS 根据无线网络情况,确定需要发起Serving RNC重定位,向源SGSN 发起
RELOCATION REQUIRED 消息,请求使用目标RNC 为MS 提供服务。RELOCATION REQUIRED 消息中携带了目标RNC ID,如1111。
(2) 源SGSN 接收到需要重定位消息后,向DNS Server发起域名解析请求,需要解
析的域名由目标RNC ID转化得到,如RNC1111.MNC0000.MCC0460.GPRS 。
(3) DNS Server 将解析结果返回给源SGSN ,解析结果为目标SGSN 的信令面IP 地
址,如10.161.234.254。
(4) 源SGSN 根据解析结果,向目标SGSN 请求进行重定位。
(5) 目标SGSN 收到请求后,进行重定位准备,准备完成后,发送重定位准备完成
给源SGSN 。
(6) 源SGSN 进行后续的重定位流程。
域名解析过程
记录与查询
在DNS 系统中使用资源记录映射DNS 系统所提供的域名(或IP 地址)
1) A 记录
通过DNS server查询出Hostname 所对应的IP 地址。
可以理解成,发给DNS 一个名字,DNS 返回一个地址
2) NS 记录
通过Host name查询出Name Server所对应的IP 地址。
可以理解成,发给DNS 一个名字,DNS 发现这个名字自己不认识,但是这个DNS 知道别的DNS 认识这个名字,那么本DNS 把认识这个名字的DNS 地址返回。(NS A)
3) NAPTR 记录
通过DNS server查询出Domain name所对应的Hostname 的集合。
可以理解成,发给DNS 一个名字,DNS 发现这个名字对应的其实是另一个名字,把这个名字返回。
4) SRV 记录
可以理解成,发给DNS 一个名字,DNS 发现这个名字对应的是一系列名字,把这一系列名字返回。比较特殊的是这些名字之间权值会有些差别。
5) AAAA 、MX 、CNAME 等记录,不太常用
AAAA :DNS Server查询出AAAA 记录中域名所对应的IPv6地址
MX :查询邮件交换服务器的IP 地址
CNAME :为正规域名配置别名的记录
后续DNS 的查询就是这里的单一记录查询或者多种记录以各种方式的混合查询。
资源记录RR (Resource Record )是一组与域名相关的资源信息。域名服务器中保存了大量的资源记录,域名的解析就是通过对资源记录的查询进行的。除了单一的记录查询外还有2种类型的查询
1) 递归查询
能够自动查询到Domain name所对应的最终结果。
DNS server查询出Domain name所属的DNS Server并向其发起逐级查询,直到得到最终所需的IP 地址或Hostname 的集合。
以树的角度很好理解,就是对树的遍历。给出一个目标节点,直接遍历到该节点取值返回。
2) 迭代查询
DNS server 查询出Domain name 所属的DNS Server 返回给Client ,指示Client 向该Server 发起查询。
与递归的不同在于发起查询的DNS 不同,比如A->B->C->D,A 要查D 的地址,那么A 找B ,如果是递归,B 会找C ,C 再找到D ,把D 的地址返回;如果是迭代,B 会告诉C 的地址给A ,A 自己发起对C 的查询。
SOA 以及五元组
看一个现网的SOA
cmnet.lte.mnc007.mcc460.gprs IN SOA sndns07bhw.sn.mnc000.mcc460.gprs. . ( 2013122379 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
1814400 ; expire (3 weeks)
86400 ; minimum (1 day)
)
对应关系如下:因为没有邮件地址所以上例子gprs 后面是2个点,其他都是字面意思
,一般在配置子域时才提供SOA 主机名。不提供SOA 主机名表示配置的区域为本地域的区域,默认取系统参数中的主DNS 域名作为该区域的SOA 主机名。此主机名必须是完整域名(以“. ”结束)。
SOA 可以通过命令修改,修改完需SAV 。
一条资源记录就是一个五元组,它包括域名、生存期、信息类型(class )、资源记录类型(type )、值(value )五项。
PS :资源记录的ORIGIN 表示在下一个ORIGIN 或者结束前,将ORIGIN 后面的字符拼接到下面首字符串的后面。例如:
$ORIGIN hb.mnc0000.mcc0460.gprs.
hbdns01ber A 221.177.160.241
hbdns02ber A 221.177.160.242
hbdns03bhw A 221.177.161.65
hbdns04bhw A 221.177.161.66
hbdns01ber 要接上hb.mnc0000.mcc0460.gprs. ,即
hbdns01ber.hb.mnc0000.mcc0460.gprs.
,聚合记录
在配置省际记录,比如LAC 等,因为其记录是有规律的,比如4700-47FF 都是属于内蒙DNS ,那么可以通过聚合记录一次执行 等效于普通记录批量执行。
举个例子:
ADD GENRES: TYPE=NS, ZONE="mnc0000.mcc0460.gprs", BEGIN=0, END=255, DOMAIN="lac47$", SRV="nmdns01bhw.nm.mnc0000.mcc0460.gprs.", OFFSET=1,WIDTH=2, BASE=Hex;
该条记录实现了增加给内蒙dns01的从lac4700-lacFF 共256条记录。
聚合记录在被添加后,会在/opt/dns/generate.dat记录其相关信息,但是与该条聚合记录等效的资源文件会记录在named 文件夹里。也就是说,增加了一条聚合记录就等效与增加了多条资源记录,在业务功能上没有任何差别。
根
DNS 服务器无法解析的域名将提交给根DNS 进行递归或迭代解析。
目前中国有2根,252和253, 在北京和广东。
根会在Forward 区域配置。Forward 区域是每个域的配置转发的主要部分。一个zone 语句中的type forward可以包括一个forward 和/或forwarders 子句,它会在区域名称给定的域中查询,但是它没有区域文件,不能添加资源记录文件。。
根和Forward 会在named.conf 里配置
options {
directory "/var/named";
pid-file "/var/named/named.pid";
forwarders {
221.177.253.41;
221.177.252.41;
};
DNS 进程
服务器软件运行在SUN Solaris或Linux 操作系统上,由三个进程组成: