哎哟也 發表於 2021-6-14 21:55:00

Linux CentOS7 配置与管理DNS服务器

<h2 id="dns服务相关知识">DNS服务相关知识</h2>
<h3 id="dns服务概述">DNS服务概述</h3>
<p>  DNS是一个分布式名称管理与映射系统,它的主要工作就是IP地址与域名之间的相互翻译及其对域名地址映射数据库的管理。DNS采用树状结构对域名进行管理。域名的形成往往如下所示:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
     www.baidu.com
</td></tr></tbody></table>
  其中,“com”称为顶级域名,“baidu”称为二级域名,“www”称为三级域名。每级之间可以用符号“.”相隔。从中可以看出域名采用逆序,即越靠后,域名等级越高,越靠前,域名等级越低。
<h3 id="dns服务器分类">DNS服务器分类</h3>
<p>DNS服务器主要分成一下几类:<br>
1、主DNS服务器<br>
  主DNS服务器为其所负责的区域提供DNS服务。<br>
2、辅助DNS服务器<br>
  辅助DNS服务器分担主DNS服务器查询工作。<br>
3、高速缓存DNS服务器<br>
  这种高速缓存DNS服务器使用缓存的DNS信息进行域名转换,因而速度比较快。<br>
  辅助DNS服务器和高速缓存DNS服务器可以在一定程度上减轻主DNS服务器的负荷,并且在主DNS服务器出现故障时,可以接替主服务器的工作。</p>
<h3 id="dns查询模式与域名解析">DNS查询模式与域名解析</h3>
<p>  DNS查询模式主要分成递归查询和迭代查询两种。<br>
1、递归查询<br>
  当DNS客户机向服务器发出DNS解析请求时,假设该DNS服务器在缓存或者区域数据库文件中无法解析该请求,那么如果由它向另一个DNS服务器发送该请求,则这种插叙模式被称为递归查询。<br>
2、迭代查询<br>
  当DNS客户机向服务器发出DNS解析请求时,假设该DNS服务器在缓存或者区域数据库文件中无法解析该请求,那么如果由客户机向另一个DNS服务器发送该请求,则这种查询模式被称为迭代查询。<br>
  两种查询模式的区别主要在于当前DNS服务器无法解析域名时,又睡向另一台服务器发起新的解析请求。如果由当前服务器向另一台服务器发起新的解析请求,那么该查询请求称为递归查询。反之,如果由客户机向领一台服务器发起新的请求,则称为迭代查询。<br>
  另外,域名解析过程又分为正向解析过程和反向解析过程。正向解析过程指的是由域名向IP地址的解析过程。反向解析过程指的是由IP地址向域名解析的过程</p>
<h3 id="资源记录">资源记录</h3>
<p>  在DNS服务器的域名数据库文件中包含着许多的DNS域资源信息的记录被称为资源记录。资源记录主要包含以下几种类型:<br>
1、SOA资源记录<br>
  SOA(Start of AUthority,起始授权)资源记录用于定义整个区域的全局设置,一个区域文件只允许存在一个SOA记录。<br>
2、NS资源记录<br>
  NS(Name Server,名称服务器)资源记录用来指定某一个区域的权威DNS服务器,每个区域至少有一个NS记录。<br>
3、A资源记录<br>
  A(Address,地址)资源记录用于FQDN(Fully Qualified Domain Name,全称域名)映射为IP地址。<br>
4、PIR资源记录<br>
  PTR(Pointer,指针)资源记录用于将IP地址映射为FQDN。<br>
5、CNAME资源记录<br>
  CNAME(Canonical Name,别名)资源记录用于为FQDN起别名。<br>
6、MX资源记录<br>
  MX(Mail Exchange,邮件交换)资源记录用于为邮件服务器提供DNS解析。</p>
