DNS域名解析系统
<p> </p><p>DNS服务概述:</p>
<p> </p>
<p>DNS(Domain Name System)域名系统,在TCP/IP 网络中有非常重要的地位,能够提供域名与IP地址的解析服务。</p>
<p> </p>
<p>DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">注:</span>DNS 域名空间中,树的最大深度不得超过127 层,树中每个节点最长可以存储63 个字符。</p>
<p> </p>
<p> </p>
<p> </p>
<p> 1、域和域名</p>
<p>DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。</p>
<p>域名空间的每个域的名字,通过域名进行表示。</p>
<p> </p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">域名:通常由一个完全合格域名(</span>FQDN)标识。FQDN能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN)为google.com。</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">例如,</span>google为com域的子域,其表示方法为google.com,而www为google域中的子域,可以使用www.google.com表示。</p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">注意:通常,</span>FQDN 有严格的命名限制,长度不能超过256 字节,只允许使用字符a-z,0-9,A-Z</p>
<p><span style="font-family: KaiTi_GB2312">和减号(</span>-)。点号(.)只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。</p>
<p>域名不区分大小。</p>
<p>由最顶层到下层,可以分成:根域、顶级域、二级域、子域。</p>
<p> </p>
<p> </p>
<p>Internet 域名空间的最顶层是根域(root),其记录着Internet 的重要DNS 信息,由Internet域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组织。</p>
<p> </p>
<p>“.”全球有13个根(root)服务器</p>
<p> </p>
<p>DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理。共有3 种类型的顶级域。</p>
<p><span style="font-family: KaiTi_GB2312">组织域:采用</span>3 个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组</p>
<p><span style="font-family: KaiTi_GB2312">织,</span>org 为非营利机构组织,int 为国际机构组织。</p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">地址域:采用两个字符的国家或地区代号。如</span>cn 为中国,kr 为韩国,us 为美国。</p>
<p><span style="font-family: KaiTi_GB2312">反向域:这是个特殊域,名字为</span>in-addr.arpa,用于将IP 地址映射到名字(反向查询)。</p>
<p><span style="font-family: KaiTi_GB2312">对于顶级域的下级域,</span>Internet 域名注册授权机构授权给Internet 的各种组织。当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机和其他设备,并管理分配的域中主机名与IP 地址的映射信息。</p>
<p> </p>
<p> </p>
<p> </p>
<p>2、区(Zone)</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">区是</span>DNS 名称空间的一部分,其包含了一组存储在DNS 服务器上的资源记录。</p>
<p><span style="font-family: KaiTi_GB2312">使用区的概念,</span>DNS 服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。</p>
<p> </p>
<p> </p>
<p> </p>
<p>3、DNS 相关概念</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">(</span>1)DNS 服务器</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">运行</span>DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。</p>
<p><span style="font-family: KaiTi_GB2312">在解答查询时,如果</span>DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器</p>
<p>没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法</p>
<p>均失败,则回应客户机没有所请求的信息或请求的信息不存在。</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">(</span>2)DNS 缓存</p>
<p> </p>
<p>DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当</p>
<p><span style="font-family: KaiTi_GB2312">其他域名服务器返回查询结果时,该</span>DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。</p>
<p><span style="font-family: KaiTi_GB2312">当下一次客户机提交相同请求时,</span>DNS 服务器能够直接使用缓存中的DNS 信息进行解析。</p>
<p> </p>
<p>2)DNS查询方式: 递归查询和迭代查询</p>
<p><span style="font-family: KaiTi_GB2312">看一个</span>DNS查询过程:</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145110615-1329119764.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">通过</span>8个步骤的解析过程就使得客户端可以顺利访问www.163.com 这个域名,但实际应用中,通常这个过程是非常迅速的</p>
<p> </p>
<p><1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。</p>
<p><2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直</p>
<p>接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。</p>
<p><3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。</p>
<p><4> 本地服务器再向返回的域名服务器发送请求。</p>
<p><5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结</p>
<p>果,否则通知客户机下级的域名服务器的地址。</p>
<p><6> 本地域名服务器将查询请求发送给返回的DNS 服务器。</p>
<p><7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程</p>
<p><span style="font-family: KaiTi_GB2312">将重复</span><6>、<7>步骤,直到返回解析信息或解析失败的回应)。</p>
<p><8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。</p>
<p> </p>
<p> </p>
<p><span style="text-decoration: underline">5、两种查询方式:</span></p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">(</span>1)递归查询</span></p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">递归查询是一种</span>DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一</span></p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">个准确的查询结果回复客户机。如果</span>DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询</span></p>
<p><span style="text-decoration: underline">问其他服务器,并将返回的查询结果提交给客户机。</span></p>
<p> </p>
<p> </p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">(</span>2)迭代查询</span></p>
<p><span style="text-decoration: underline">DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。 </span></p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">正向解析与反向解析</span></p>
<p> </p>
<p><span style="text-decoration: underline">1)正向解析</span></p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">正向解析是指域名到</span>IP 地址的解析过程</span>。</p>
<p> </p>
<p># ping www.baidu.com</p>
<p>PING www.a.shifen.com (119.75.217.109) 56(84) bytes of data.</p>
<p>64 bytes from 119.75.217.109 (119.75.217.109): icmp_seq=1 ttl=54 time=4.84 ms</p>
<p>64 bytes from 119.75.217.109 (119.75.217.109): icmp_seq=2 ttl=54 time=5.81 ms</p>
<p>64 bytes from 119.75.217.109 (119.75.217.109): icmp_seq=3 ttl=54 time=6.79 ms</p>
<p>64 bytes from 119.75.217.109 (119.75.217.109): icmp_seq=4 ttl=54 time=8.14 ms</p>
<p>64 bytes from 119.75.217.109 (119.75.217.109): icmp_seq=5 ttl=54 time=5.73 ms</p>
<p> </p>
<p> </p>
<p><span style="text-decoration: underline">2)反向解析</span></p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">反向解析是从</span>IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。</span></p>
<p> </p>
<p> </p>
<p>7、DNS资源记录</p>
<p> </p>
<p>1)SOA 资源记录</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">每个区在区的开始处都包含了一个起始授权记录(</span>Start of Authority Record),简称SOA 记录。</p>
<p>SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。</p>
<p> </p>
<p> </p>
<p>2)NS 资源记录</p>
<p> </p>
<p>NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。</p>
<p> </p>
<p> </p>
<p> </p>
<p>3)A 资源记录</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">地址(</span>A)资源记录把FQDN 映射到IP 地址。 因为有此记录,所以DNS服务器能解析FQDN域名对应的IP 地址。</p>
<p> </p>
<p>4)PTR 资源记录</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">相对于</span>A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。</p>
<p> </p>
<p>5)CNAME 资源记录</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">别名记录(</span>CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。</p>
<p> </p>
<p>6)MX 资源记录</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">邮件交换(</span>MX)资源记录,为DNS 域名指定邮件交换服务器。</p>
<p><span style="font-family: KaiTi_GB2312">邮件交换服务器是为</span>DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。</p>
<p>。</p>
<p> </p>
<p> </p>
<p><span style="text-decoration: underline"><span style="font-family: KaiTi_GB2312">模式:</span> C/S 模式</span></p>
<p> </p>
<p><span style="text-decoration: underline">资源记录的通用格式</span></p>
<p><span style="text-decoration: underline">name IN type value</span></p>
<p> </p>
<p>name:要解析的目标主机的名称</p>
<p>time:解析结果的缓存时间</p>
<p>IN:关键词</p>
<p>type:资源记录类型</p>
<p>value:将目标主机解析到哪个地址</p>
<p> </p>
<p>例子:</p>
<p>www 86400 IN A 1.2.3.4</p>
<p> </p>
<p>2、端口</p>
<p># vim /etc/services</p>
<p> </p>
<p>端口:</p>
<p>tcp/53 udp/53 #用于客户端查询</p>
<p>tcp/953 udp/953 #用于DNS主从同步</p>
<p> </p>
<p> </p>
<p>BIND 简介</p>
<p> </p>
<p>BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统)。BIND 主要有三个版</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">本:</span>BIND4、BIND8、BIND9。</p>
<p> </p>
<p>BIND8 融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念:IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等等。</p>
<p> </p>
<p><strong><span style="font-family: KaiTi_GB2312">部署</span>DNS正向解析:</strong></p>
<p><span style="font-family: KaiTi_GB2312">主配置文件(</span>/etc/named.conf):只有58行,而且在去除注释信息和空行之后,实际有效的参数仅有30行左右,这些参数用来定义bind服务程序的运行。</p>
<p><span style="font-family: KaiTi_GB2312">区域配置文件(</span>/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。</p>
<p><span style="font-family: KaiTi_GB2312">数据配置文件目录(</span>/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">第一步:下载</span>bind</p>
<p># yum install bind bind-utils -y</p>
<p>bind #该包为DNS 服务的主程序包。</p>
<p>bind-utils #该包为客户端工具,默认安装,用于搜索域名指令</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145353575-158985444.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第二步:编辑</span>/etc/named.conf文件</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145413339-2106259757.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145431928-515313079.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145521531-753621218.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第一处修改为</span>any表示:服务器上的所有IP地址均可提供DNS域名解析服务</p>
<p><span style="font-family: KaiTi_GB2312">第二处修改为</span>any表示:允许所有人对本服务器发送DNS查询请求</p>
<p> </p>
<p><span style="font-family: KaiTi_GB2312">第三步:修改区域配置文件</span></p>
<p># cat /etc/named.rfc1912.zones </p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145558695-1821098690.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145607273-1199003169.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第四步:配置数据配置文件</span></p>
<p><span style="font-family: KaiTi_GB2312">可以从</span>/var/named目录中复制一份正向解析的模板文件(named.localhost),然后把域名和IP地址的对应数据填写数据配置文件中并保存。在复制时记得加上-a参数,这可以保留原始文件的所有者、所属组、权限属性等信息,以便让bind服务程序顺利读取文件内容</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145635602-2144152103.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145644649-1565118257.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145651814-884582662.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145700854-1221653591.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第六步:重启服务</span></p>
<p><span style="font-family: KaiTi_GB2312">第七步:修改网卡配置文件中的</span>DNS为本机IP地址</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145736406-6542534.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145751044-1981293764.png" alt=""></p>
<p><strong>PS:这里只能使用静态IP</strong></p>
<p><span style="font-family: KaiTi_GB2312">第八步:重启网络</span></p>
<p><span style="font-family: KaiTi_GB2312">第九步:测试</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145826628-1017562962.png" alt=""></span></p>
<p> </p>
<p> </p>
<p><strong><span style="font-family: KaiTi_GB2312">部署</span>DNS反向解析</strong></p>
<p><span style="font-family: KaiTi_GB2312">第一步:修改主配置文件</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145858562-1611145360.png" alt=""></span></p>
<p><span style="font-family: KaiTi_GB2312">第二步:修改区域配置文件</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145917032-1359176028.png" alt=""></span></p>
<p> <img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729145943769-1000594609.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第三步:修改资源记录配置文件</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150006253-1379773839.png" alt=""></span></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150014589-1693175066.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第四步:重启</span>DNS</p>
<p><span style="font-family: KaiTi_GB2312">第五步:写入网卡配置文件</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150035296-2026999275.png" alt=""></span></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150045398-487416958.png" alt=""></p>
<p><span style="font-family: KaiTi_GB2312">第六步:测试</span></p>
<p><span style="font-family: KaiTi_GB2312"><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150111862-224802161.png" alt=""></span></p>
<p> </p>
<p> </p>
<p><strong>hosts文件:</strong>解析主机名的文件</p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150145923-2097687962.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150153468-1771544804.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150208277-1110230887.png" alt=""></p>
<p><img src="https://img2018.cnblogs.com/blog/1646348/201907/1646348-20190729150222168-873288427.png" alt=""></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/leeeel/p/11263930.html
頁:
[1]