曦儿 發表於 2021-6-30 10:30:00

DNS 域名解析服务,配置 DNS 正向解析

<p>&nbsp;</p>
<p>&nbsp;</p>
<h1><span style="color: rgba(0, 0, 255, 1)">一:DNS 概述</span></h1>
<h2><span style="color: rgba(0, 0, 255, 1)">&nbsp;1.1 DNS 的作用</span></h2>
<p>在互联网中,人们使用域名来访问服务器,但是,互联网是使用 IP地址 进行通信的,所以就需要DNS来将域名和IP地址相互转换。这个过程称为域名解析。</p>
<p>&nbsp;一个 IP 地址可以对应多个域名,但是 一个完整的域名只可以对应一个 IP 地址</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630084313304-320651677.png" alt="" width="607" height="351" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">1.2 DNS 的定义</span></h2>
<p>&nbsp;DNS((Domain Name System):&nbsp;域名解析服务,可以将域名解析为对应的IP地址。</p>
<p><span style="background-color: rgba(255, 255, 0, 1)">使用 TCP 和 UDP 的53 端口 。TCP 53 端口用于连接 DNS 服务器。UDP 的53 端口用于解析DNS</span></p>
<p>每一级 域名长度 限制 是63 个字符,域名总长度 则不能超过 253 个字符</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">1.3 域名结构</span></h2>
<p><span style="background-color: rgba(255, 255, 0, 1)"><strong><span style="font-size: 18px">http://www.sina.com.cn./</span></strong></span></p>
<p><span style="font-size: 16px">www :主机名</span></p>
<p><span style="font-size: 16px">.sina : 子域</span></p>
<p><span style="font-size: 16px">.com : 二级域</span></p>
<p><span style="font-size: 16px">.cn : 顶级域&nbsp; </span></p>
<p><span style="font-size: 16px">" <strong><span style="font-size: 18px">.</span></strong> "&nbsp; : 根域</span></p>
<p><img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630090815900-1527805329.png" alt="" width="582" height="439" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>DNS 整个结构图是树状结构,最顶层称为 根域, 用 点&nbsp; "<span style="background-color: rgba(255, 255, 0, 1)"><strong><span style="font-size: 18px"> .</span></strong> </span>" 表示,相应服务器称为根服务器,整个域名空间的解析权都归根服务器所有。</p>
<p>因为负载庞大,所以<span style="color: rgba(0, 0, 255, 1)"><strong>采用&nbsp; “ 委派” 机制</strong></span>,根域下设置顶级域,将顶级域解析权委派给顶级域服务器</p>
<p>同理,顶级域 下面设置 二级域, 二级域 下设 三级域</p>
<p>&nbsp;</p>
<p><strong>根域:&nbsp;</strong></p>
<p>位于域名空间最顶层, 一般用 一个 点&nbsp; " <strong><span style="font-size: 14pt">.</span></strong>&nbsp; " 表示</p>
<p>&nbsp;</p>
<p><strong>顶级域:</strong></p>
<p>一般代表一种类型的组织机构或者国家地区。</p>
<p>如<strong><span style="font-size: 18px"> .</span></strong>net&nbsp; (网络供应商),&nbsp;<strong><span style="font-size: 18px"> .</span></strong>com (工商企业) , <strong><span style="font-size: 18px">.</span></strong>org (团体组织),&nbsp; <strong><span style="font-size: 18px">&nbsp;.</span></strong>edu (教育机构) ,<strong><span style="font-size: 18px"> .</span></strong>gov (政府部门) , <strong><span style="font-size: 18px">.</span></strong>cn (中国国家域名)</p>
<p>&nbsp;</p>
<p><strong>二级域:</strong></p>
<p>用来标明顶级域内的一个特定组织,国家顶级域下面的二级域名有国家网络部门统一管理</p>
<p>如&nbsp; <span style="font-size: 18px"><strong>.</strong></span>cn 顶级域名下面设置的二级域名 :<strong><span style="font-size: 18px"> .</span></strong>com<strong><span style="font-size: 18px">.</span></strong>cn&nbsp; &nbsp;,&nbsp; <strong><span style="font-size: 18px">.</span></strong>net<strong><span style="font-size: 18px">.</span></strong>cn&nbsp; &nbsp;, <strong><span style="font-size: 18px">.</span></strong>edu<strong><span style="font-size: 18px">.</span></strong>cn</p>
<p>&nbsp;</p>
<p><strong>子域:</strong></p>
<p>二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名</p>
<p>&nbsp;</p>
<p><strong>主机:</strong></p>
<p>主机位于域名空间最下层,就是一台具体的计算机</p>
<p>如 : www ,mail , 等 都是具体计算机的名字</p>
<p>www<strong><span style="font-size: 18px">.</span></strong>sina<strong><span style="font-size: 18px">.</span></strong>com<strong><span style="font-size: 18px">.</span></strong>cn<strong><span style="font-size: 18px">.&nbsp;</span></strong> &nbsp; , mail<strong><span style="font-size: 18px">.</span></strong>sina<strong><span style="font-size: 18px">.</span></strong>com<strong><span style="font-size: 18px">.</span></strong>cn<strong><span style="font-size: 18px">.&nbsp;</span></strong> &nbsp;这种完整的表示方式,称为&nbsp; FQDN (完整合格域名)</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">1.4 DNS 域名解析方式和查询模式</span></h2>
<h3><strong>1.4.1解析方式</strong></h3>
<p>正向解析: 根据域名查找对应的 IP 地址</p>
<p>反向解析:根据IP地址查找对应的域名</p>
<p>&nbsp;</p>
<h3><strong>1.4.2 查询模式</strong></h3>
<p><strong>递归查询:</strong></p>
<p>查询到根域名服务器,没有结果。</p>
<p>然后根域名服务器帮助本地域名服务器向下查询一级域名服务器,依次递归查询。</p>
<p>查询到权限域名服务器器后,获取结果,结果依次递归传递到根域名服务器,根域名服务器告知本地服务器查询结果</p>
<p>&nbsp;</p>
<p><strong>迭代查询:</strong></p>
<p>根域名服务器不会向下查询,只会告诉本地域名服务器去查找哪个顶级域名服务器(一级域名服务器)。</p>
<p>顶级域名服务器再告诉本地域名服务器去哪个权限域名服务器查询。</p>
<p>本地域名再查询对应的权限域名服务器,直接从权限域名服务器获取结果</p>
<p></p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">1.5 DNS 服务器类型</span></h2>
<p><strong>(1)主域名服务器:</strong></p>
<p>负责维护一个区域的所有域名信息,是<span style="color: rgba(0, 0, 255, 1)">特定的所有信息的权威信息源,</span>数据可以修改。</p>
<p>构建主域名服务器时,<span style="color: rgba(0, 0, 255, 1)">需要自行建立所负责区域的地址数据文件。</span></p>
<p>&nbsp;</p>
<p><strong>(2)从域名服务器:</strong></p>
<p>当主域名服务器出现故障、关闭或负载过重时,从域名服务器作为备份服务提供域名解析服务。</p>
<p>从域名服务器提供的<span style="color: rgba(0, 0, 255, 1)">解析结果</span>不是由自己决定的,而是来<span style="color: rgba(0, 0, 255, 1)">自于主域名服务器。</span></p>
<p>构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。</p>
<p>&nbsp;</p>
<p><strong>(3)缓存域名服务器:</strong></p>
<p><span style="color: rgba(0, 0, 255, 1)">只提供域名解析结果的缓存功能</span>, 目的在于提高查询速度和效率,但<span style="color: rgba(0, 0, 255, 1)">没有域名数据库</span>。</p>
<p>它从某个远程服务器取得每次域名服务器查询的结果,并将它放在高速缓存中,以后查询相同的信息时用它予以响应。</p>
<p>缓存域名服务器<span style="color: rgba(0, 0, 255, 1)">不是权威性服务器</span>,因为提供的所有信息都是间接信息。</p>
<p>构建缓存域名服务器时,必须<span style="color: rgba(0, 0, 255, 1)">设置根域或指定其他DNS服务器作为解析来源。</span></p>
<p>&nbsp;</p>
<p><strong>(4)转发域名服务器:</strong></p>
<p>负责所有<span style="color: rgba(0, 0, 255, 1)">非本地域名的本地查询</span>。</p>
<p>转发域名服务器接到查询请求后,在其缓存中查找,如找不到就将请求依次<span style="color: rgba(0, 0, 255, 1)">转发到指定的域名服务器</span>,直到查找到结果为止,否则返回无法映射的结果。</p>
<p></p>
<p>&nbsp;</p>
<h1><span style="color: rgba(0, 0, 255, 1)">二: 配置DNS</span></h1>
<h2><span style="color: rgba(0, 0, 255, 1)">2.1&nbsp; 下载安装软件包,查看配置文件</span></h2>
<p>BIND (Berkeley&nbsp; Internet&nbsp; Name&nbsp; Daemon) 软件包下载</p>
<p>相关软件包:</p>
<p>bind-9.9.4-37.el7.x86_64.rpm</p>
<p>bind-utils-9.9.4-37.el7.x86_64.rpm</p>
<p>bind-llibs-9.9.4-37.el7.x86_64.rpm</p>
<p>bind-chroot-9.9.4-37.el7.x86_64.rpm</p>
<p>&nbsp;</p>
<p>主要执行程序:/usr/sbin/named</p>
<p>默认监听端口:53</p>
<p>主配置文件 /etc/named.conf</p>
<p>保存DNS 解析记录的数据文件在 /var/named 目录</p>
<div class="cnblogs_Highlighter">
<pre class="brush:html;gutter:true;"># yum -y install bind

# rpm-qc bind#查询bind 文件所在路径
/etc/named.conf               #主配置文件      
/etc/named.rfc1912.zones      #区域配置文件
/var/named/named.ca             #13台根域DNS 服务器   
/var/named/named.localhost      #区域数据配置文件
</pre>
</div>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.2 修改主配置文件</span></h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># vim /etc/named.conf
#options 区域为全局配置,其优先级小于区域配置
options {
      listen-on port 53 { 192.168.23.10; };      
      #监听 53 端口。ip地址使用提供服务的本地ip。
      #也可以使用any 表示所有

#       listen-on-v6 port 53 { ::1; };    #ipv6地址
      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";
      #内存统计文件的位置
      
      allow-query   { 192.168.23.0/24; 192.168.1.0/24; };
      #允许使用本DNS 解析服务的网段,也可以设置为单个ip ,多个参数使用 分号 ; (注意,使用英文分号) 隔开
      #可以使用 any 表示所有
      
       recursion yes;
       #递归解析
       ......
};
zone "." IN {                  #正向解析 " . " 根区域
      type hint;               #类型为根区域
      file "named.ca";         #区域文件为 named.ca记录了13 台 根区域服务器的域名和 ip 地址等信息
};
include "/etc/named.rfc1912.zones";
#包含区域配置文件里的所有配置</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">&nbsp;2.3&nbsp;修改区域配置文件,和正向区域数据文件</span></h2>
<h3><span style="color: rgba(0, 0, 255, 1); font-size: 16px">2.3.1添加正向区域配置</span></h3>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># vim /etc/named.rfc1912.zones
zone "mynet.com" IN {               #正向解析"mynet.com"
      type master;                  #类型为主区域
      file "mynet.com.zone";      #指定区域数据文件为mynet.com.zone,
                                    #数据配置文件 默认在 /var/named/ 目录下。文件记录了 主机名和ip地址的映射关系
      allow-update { none; };
};</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h3><span style="color: rgba(0, 0, 255, 1)">2.3.2&nbsp;配置正向区域数据文件</span></h3>
<p></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># cd /var/named/
# cp -p named.localhostmynet.com.zone
# mynet.com.zone 默认不存在,复制模板文件
# 要使用 cp -p 命令复制文件因为服务是使用 用户 named 启动的

# vim mynet.com.zone
$TTL 1D                                                               #有效解析记录的生存周期
@       IN SOAmynet.com.admin.mynet.com. (                        # @ 表示变量,代表当前DNS 区域名
                                                                      #mynet.com.域名是要完整合格域名 "." 不可以少
                                                                     #admin.mynet.com管理员邮箱
                                                                                                                                          
                                        0       ; serial             # 更新序列号,可以是 10位数 以内的整数。主从服务器不可以一样
                                        1D      ; refresh            # 刷新时间,重新下载地址数据的间隔
                                        1H      ; retry            # 重试延时,下载失败后的重试间隔
                                        1W      ; expire             # 失效时间,超过该时间仍无法下载则放弃
                                        3H )    ; minimum            # 无效解析记录的生存周期
                                       
         NS      mynet.com.                      # NS 用于记录当前区域的 DNS 名称, 使用完整合格域名
         A       192.168.23.10                   # 记录 主机的 IP 地址, 也就是 服务器IP 地址
IN   MX    10   mail.mynet.com.                  # MX 为邮件交换记录,数字越大越优先。 可以不配本条配置   
wwwIN    A   192.168.23.10                     # 设置正向解析 www.mynet.com对应的 IP
mail IN    A   192.168.23.11                     # 设置正向解析 mail.mynet.com对应的 IP
ftpIN    CNAME www                               # CNAME 使用别名 ,设置 ftp 是www 的别名
*    IN    A   192.168.23.12                     # 泛域名解析,"*" 代表任意主机名 ,代表除了上面设置的主机名,其他主机名</span></pre>
</div>
<p>&nbsp;</p>
<div>&nbsp;</div>
<div># SOA 记录中的更新序列号用于同步主从服务器区域数据, 当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载</div>
<div># 管理员admin 名字可以自己设置。后面应该是"@" 但是,因为"@" 有其他意思,所有使用 "."来表示</div>
<div># " mynet.com." 应该为 完整合格域名(FQDN) , 后面的 " . " 不可以少</div>
<p></p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.4 检测配置文件语法,启动服务</span></h2>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># systemctl stop firewalld         #关闭 firewalld 防火墙
# systemctl disable firewalld      #禁止 firewalld 自启
# setenfoce 0                      #设置 selinux 为 Permissive
# vim /etc/selinux/config          # 或者 修改配置文件,将selinux 设置为 disabled 或者 permissive (重启生效)
SELINUX=disabled

# named-checkconf         #检测 主配置文件 语法。 没有任何输出表示 /etc/named.conf没有语法错误

# named-checkzone "mynet.com" "mynet.com.zone"   # 正向解析区域检查
zone mynet.com/IN: loaded serial 0
OK

# systemctl start named                # 启动服务named
# systemctl enable named               # 设置服务named 开机自启
root@promote named]# netstat -natup | grep named         # 查看服务named 的端口
tcp      0      0 192.168.23.10:53      0.0.0.0:*               LISTEN      3638/named         
tcp      0      0 127.0.0.1:953         0.0.0.0:*               LISTEN      3638/named         
tcp6       0      0 ::1:953               :::*                  LISTEN      3638/named         
udp      0      0 192.168.23.10:53      0.0.0.0:*                           3638/named</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">&nbsp;2.5&nbsp;&nbsp;客户端域名解析文件 添加DNS 服务器地址</span></h2>
<p></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># vim /etc/resolv.conf   #修改后立即生效,但是重启系统,或者重启网卡后,DNS 地址会变成 网卡配置文件里的 DNS 项设置的地址
nameserver 192.168.23.10
或者
# vim /etc/sysconfig/network-scripts/ifcfg-ens33   #修改网卡配置文件,修改后需要重启网卡
DNS1=192.168.23.10
:wq
# systemctl restart network    #重启网卡服务</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.6 测试DNS 解析</span></h2>
<p><span style="color: rgba(0, 0, 255, 1)">使用 host [-a] 命令 或者 nslookup 命令</span></p>
<p><strong></strong></p>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">#使用 host 命令
# host www.mynet.com               # 解析 www.mynet.com
www.mynet.com has address 192.168.23.10            # 该域名 对应 IP