<h3 id="hosts文件">hosts文件</h3>
<p>  当没有DNS服务器时,hosts文件可以用来处理当前主机的域名解析请求。hosts文件由一系列的域名-IP地址对组成。将常用的域名-IP地址对加入hosts 文件可以加快域名解析的速度。linux系统中,hosts文件位于/etc/ 目录下 ;windows系统中,hosts文件位于 C:\Windows\system32/drivers\etc 目录下。</p>
<hr>
<h2 id="实验环境">实验环境:</h2>
<p>物理机操作系统:windows 10<br>
VMware版本:VMware Workstation16<br>
镜像版本:CentOS-7-x86_64-DVD-1611</p>
<h2 id="实验目的">实验目的:</h2>
<p>1、了解DNS服务相关知识<br>
2、掌握DNS服务的安装<br>
3、掌握DNS服务的配置<br>
4、了解DNS服务常见故障排除方法</p>
<h2 id="实验基本配置命令-启动停止重启及自启dns服务">实验基本配置命令: 启动、停止、重启及自启DNS服务</h2>
<h3 id="1查询dns服务状态">1、查询DNS服务状态</h3>
<p> 查询DNS服务状态,可以使用以下命令:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl status named
</td></tr></tbody></table>
上述命令有两种执行结果,分别表示DNS服务是启动还是停止状态
<blockquote>
<p>Active: inactive (dead)      //未运行</p>
</blockquote>
<pre><code class="language-puppet">● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: inactive (dead)      #未运行
</code></pre>
<blockquote>
<p>Active: active (running)     //运行中</p>
</blockquote>
<pre><code class="language-puppet">● named.service - Berkeley Internet Name Domain (DNS)
   Loaded: loaded (/usr/lib/systemd/system/named.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2021-05-11 07:25:10 CST; 5s ago       #运行中
</code></pre>
<h3 id="2启动dns服务">2、启动DNS服务</h3>
<p> 安装完毕后,可以通过以下命令启动DNS服务:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl start named   //启动named守护服务
</td></tr></tbody></table>
<h3 id="3停止dns服务">3、停止DNS服务</h3>
<p> 启动后,可以通过以下命令停止DNS服务:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl stop named//停止named守护进程
</td></tr></tbody></table>
<h3 id="4重启dns服务">4、重启DNS服务</h3>
<p> 如果需要重启DNS服务,可以使用如下命令:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl restart named//重启named守护进程
</td></tr></tbody></table>
<h3 id="5重新加载dns服务配置">5、重新加载DNS服务配置</h3>
<p> 如果需要重新加载DNS服务配置,可以使用如下命令:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl reload named
</td></tr></tbody></table>
<h3 id="6查询dns版本">6、查询DNS版本</h3>
<p> 如果要查询DHCP是否安装,那么可以用如下命令:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
#rpm -qa|grep bind<br>
 rpm 软件包的管理工具 <br>
 -q 查看 <br>  -qa查看所有<br>
 |查看类似结果 <br>
 grep :正则表达式匹配
</td></tr></tbody></table>
<pre><code class="language-puppet"># rpm -qa|grep bind
bind-license-9.11.4-26.P2.el7_9.5.noarch
rpcbind-0.2.0-38.el7.x86_64
bind-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-utils-9.11.4-26.P2.el7_9.5.x86_64
keybinder3-0.3.0-1.el7.x86_64
bind-9.11.4-26.P2.el7_9.5.x86_64
bind-export-libs-9.11.4-26.P2.el7_9.5.x86_64
bind-libs-lite-9.11.4-26.P2.el7_9.5.x86_64

</code></pre>
<hr>
<h2 id="0x00实验开始">0x00:实验开始</h2>
<h3 id="拍摄快照">拍摄快照</h3>
<p>开始之前建议拍摄快照,这样即使虚拟机被玩坏了或者出现无法逆转的操作,可以还原到原始状态。</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">1、虚拟机→快照→拍摄快照<br>2、管理快照   "CTRL+M"<br>3、点击“拍摄快照"后,建议不要做任何操作,等待虚拟机左下角 “正在保存”完成后,即可</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511151948495.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"><br>
<img src="https://img-blog.csdnimg.cn/20210511151957593.png" alt="在这里插入图片描述" loading="lazy"></p>
<hr>
<h2 id="0x01-centos7-连接网络">0x01 CentOS7 连接网络</h2>
<p>1、先通过虚拟机的NAT模式或者桥接模式 ,连接网络安装DHCP服务</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">虚拟机→设置→网络适配器→NAT模式</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511152242964.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<p>2、正常来说现在应该可以ping通 外网了。</p>
<p><img src="https://img-blog.csdnimg.cn/20210511152308569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"><br>
3、当然,也有很多不正常的情况,出现ping不同的情况。这个时候还原 “虚拟网络编辑器”,也许就O了。</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">编辑→设置→虚拟网络编辑器→还原默认设置<br>注:目前了解到windows 10,进入“虚拟网络编辑器”后,需要点击右下角“更改设置”,才能修改网络配置</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511152328788.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<h2 id="0x02-安装dns服务">0x02 安装DNS服务</h2>
<h3 id="1yum方法">1、yum方法</h3>
<p>使用yum安装DNS服务可以使用命令:</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">#yum install bind -y    //安装DHCP服务</td></tr></tbody></table>
<p>如果成功安装,会有如下提示:</p>
<pre><code class="language-puppet">已安装:
bind.x86_64 32:9.11.4-26.P2.el7_9.5            
完毕!
</code></pre>
<h3 id="2图形化方法">2、图形化方法</h3>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
1、应用程序→ 系统工具→软件<br>
2、在搜索框中 搜索“bind”<br>
3、勾选“The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server”→应用更改
</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511153516312.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<hr>
<h2 id="0x03-搭建dns服务器">0x03 搭建DNS服务器</h2>
<h2 id="案例描述">案例描述</h2>
<p><font size="2">  授权DNS服务器管理JQE.com区域,并把该区域的文件命名为JQE.com.zone。DNS服务器是192.168.3.5,Mail服务器是 192.168.3.6,www 服务器是 192.168.3.7.<br>
</font></p>
<p>本例需要2台CentOS7 虚拟机,一台作为服务器,一台作为客户机</p>
<h3 id="实训开始">实训开始:</h3>
<h3 id="1修改虚拟网络编辑器中">1、修改“虚拟网络编辑器中”</h3>
<blockquote>
<p>将Vmnet1 类型 修改为 自定义模式</p>
</blockquote>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
编辑→虚拟网络编辑器→“VMnet2”→<br>
□ 将主机虚拟适配器连接到此网络 <br>
□使用本地DHCP服务将IP地址分配给虚拟器→<br>
应用
</td></tr></tbody></table>
<p>如图所示:<br>
<img src="https://img-blog.csdnimg.cn/20210511155236501.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<h3 id="2修改网络连接">2、修改网络连接</h3>
<blockquote>
<p>将 网络适配器 自定义 VMnet1</p>
</blockquote>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
虚拟机→设置→网络适配器→自定义→Vmnet1→确定
</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511155504397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<h3 id="3配置dns服务器网卡">3、配置DNS服务器网卡</h3>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
地址(A)<br>
地址:192.168.3.5<br>
网络掩码:255.255.255.0<br>
网关:192.168.3.5<br>
DNS<br>
服务器:192.168.3.5
</td></tr></tbody></table>
<p><img src="https://img-blog.csdnimg.cn/20210511155854406.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<h3 id="4修改dns主配置文件增加正向解析区域和反向解析区域">4、修改DNS主配置文件,增加正向解析区域和反向解析区域</h3>
<pre><code class="language-puppet"># vim /etc/named.conf
</code></pre>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
listen-on port 53 { any; };   //“127.0.0.1” 改成 “any”<br>
allow-query   { any; };     //“localhost” 改为 “any”<br>
dnssec-enable no;       //“yes” 改为 “no”<br>
dnssec-validation no;   //“yes”改为 “no”<br>
</td></tr></tbody></table>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
尾部添加一下内容<br>
zone "JQE.com" { <br>
  type master;<br>
  file "JQE.com.zone";<br>
};<br>
zone "3.168.192.in-addr.arpa" {<br>
  type master;<br>
  file "3.168.192.in-addr.arpa.zone";<br>
};
</td></tr></tbody></table>
具体如下
<pre><code class="language-puppet">options {
      listen-on port 53 { any; };//“127.0.0.1” 改成 “any”
      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; }; //“localhost” 改为 “any”
                recursion yes;
      dnssec-enable no;   //“yes” 改为 “no”
      dnssec-validation no;//“yes”改为 “no”
      bindkeys-file "/etc/named.root.key";
      managed-keys-directory "/var/named/dynamic";
      pid-file "/run/named/named.pid";
      session-keyfile "/run/named/session.key";
};
logging {
      channel default_debug {
                file "data/named.run";
                severity dynamic;
      };
};
zone "." IN {
      type hint;
      file "named.ca";
};
zone "JQE.com" {//增加正向解析区域“JQE.com”
      type master; //类型为 “master”
      file "JQE.com.zone"; //区域解析文件为 “/var/named/JQE.com.zone”
};
zone "3.168.192.in-addr.arpa" {//增加反向解析区域 “3.168.192.in-addr.arpa”
      type master; //类型为“master”
      file "3.168.192.in-addr.arpa.zone"; //区域解析文件为 “/var/named/3.168.192.in-addr.arpa.zone”
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
</code></pre>
<h3 id="5添加正向区域">5、添加正向区域</h3>
<p>复制样例文件 并修改 文件名为 “JQE.com.zone”</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# cp -p /var/named/named.loopback /var/named/JQE.com.zone
</td></tr></tbody></table>
<p>编写 文件</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# vim /var/named/JQE.com.zone
</td></tr></tbody></table>
<p>修改内容如下:</p>
<pre><code class="language-puppet">$TTL 1D
@       IN SOA JQE.com.root.JQE.com (
                                        20210511
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@ IN NS dns.JQE.com.
dns IN A 192.168.3.5
mail IN A 192.168.3.6
www IN A 192.168.3.7
@ IN MX 5 mail.JQE.com.

</code></pre>
<p><img src="https://img-blog.csdnimg.cn/20210511173752293.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<blockquote>
<p>MX优先级数字越小,优先级越高。同一域名两个MX服务器,低优先级的作为高优先级的备份</p>
</blockquote>
<h3 id="6添加反向区域">6、添加反向区域</h3>
<p>复制样例文件 并修改 文件名为 “JQE.com.zone”</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# cp -p /var/named/named.empty /var/named/3.168.192.in-addr.arpa.zone
</td></tr></tbody></table>
<p>编写 文件</p>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# vim /var/named/3.168.192.in-addr.arpa.zone
</td></tr></tbody></table>
修改内容如下:
<pre><code class="language-puppet">$TTL 3H
@       IN SOA3.168.192.in-addr.arpa.   root.JQE.com (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@ IN NS dns.JQE.com.
@ IN MX 5 mail.JQE.com.

5 IN PTR dns.JQE.com.
6 IN PTR mail.JQE.com.
7 IN PTR www.JQE.com.
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/202105112019113.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"></p>
<blockquote>
<p>在区域文件中,@代表区域。因此,邮件地址root.JQE.com不能写成 root@JQE.com。</p>
</blockquote>
<h3 id="7修改相应文件所属组为-named">7、修改相应文件所属组为 named</h3>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# chgrp named /etc/named.conf <br>
# chgrp named /var/named/JQE.com.zone <br>
# chgrp named /var/named/3.168.192.in-addr.arpa.zone
</td></tr></tbody></table>
<blockquote>
<p>named 守护进程的默认属组是named,为了让进程能正常读取文件,因此需要修改文件的属组</p>
</blockquote>
<h3 id="8开启dns服务">8、开启DNS服务</h3>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl start named<br>
</td></tr></tbody></table>
<h3 id="9关闭防火墙">9、关闭防火墙</h3>
<table><tbody><tr><td bgcolor="#F0F8FF" p="" align="left">
# systemctl stop firewalld.service
</td></tr></tbody></table>
<h2 id="检验配置结果">检验配置结果:</h2>
<p>步骤一:准备另一台 linux 虚拟机,将网络连接 修改为 “VMnet1”<br>
<img src="https://img-blog.csdnimg.cn/20210511204202837.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"><br>
步骤二:修改IP地址 ,一定要有 DNS服务器在同一个网段</p>
<p><img src="https://img-blog.csdnimg.cn/20210511204319318.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"><br>
步骤三:测试客户机是否与 DNS服务器 相通<br>
<img src="https://img-blog.csdnimg.cn/20210511204500129.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RhRGRhaQ==,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述" loading="lazy"><br>
步骤四:测试DNS服务器是否正常工作</p>
<blockquote>
<p>nslookup 是一个程序的名字<br>
是查询一台机器的IP地址和其对应的域名。它通常需要一台域名服务器来提供域名服务。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。</p>
</blockquote>
<pre><code class="language-pupuet">$ nslookup   //域名查询
&gt; server
Default server: 192.168.3.5
Address: 192.168.3.5#53
&gt; 192.168.3.5
Server:                192.168.3.5
Address:        192.168.3.5#53

5.3.168.192.in-addr.arpa        name = dns.JQE.com.
&gt; mail.JQE.com
Server:                192.168.3.5
Address:        192.168.3.5#53

Name:        mail.JQE.com
Address: 192.168.3.6
</code></pre>
<hr>
<p>以上</p>
<h3 id="由于博主目前还是大二学生水平有限文章中难免有疏漏或不当之处敬请各位大神以及读者不吝赐教">由于博主目前还是大二学生,水平有限。文章中难免有疏漏或不当之处,敬请各位大神以及读者不吝赐教</h3><br><br>
来源:https://www.cnblogs.com/Dailuobo/p/14883489.html
頁: [1]
查看完整版本: Linux CentOS7 配置与管理DNS服务器