DNS域名解析
<h1 class="article-title" data-v-1ee0c924="">DNS域名解析</h1><div> </div>
<div class="author-info-block" data-v-1ee0c924="">
<div>
<div>
<h1 data-id="heading-0">DNS</h1>
<h2 data-id="heading-1">概念</h2>
<p>域名系统(英文:Domain Name System,缩写:DNS),使用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。</p>
<p>简单来说就是:把域名转换成网络可以识别的ip地址,再通过IP地址访问主机。 这种由文字组成的名称,显而易见要更容易记忆。</p>
<p>每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。</p>
<blockquote>
<p><strong>默认端口:</strong></p>
<ul>
<li>连接DNS服务器,使用TCP协议的53端口。</li>
<li>DNS服务器进行解析,使用UDP协议的53端口。</li>
</ul>
</blockquote>
<h2 data-id="heading-2">DNS分布式数据结构</h2>
</div>
<br>
<div>
<div>
<p>域名级数是指一个域名由多少级组成,域名的各个级别被“.”分开,最右边的"."就是根域名,通常省略不写。</p>
<p>顶级域名,又称一级域名,常见的有".com"、".org"、".net"、".cn"等。</p>
<p>二级域名,就是在一级域名前再加一级,如"baidu.com"。</p>
</div>
<br>
<div>
<div>
<blockquote>
<p><strong>所有的域名必须以点(.)结尾</strong> <strong>根域名服务器:</strong></p>
</blockquote>
<ul>
<li>IPv4的根名称服务器: 全世界只有13台IPv4根域名服务器。1个为主根服务器在美国。其余12个均为辅根服务器,其中9台在美国,欧洲2个(位于英国和瑞典),亚洲1个位于日本。</li>
<li>IPv6的根名称服务器:全球共25台,中国1主3从,美国1主2从。</li>
<li>根域名服务器一旦有任何异常对整个互联网影响都非常大。目前全球有了许多的根域名服务器镜像服务器,这点增加了容错率。</li>
</ul>
<p><strong>一级DNS服务器:</strong> 专门负责一级域名(顶级域名)的解析</p>
<p>通用顶级域名:</p>
</div>
<br>
<div>
<div class="table-wrapper">
<table border="0">
<tbody>
<tr>
<td>一级域名</td>
<td>说明</td>
</tr>
<tr>
<td>.com</td>
<td>商业机构,但个人也可以注册</td>
</tr>
<tr>
<td>.net</td>
<td>网络服务机构</td>
</tr>
<tr>
<td>.edu</td>
<td>教育机构</td>
</tr>
<tr>
<td>.int</td>
<td>国际机构</td>
</tr>
<tr>
<td>.gov</td>
<td>政府机构</td>
</tr>
<tr>
<td>.org</td>
<td>非营利性组织</td>
</tr>
<tr>
<td>.mil</td>
<td>军事机构</td>
</tr>
</tbody>
</table>
</div>
<p>国家顶级域名:以地理域名命名的顶级域名 。</p>
<div>
<div class="table-wrapper">
<table border="0">
<tbody>
<tr>
<td>二级域名</td>
<td>说明</td>
</tr>
<tr>
<td>.com.cn</td>
<td>中国商业组织</td>
</tr>
<tr>
<td>.edu.cn</td>
<td>中国教育机构</td>
</tr>
<tr>
<td>.org.cn</td>
<td>中国非盈利组织</td>
</tr>
<tr>
<td>.net.cn</td>
<td>中国运营商</td>
</tr>
</tbody>
</table>
</div>
</div>
子域名服务器: 专门负责子域名的解析(三级及以下域名都叫子域名)。</div>
<div> </div>
<div>
<div class="table-wrapper">
<table border="0">
<tbody>
<tr>
<td>三级域名</td>
<td>说明</td>
</tr>
<tr>
<td>sina.com.cn</td>
<td>新浪</td>
</tr>
<tr>
<td>pku.edu.cn</td>
<td>北京大学</td>
</tr>
<tr>
<td>tsinghua.edu.cn</td>
<td>清华大学</td>
</tr>
</tbody>
</table>
</div>
</div>
<div>常用主机名
<div class="table-wrapper">
<table border="0">
<tbody>
<tr>
<td>
<p>主机名</p>
<p>www</p>
<p>mail</p>
<p>news</p>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div>
<div>
<p>注:</p>
<ul>
<li>114.114.114.114是国内移动、电信和联通通用的DNS服务器,解析成功率相对来说更高,国内用户使用的比较多,速度相对快、稳定,是国内用户上网常用的DNS。</li>
<li>8.8.8.8是GOOGLE公司提供的DNS服务器,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。</li>
</ul>
<h2 data-id="heading-3"> </h2>
</div>
<div>
<div>
<h2 data-id="heading-3">DNS系统类型</h2>
<p><strong>缓存域名服务器</strong></p>
<ul>
<li>也称为DNS高速缓存服务器</li>
<li>通过向其他域名服务器查询获得域名-->IP地址记录</li>
<li>将域名查询结果缓存到本地,提高重复查询时的速度</li>
</ul>
<p><strong>主域名服务器</strong></p>
<ul>
<li>特定DNS区域的权威服务器,具有唯一性</li>
<li>负责维护该区域内所有域名-->IP地址的映射记录</li>
<li>需要自行建立所负责区域的地址数据文件</li>
</ul>
<p><strong>从域名服务器</strong></p>
<ul>
<li>也称为辅助域名服务器,是对主域名服务器的热备份</li>
<li>其维护的域名-->IP地址记录来源于主域名服务器</li>
<li>需要从主域名服务器自动同步区域地址数据库</li>
</ul>
</div>
<br>
<div>
<div class="cnblogs_code">
<pre> windows系统查询DNS缓存的命令:ipconfig/displaydns
windows系统清理DNS缓存的命令:ipconfig/flushdns
Linux系统清理DNS缓存需要安装nscd软件,启动、执行“nscd -i hosts”命令</pre>
</div>
<div>
<div>
<h2 data-id="heading-4">DNS的查询方式(递归查询和迭代查询)</h2>
<p><strong>递归查询</strong></p>
<ul>
<li>主机向本地域名服务器的查询一般都是采用递归查询。</li>
<li>如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。在域名服务器查询期间,客户机将完全处于等待状态。</li>
<li>因此,递归查询只会返回两种信息:要么是所要查询的IP地址,要么是查询失败。</li>
</ul>
<p><strong>迭代查询</strong></p>
<ul>
<li>本地域名服务器向根域名服务器的查询是迭代查询。</li>
<li>当根域名服务器收到本地域名服务器发出的迭代查询请求报文后,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。下一个服务器收到请求后也是如此,要么返回IP,要么告诉本地域名服务器下一步去找谁。 即本地域名服务器按照提示的指引依次查询, 直到返回查询的结果为止 。</li>
</ul>
<p><strong>递归查询和迭代查询的特点:</strong></p>
<ul>
<li>递归查询:主机只发出一次请求,要求对方给出最终结果。返回的结果只有两种:查询成功或查询失败。</li>
<li>迭代查询:主机需要发起多次请求,返回的是所需IP地址或最佳查询地址。</li>
</ul>
<p> </p>
</div>
<div>
<div>
<h2 data-id="heading-5">域名的解析过程</h2>
<blockquote>
<p> Client(客户机)--> 查询/etc/hosts文件 --> Client DNS Service Local Cache ( 查询DNS服务本机缓存,只有Windows系统有)--> DNS Server(主机向本地域名服务器请求,递归查询)-->DNS Server Cache (本地域名服务器查询缓存信息)--> DNS iteration(本地域名服务器进行迭代查询)——>根域名服务器)-->一级域名服务器-->二级域名服务器-->三级域名服务器...</p>
</blockquote>
<ul>
<li>
<p>客户机先去查找本机的/etc/hosts 文件,看文件中是否存在该域名和IP地址的映射记录。如果有就调用,没有就进行下一步。</p>
</li>
<li>
<p>客户机请求本地域名服务器(LDNS)来解析这个域名,主机要求本地域名服务器直接返回最终结果。在返回结果之前,客户机将完全处于等待状态,不再二次请求。统一由本地域名服务器向各级域名服务器转发请求。</p>
</li>
<li>
<p>本地域名服务器收到客户机的请求后,先查询自己的缓存信息,如果有这个域名的映射记录则返回结果,没有则进行下一步。</p>
</li>
<li>
<p>本地域名服务器请求根域名服务器解析这个域名,根域名告诉本地域名服务器去找对应的一级域名服务器。</p>
</li>
<li>
<p>本地域名服务器请求一级域名服务器解析这个域名,一级域名服务器告诉它去找对应的二级域名服务器。</p>
</li>
<li>
<p>本地域名服务器请求二级域名服务器解析这个域名,二级域名服务器告诉它去找对应的子域名服务器。</p>
</li>
<li>
<p>本地域名服务器请求子域名服务器解析这个域名,子域名服务器返回对应的IP地址。</p>
</li>
<li>
<p>本地域名服务器将IP地址记录到缓存中,并返回给客户机。客户机根据收到的IP地址访问该网站。</p>
</li>
</ul>
<h1 data-id="heading-6">bind</h1>
<p><strong>BIND配置文件</strong></p>
<ul>
<li>主配置文件: <strong>/etc/named.conf</strong></li>
<li>根域配置文件: <strong>/var/named/named.ca</strong></li>
<li>区域配置文件: <strong>/etc/named.rfc1912.zones</strong></li>
<li>保存DNS解析记录的数据文件位于: <strong>/var/named/目录下</strong></li>
</ul>
<p><strong>BIND服务控制</strong></p>
<ul>
<li>systemctl named.service</li>
</ul>
<h2 data-id="heading-7">配置文件(全局配置文件)</h2>
<p><strong>BIND服务的主配置文件位于: /etc/named.conf</strong>。</p>
<ul>
<li>设置DNS服务器的全局参数</li>
<li>包括监听地址和端口、区域数据文件存放的目录等</li>
<li>使用 options{......}; 的配置段</li>
</ul>
</div>
<img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013122222620-1557885019.png" alt="" loading="lazy">
<p> </p>
<p> </p>
<h2 data-id="heading-8">区域配置文件</h2>
<p>区域配置文件位于:/etc/named.rfc1912.zones。</p>
<ul>
<li>设置本服务器提供域名解析的特定DNS区域</li>
<li>包括域名、服务器角色、数据文件名等</li>
<li>使用 zone "区域名" IN{......}; 的配置段</li>
</ul>
<img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013122432489-1685006316.png" alt="" loading="lazy">
<p> </p>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013122508514-1249834709.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div>
<div>
<h2 data-id="heading-9">区域数据库文件(zone文件)</h2>
<p>BIND服务的区域数据库文件位于/var/named/ 目录下,具体文件名由管理员定义。一般格式为/var/named/域名.zone,例如:/var/named/yuji.com.zone。 <strong>局TTL配置项及SOA记录</strong></p>
<ul>
<li>$TTL(Time To Live,生存时间): 表示DNS记录在DNS服务器上的缓存时间,默认单位秒。</li>
<li>@:表示当前域名。</li>
<li>IN:表示使用 Internet 协议。</li>
<li>SOA(Start Of Authority,授权信息开始):表示解析方式。</li>
<li>分号 ";" 开始的部分表示注释信息</li>
</ul>
</div>
</div>
<div>
<div>
<p><strong>)正向解析记录</strong></p>
<ul>
<li>NS记录:域名服务器记录(Name Server)。</li>
<li>MX记录:邮件交换记录(Mail Exchange)。</li>
<li>A记录:地址记录(Address)。用来指定主机名(或域名)对应的IP地址记录。用于正向解析。</li>
<li>CNANE:别名记录。 这种记录允许您将多个名字映射到同一台计算机。</li>
</ul>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre> NSmaster //当前区域的DNS服务器名称
masterIN A 192.168.72.10 //记录DNS服务器master的IP地址
MX 10 mail.yuji.com //MX为邮件交换记录,数字越大优先级越低
MX 20 mail2.yuji.com //MX为邮件交换记录,数字越大优先级越低
mail IN A 192.168.72.103 //记录正向解析mail.yuji.com对应的IP
mail2 IN A 192.168.72.104 //记录正向解析mail2.yuji.com对应的IP
www IN A 192.168.72.101 //记录正向解析www.yuji.com对应的IP
ftp IN A 192.168.72.102 //记录正向解析ftp.yuji.com对应的IP
web IN CNAME WWW //CNAME使用别名,web是www的别名
* IN A 192.168.72.100 //泛域名解析,*表示任意主机名。泛域名有优先级,从上而下匹配。</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p>3)反向解析记录</p>
<p>PTR: 指针记录 (Pointer Record) ,用来指定IP地址对应的域名。用于反向解析。</p>
<p>记录的如一列指定IP地址中的主机地址部分</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_496488" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp spaces"> </code><code class="csharp plain">NS master </code><code class="csharp comments">//当前区域的DNS服务器名称</code></div>
<div class="line number2 index1 alt1"><code class="csharp spaces"> </code><code class="csharp plain">master IN A 192.168.72.10 </code><code class="csharp comments">//记录DNS服务器的IP地址</code></div>
<div class="line number3 index2 alt2"><code class="csharp spaces"> </code><code class="csharp plain">200 IN PTR www.nan.com </code><code class="csharp comments">//记录反向解析192.168.72.200对应的IP地址</code></div>
<div class="line number4 index3 alt1"><code class="csharp spaces"> </code><code class="csharp plain">201 IN PTR ftp.nan.com </code><code class="csharp comments">//记录反向解析192.168.72.201对应的IP地址</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> </p>
<div>
<div>
<blockquote>
<p>小贴士:</p>
<ul>
<li>TTL可从全局继承</li>
<li>使用 "@" 符号可用于引用当前区域的域名</li>
<li>同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应。</li>
<li>同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机。</li>
</ul>
</blockquote>
<h3 data-id="heading-10">区域数据库文件的特殊应用</h3>
<p><strong>基于域名解析的负载均衡</strong></p>
</div>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_635721" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain">www IN A 192.168.19.10</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain">www IN A 192.168.19.11</code></div>
<div class="line number3 index2 alt2"><code class="csharp plain">www IN A 192.168.19.12</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> </p>
<ul>
<li>同一域名对应到多个IP地址</li>
</ul>
<p>泛域名解析</p>
<ul>
<li>找不到精确对应的A记录时,使用星号(*)进行匹配
<div class="cnblogs_code">
<pre>* IN A 192.168.19.11</pre>
</div>
<h1 data-id="heading-11">实验</h1>
<h2 data-id="heading-12">正向解析</h2>
<h3 data-id="heading-13">实验要求:</h3>
<p>架设一台DNS服务器负责yuji.com域的域名解析工作。DNS服务器的IP地址为192.168.72.10,域名为master.pp.com。要求为以下域名做正向解析工作。</p>
</li>
</ul>
<div class="cnblogs_code">
<pre>www.pp.com 192.168.19.21
mail.pp.com 192.168.19.22
ftp.pp.com 192.168.19.23</pre>
</div>
<h3 data-id="heading-14">实验思路:</h3>
<ol>
<li>安装bind软件包</li>
<li>修改主配置文件</li>
<li>修改区域配置文件,添加正向区域配置</li>
<li>配置正向区域数据文件</li>
<li>启动服务,关闭防火墙</li>
<li>在客户端的域名解析配置文件中添加DNS服务器地址</li>
<li>测试DNS解析,验证实验是否成功。</li>
</ol></div>
<h3 data-id="heading-15">实验步骤:</h3>
<p>步骤一:</p>
<p>安装bind软件包</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>yum install -y bind //安装bind软件包
# rpm -qc bind //查询bind软件配置文件所在路径
/etc/logrotate.d/named
/etc/named.conf //主配置文件
/etc/named.iscdlv.key
/etc/named.rfc1912.zones //区域配置文件
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost //区域数据配置文件
/var/named/named.loopback</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013122826912-1774867624.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>options {
listen-on port 53 { any; }; //允许DNS服务器监听所有IP地址
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file"/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许所有客户端查询</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p> </p>
<p>步骤二:</p>
<p>修改主配置文件</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>options {
listen-on port 53 { any; }; //允许DNS服务器监听所有IP地址
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file"/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; //允许所有客户端查询</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144402531-1105622032.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p>步骤三:</p>
<p>修改区域配置文件,添加正向区域配置</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre>vim /etc/named.rfc1912.zones //编辑区域配置文件
zone "pp.com" IN { //定义正向DNS区域
type master; //定义区域类型为master
file "pp.com。zone"; //设置对应的正向解析数据库文件
allow-update { none; }; //
};</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144442448-617635860.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p>步骤四:</p>
<p>配置正向区域数据文件</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre># cd /var/named/
# ls
datadynamicnamed.canamed.emptynamed.localhostnamed.loopbackslaves
# cp -p named.localhost pp.com.zone
# vim pp.com.zone
$TTL 1D
@ IN SOApp.com. admin.pp.com.zone. (
0 ; serial //更新序列号,可以是 10 位以内的整数
1D ; refresh //刷新时间,重新下载地址数据的间隔
1H ; retry //重试延时,下载失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
NS pp.com.
A 192.168.19.20
www IN A 192.168.19.21
mail IN A 192.168.19.22
ftp IN A 192.168.19.23
* IN A 192.168.19.24</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144510740-535162302.png" alt="" loading="lazy"></p>
<p> </p>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144532712-370684994.png" alt="" loading="lazy"></p>
<p> </p>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144604498-910861130.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div>
<div>
<ul>
<li>“@”这里是一个变量,当前DNS区域名</li>
<li>SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。</li>
<li>“pp.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉</li>
<li>“admin.pp.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替</li>
</ul>
</div>
</div>
<p>步骤五:</p>
<p>启动服务,关闭防火墙</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_847215" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain"># systemctl start named</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain"># systemctl stop firewalld</code></div>
<div class="line number3 index2 alt2"><code class="csharp plain"># setenforce 0</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144749569-1334040039.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div>
<div>
<blockquote>
<ul>
<li>如果服务启动失败,可以查看日志文件来排查错误<br>tail -f /var/log/messages</li>
<li>如果服务启动卡住,可以执行下面命令解决<br>rndc-confgen -r /dev/urandom -a</li>
</ul>
</blockquote>
<p><strong>步骤六:</strong></p>
<p>在客户端的域名解析配置文件中添加DNS服务器地址</p>
<p>方法一:</p>
</div>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre># vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.20
#nameserver 114.114.114.114
#修改完立即生效</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013144924041-366068966.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre># vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=34aeac22-1154-4c4b-a76c-55c5e7b81429
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.20
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168,19,20
#DNS2=114.114.114.114
# systemctl restart network
#修改完后需要重启网卡</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013145202754-314434824.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p>步骤七:</p>
<p>测试DNS解析,验证实验是否成功。</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<p># host www.pp.com<br>www.pp.com has address 76.223.65.111<br>www.pp.com has address 13.248.216.40</p>
<p># host ftp.pp.com<br>ftp.pp.com has address 76.223.65.111<br>ftp.pp.com has address 13.248.216.40</p>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013145439595-528163744.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div>
<h2 data-id="heading-16">反向解析</h2>
<h3 data-id="heading-17"><strong>实验要求:</strong></h3>
<p>要求为以下IP地址做反向解析工作。</p>
<pre class="highlighter-hljs"><code class="hljs copyable highlighter-hljs language-undefined"> 192.168.19.200 www.chc.com
192.168.72.201 ftp.chc.com
复制代码</code></pre>
<h3 data-id="heading-18">实验思路:</h3>
<ol>
<li>修改区域配置文件,添加反向区域配置</li>
<li>配置反向区域数据文件</li>
<li>重启服务进行测试</li>
</ol>
<h3 data-id="heading-19">实验步骤:</h3>
<p><strong>步骤一:</strong></p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<p>root@localhost named]# vim /etc/named.rfc1912.zones</p>
<p>zone "68.168.192.in-addr.arpa" IN { <span class="hljs-comment">//反向解析的地址倒过来写,代表解析192.168.19段的地址<br>type master; <br>file "pp.com.zone"; //指定区域数据文件为chc.com.zone<br>allow-update { none; }; <br>};</span></p>
<p> </p>
<img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013145714287-1643239869.png" alt="" loading="lazy">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p> </p>
<p> </p>
<p>步骤二:</p>
<p>配置反向区域数据文件</p>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013150341530-85343610.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_646584" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
<div class="line number6 index5 alt1">6</div>
<div class="line number7 index6 alt2">7</div>
<div class="line number8 index7 alt1">8</div>
<div class="line number9 index8 alt2">9</div>
<div class="line number10 index9 alt1">10</div>
<div class="line number11 index10 alt2">11</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain">$TTL 1D</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain">@ IN SOA chc.com.admin.chc.com. (</code></div>
<div class="line number3 index2 alt2"><code class="csharp spaces"> </code><code class="csharp plain">0 ; serial</code></div>
<div class="line number4 index3 alt1"><code class="csharp spaces"> </code><code class="csharp plain">1D ; refresh</code></div>
<div class="line number5 index4 alt2"><code class="csharp spaces"> </code><code class="csharp plain">1H ; retry</code></div>
<div class="line number6 index5 alt1"><code class="csharp spaces"> </code><code class="csharp plain">1W ; expire</code></div>
<div class="line number7 index6 alt2"><code class="csharp spaces"> </code><code class="csharp plain">3H ) ; minimum</code></div>
<div class="line number8 index7 alt1"><code class="csharp spaces"> </code><code class="csharp plain">NS chc.com.</code></div>
<div class="line number9 index8 alt2"><code class="csharp spaces"> </code><code class="csharp plain">A 192.168.68.100</code></div>
<div class="line number10 index9 alt1"><code class="csharp plain">200 IN PTR www.chc.com</code></div>
<div class="line number11 index10 alt2"><code class="csharp plain">201 IN PTR mail.chc.com</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> </p>
<p>步骤三:</p>
<p>重启服务进行测试</p>
<div class="cnblogs_code">
<pre># host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.chc.com.19.168.192.in-addr.arpa.
# nslookup 192.168.19.201
201.19.168.192.in-addr.arpa name = mail.chc.com.19.168.192.in-addr.arpa.</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013150647368-1186579433.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<div>
<div>
<h1 data-id="heading-20">构建主从域名服务器</h1>
<h2 data-id="heading-21">实验:</h2>
<h3 data-id="heading-22"><strong>实验思路:</strong></h3>
<ol>
<li>修改主域名服务器的区域配置文件,修改正、反向区域配置</li>
<li>修改从域名服务器的主配置文件</li>
<li>修改从域名服务器区域配置文件,添加正、反区域配置</li>
<li>主、从都重启动服务,并查看区域数据文件是否已下载成功</li>
<li>在客户端的域名解析配置文件中添加从DNS服务器地址;<br>在服务端端的域名解析配置文件中添加主DNS服务器地址</li>
<li>测试</li>
</ol>
<h3 data-id="heading-23"><strong>实验步骤:</strong></h3>
<p><strong>步骤一:</strong></p>
<p>修改主域名服务器的区域配置文件,修改正、反向区域配置</p>
</div>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre># vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
type master; //类型为主区域
file "jlx.com.zone";
allow-transfer { 192.168.19.10; }; //允许从服务器下载正向区域数据,这里添从服务器的IP地址
};
zone "19.168.192.in-addr.arpa" IN {
type master;
file "jlx.com.zone.local";
allow-transfer {192.168.19.10; };
};:</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p>步骤二:</p>
<p>修改从域名服务器的主配置文件</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<p>options {<br>listen-on port 53 { 192.168.19.10; }; <span class="hljs-regexp">//监听<span class="hljs-number">53端口,ip地址使用提供服务的本地IP即可,也可用any代表所有<br>listen-on-v6 port 53 { ::1; };<br>directory "/var/named";<br>dump-file "/var/named/data/cache_dump.db";<br>statistics-file "/var/named/data/named_stats.txt";<br>memstatistics-file "/var/named/data/named_mem_stats.txt";<br>recursing-file "/var/named/data/named_recursing":<br>"/etc/named.conf" 64L, 1954C <span class="hljs-regexp">//允许使用本DNS解析服务的网段,也可用any代表所有</span></span></span></p>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013151055134-266314671.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p>步骤三:</p>
<p>修改从域名服务器区域配置文件,添加正、反区域配置</p>
<div class="cnblogs_code">
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
<pre># vim /etc/named.rfc1912.zones
zone "jlx.com" IN {
type slave;
file "slaves/jlx.com.zone"; //下载的区域数据文件保存到slaves/目录下
masters { 192.168.19.20; }; //指定主服务器的IP地址
zone "19.168.192.in-addr.arpa" IN {
type slave;
file "slaves/jlx.com.zone.local";
masters { 192.168.19.20; };</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码"></span></div>
</div>
<p>步骤四:</p>
<p>主、从都重启动服务,并查看区域数据文件是否已下载成功</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_938904" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain">systemctl restart named</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain"># ls -l /</code><code class="csharp keyword">var</code><code class="csharp plain">/named/slaves/</code></div>
<div class="line number3 index2 alt2"><code class="csharp plain">总用量 8</code></div>
<div class="line number4 index3 alt1"><code class="csharp plain">-rw-r--r--. 1 named named 252 8月 17 18:06 jlx.com.zone</code></div>
<div class="line number5 index4 alt2"><code class="csharp plain">-rw-r--r--. 1 named named 400 8月 17 18:06 jlx.com.zone.local</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013151241805-756914712.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p> 析配置文件中添加从DNS服务器地址</p>
</div>
<p> </p>
</div>
<div class="cnblogs_code">
<pre># echo "nameserver 192.168.19.10">> /etc/resolv.conf
# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.19.20
nameserver 192.168.19.10</pre>
</div>
<p><img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013151326859-1444076530.png" alt="" loading="lazy"></p>
<p> </p>
<p> 在服务端端的域名解析配置文件中添加主DNS服务器地址</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_553256" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
<div class="line number5 index4 alt2">5</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain"># echo </code><code class="csharp string">"nameserver 192.168.19.20"</code><code class="csharp plain">>> /etc/resolv.conf</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain"># cat /etc/resolv.conf</code></div>
<div class="line number3 index2 alt2"><code class="csharp preprocessor"># Generated by NetworkManager</code></div>
<div class="line number4 index3 alt1"><code class="csharp plain">nameserver 192.168.19.10</code></div>
<div class="line number5 index4 alt2"><code class="csharp plain">nameserver 192.168.19.20</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013151426264-2072696293.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<p> </p>
<p>步骤六:</p>
<p>测试</p>
<div class="cnblogs_Highlighter sh-gutter">
<div>
<div id="highlighter_401769" class="syntaxhighlightercsharp">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="gutter">
<div class="line number1 index0 alt2">1</div>
<div class="line number2 index1 alt1">2</div>
<div class="line number3 index2 alt2">3</div>
<div class="line number4 index3 alt1">4</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="csharp plain"># host 192.168.19.200</code></div>
<div class="line number2 index1 alt1"><code class="csharp plain">200.19.168.192.</code><code class="csharp keyword">in</code><code class="csharp plain">-addr.arpa domain name pointer www.jlx.com.19.168.192.</code><code class="csharp keyword">in</code><code class="csharp plain">-addr.arpa.</code></div>
<div class="line number3 index2 alt2"><code class="csharp plain"># nslookup 192.168.19.200</code></div>
<div class="line number4 index3 alt1"><code class="csharp plain">200.19.168.192.</code><code class="csharp keyword">in</code><code class="csharp plain">-addr.arpa name = www.jlx.com.19.168.192.</code><code class="csharp keyword">in</code><code class="csharp plain">-addr.arpa.</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<p> <img src="https://img2022.cnblogs.com/blog/2964633/202210/2964633-20221013151456011-701257739.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<h1 data-id="heading-24">总结:</h1>
<blockquote>
<ul>
<li>一定要关闭防火墙和selinux。</li>
<li>编辑配置文件和区域数据库文件时,需要严格注意语法书写,其格式非常严格。</li>
<li>”@“是DNS记录中的保留字,表示当前域名。</li>
<li>修改配置文件后,一定要重启服务,之后才能生效。</li>
</ul>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/ponyton/p/16817894.html
頁:
[1]