# host mail.mynet.com            # 解析 mail.mynet.com
mail.mynet.com has address 192.168.23.11

# host ftp.mynet.com               # 解析 ftp.mynet.com.
ftp.mynet.com is an alias for www.mynet.com.       # 表明 ftp.mynet.com 是 www.net.com. 的别名
www.mynet.com has address 192.168.23.10   
   
# host xxxxxxx.mynet.com          # 泛域名解析
xxxxxxx.mynet.com has address 192.168.23.12


#使用 nslookup 命令(windows 只支持nslookup,不支持host)
# nslookup www.mynet.com          # 解析域名 www.mynet.com
Server:      192.168.23.10                         # DNS 服务器地址
Address:    192.168.23.10#53                      # 监听端口
Name:    www.mynet.com                           # 域名
Address: 192.168.23.10                            # 域名解析出来的地址

# nslookup ftp.mynet.com
Server:      192.168.23.10
Address:    192.168.23.10#53
ftp.mynet.com    canonical name = www.mynet.com.
Name:    www.mynet.com
Address: 192.168.23.10

# nslookup mail.mynet.com
Server:      192.168.23.10
Address:    192.168.23.10#53
Name:    mail.mynet.com
Address: 192.168.23.11

# nslookup xxxxxx.mynet.com
Server:      192.168.23.10
Address:    192.168.23.10#53
Name:    xxxxxx.mynet.com
Address: 192.168.23.12</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.7 将DNS 加入 到 DHCP 配置中</span></h2>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"> #在 DHCP 服务器上
# vim /etc/dhcp/dhcpd.conf
subnet 192.168.23.0 netmask 255.255.255.0 {
range 192.168.23.10192.168.23.200;
option routers 192.168.23.254;
option domain-name-servers 192.168.23.10;    # 对应的DNS服务器地址
}
   #DNS配置可以配置在全局,也可以配置在相应的局部

