DNS 域名解析服务,配置 DNS 正向解析
<p> </p><p> </p>
<h1><span style="color: rgba(0, 0, 255, 1)">一:DNS 概述</span></h1>
<h2><span style="color: rgba(0, 0, 255, 1)"> 1.1 DNS 的作用</span></h2>
<p>在互联网中,人们使用域名来访问服务器,但是,互联网是使用 IP地址 进行通信的,所以就需要DNS来将域名和IP地址相互转换。这个过程称为域名解析。</p>
<p> 一个 IP 地址可以对应多个域名,但是 一个完整的域名只可以对应一个 IP 地址</p>
<p> <img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630084313304-320651677.png" alt="" width="607" height="351" loading="lazy"></p>
<p> </p>
<p> </p>
<p> </p>
<h2><span style="color: rgba(0, 0, 255, 1)">1.2 DNS 的定义</span></h2>
<p> DNS((Domain Name System): 域名解析服务,可以将域名解析为对应的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> </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 : 顶级域 </span></p>
<p><span style="font-size: 16px">" <strong><span style="font-size: 18px">.</span></strong> " : 根域</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> </p>
<p> </p>
<p> </p>
<p>DNS 整个结构图是树状结构,最顶层称为 根域, 用 点 "<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>采用 “ 委派” 机制</strong></span>,根域下设置顶级域,将顶级域解析权委派给顶级域服务器</p>
<p>同理,顶级域 下面设置 二级域, 二级域 下设 三级域</p>
<p> </p>
<p><strong>根域: </strong></p>
<p>位于域名空间最顶层, 一般用 一个 点 " <strong><span style="font-size: 14pt">.</span></strong> " 表示</p>
<p> </p>
<p><strong>顶级域:</strong></p>
<p>一般代表一种类型的组织机构或者国家地区。</p>
<p>如<strong><span style="font-size: 18px"> .</span></strong>net (网络供应商), <strong><span style="font-size: 18px"> .</span></strong>com (工商企业) , <strong><span style="font-size: 18px">.</span></strong>org (团体组织), <strong><span style="font-size: 18px"> .</span></strong>edu (教育机构) ,<strong><span style="font-size: 18px"> .</span></strong>gov (政府部门) , <strong><span style="font-size: 18px">.</span></strong>cn (中国国家域名)</p>
<p> </p>
<p><strong>二级域:</strong></p>
<p>用来标明顶级域内的一个特定组织,国家顶级域下面的二级域名有国家网络部门统一管理</p>
<p>如 <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 , <strong><span style="font-size: 18px">.</span></strong>net<strong><span style="font-size: 18px">.</span></strong>cn , <strong><span style="font-size: 18px">.</span></strong>edu<strong><span style="font-size: 18px">.</span></strong>cn</p>
<p> </p>
<p><strong>子域:</strong></p>
<p>二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名</p>
<p> </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">. </span></strong> , 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">. </span></strong> 这种完整的表示方式,称为 FQDN (完整合格域名)</p>
<p> </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> </p>
<h3><strong>1.4.2 查询模式</strong></h3>
<p><strong>递归查询:</strong></p>
<p>查询到根域名服务器,没有结果。</p>
<p>然后根域名服务器帮助本地域名服务器向下查询一级域名服务器,依次递归查询。</p>
<p>查询到权限域名服务器器后,获取结果,结果依次递归传递到根域名服务器,根域名服务器告知本地服务器查询结果</p>
<p> </p>
<p><strong>迭代查询:</strong></p>
<p>根域名服务器不会向下查询,只会告诉本地域名服务器去查找哪个顶级域名服务器(一级域名服务器)。</p>
<p>顶级域名服务器再告诉本地域名服务器去哪个权限域名服务器查询。</p>
<p>本地域名再查询对应的权限域名服务器,直接从权限域名服务器获取结果</p>
<p></p>
<p> </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> </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> </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> </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> </p>
<h1><span style="color: rgba(0, 0, 255, 1)">二: 配置DNS</span></h1>
<h2><span style="color: rgba(0, 0, 255, 1)">2.1 下载安装软件包,查看配置文件</span></h2>
<p>BIND (Berkeley Internet Name 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> </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> </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> </p>
<p> </p>
<h2><span style="color: rgba(0, 0, 255, 1)"> 2.3 修改区域配置文件,和正向区域数据文件</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> </p>
<p> </p>
<h3><span style="color: rgba(0, 0, 255, 1)">2.3.2 配置正向区域数据文件</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> </p>
<div> </div>
<div># SOA 记录中的更新序列号用于同步主从服务器区域数据, 当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载</div>
<div># 管理员admin 名字可以自己设置。后面应该是"@" 但是,因为"@" 有其他意思,所有使用 "."来表示</div>
<div># " mynet.com." 应该为 完整合格域名(FQDN) , 后面的 " . " 不可以少</div>
<p></p>
<p> </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> </p>
<p> </p>
<h2><span style="color: rgba(0, 0, 255, 1)"> 2.5 客户端域名解析文件 添加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> </p>
<p> </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> </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> </p>
<p> </p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.7 将DNS 加入 到 DHCP 配置中</span></h2>
<p> </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> </p>
<p> </p>
<p>windows 中解析</p>
<p><img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630100538190-1218754471.png" alt="" loading="lazy"></p>
<p> </p>
<p> <img src="https://img2020.cnblogs.com/blog/2387753/202106/2387753-20210630100547169-487220926.png" alt="" loading="lazy"></p>
<p> </p>
<p> </p>
<h2><span style="color: rgba(0, 0, 255, 1)">2.8 /etc/resolv.conf 文件中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> </p>
<p> </p>
<p>例 1 </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> </p>
<p>查询主机名,因为主机名后面 没有 点,所以,认为是主机名。</p>
<p>先添加search 里的每一项,一次组成FQDN 完整合格域名来查询。</p>
<p>如果没有查询到,就认为 输入的 就是 FQDN,将其作为FQDN 查询</p>
<p> </p>
<p>例2 </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> </p>
<div>查询主机名,因为主机名中有点(不是末尾有点),就认为是完全合格域名,先用它来查询。</div>
<div>查询失败就把它当成是主机名来进行,添加search里的每一项组成FQDN(完全合格域名)来查询。</div>
<p></p>
<p> </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> </p>
<div id="6693-1624986025134">查询主机名,因为主机名中末尾有点,则认为是完全合格域名,只用它来查询(不会再添加search里的每一项)。</div>
<div>查询次数会与search里项域名个数有关。</div>
<p></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/zhijiyiyu/p/14953307.html
頁:
[1]