# systemctl restart dhcpd</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>windows 中解析</p>
<p><img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630100538190-1218754471.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630100547169-487220926.png" alt="" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.8&nbsp; /etc/resolv.conf&nbsp; 文件中search 项作用</span></h2>
<p>先修改DNS 服务器</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># vim /var/named/mynet.com.zone
;*    IN A       192.168.23.12                #用 分号 ; 注释此项

# vim /etc/resolv.conf
nameserver 192.168.23.10
searchmynet.com example.com</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>例 1&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># host -a www
Trying "www.mynet.com"

# host -a mail
Trying "mail.mynet.com"


# host -a centos7         
Trying "centos7.mynet.com"                      #添加 mynet.com,组成域名centos7.mynet.com
Trying "centos7.example.local"                  #添加 example.local,组成域名 centos7.example.local
;; connection timed out; trying next origin
Trying "centos7"                              #直接作为域名解析</span></pre>
</div>
<p>&nbsp;</p>
<p>查询主机名,因为主机名后面 没有 点,所以,认为是主机名。</p>
<p>先添加search 里的每一项,一次组成FQDN 完整合格域名来查询。</p>
<p>如果没有查询到,就认为 输入的 就是 FQDN,将其作为FQDN 查询</p>
<p>&nbsp;</p>
<p>例2&nbsp;</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># host -a centos7.com
Trying "centos7.com"                                  #直接将 centos7.com 作为域名查询
;; connection timed out; trying next origin
Trying "centos7.com.mynet.com"                        #将centos7.com 作为主机名,后面添加域名 mynet.com
Trying "centos7.com.example.local"                  #将centos7.com 作为主机名,后面添加域名 example.local
;; connection timed out; no servers could be reached</span></pre>
</div>
<p>&nbsp;</p>
<div>查询主机名,因为主机名中有点(不是末尾有点),就认为是完全合格域名,先用它来查询。</div>
<div>查询失败就把它当成是主机名来进行,添加search里的每一项组成FQDN(完全合格域名)来查询。</div>
<p></p>
<p>&nbsp;</p>
<p>例3</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)"># host -a <strong>centos.</strong>
Trying "centos"                                 #因为 centos 后面有 点 "." ,所以确定其作为域名,不会在添加search里的项,只会匹配查询
Received 24 bytes from 192.168.23.10#53 in 5000 ms
Trying "centos"
;; connection timed out; trying next origin
Trying "centos"</span></pre>
</div>
<p>&nbsp;</p>
<div id="6693-1624986025134">查询主机名,因为主机名中末尾有点,则认为是完全合格域名,只用它来查询(不会再添加search里的每一项)。</div>
<div>查询次数会与search里项域名个数有关。</div>
<p></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/zhijiyiyu/p/14953307.html
頁: [1]
查看完整版本: DNS 域名解析服务,配置 DNS 正向解析