当前位置: 首页 > news >正文

17.DHCP服务器及DNS服务

文章目录

  • DHCP服务器
    • DHCP服务介绍
    • 多个 DHCP 服务器
    • 部署 DHCP 服务器
      • 安装 DHCP 软件
      • 配置 DHCP 服务器
        • 配置说明:
      • 启用并启动服务
    • 基于 MAC 地址预留 IP 地址
  • DNS服务器
    • DNS服务器
      • DNS服务器
      • DNS查询
        • DNS迭代查询
        • DNS递归查询
    • DNS 资源记录
      • A 资源记录
      • AAAA 资源记录
      • CNAME 资源记录
      • PTR 资源记录
      • NS 资源记录
        • 说明
      • SOA 资源记录
        • 记录值说明
      • MX 资源记录
      • 主机和资源记录
    • 配置权威名称服务器
      • 权威名称服务器架构
        • 架构示例 1:外部客户端查找 linux.fun
        • 架构示例 2:内部客户端查找 linux.fun
      • 安装 BIND
        • 软件包说明
      • 配置 BIND
        • 定义地址匹配列表
        • 配置 named 侦听的 IP 地址
        • 配置客户端的访问控制
      • 运行 BIND
        • 客户端测试

DHCP服务器

DHCP服务介绍

在大型网络中,系统静态分配IP地址面临问题:

​ 1.确保不要同时在多个系统上使用同一个地址。

​ 2.部署新系统通常需要手动分配其IP地址。在云环境中,实例的网络是自动化配置的。

动态主机配置协议(DHCP-Dynamic Host Configuration Protocol)提供了一种自动配置网络参数的方法,例如IP地址,默认网关,DNS服务器和域或NTP服务器。在网络中部署DHCP服务器,您可以集中控制这些参数。

DHCP有两种协议:

  • 用于IPv4网络的DHCPV4.

  • 用于IPv6网络的DHCPv6

本课程只介绍DHCPv4.

1.客户端使用DHCP4配置网络接口时,网卡将DHCPDiscoVER数据包发送到255.255.255.255广播目标。因为路由器通常不转发该广播地址,所以必须将DHCP服务器与客户端安装在同一物理网络上,以便它可以接收DHCPDISCOVER数据包。您也可以将路由器配置为DHCP中继代理,转发DHCP消息到其他网络。

2.DHCP服务器收到DHCPDISCOVER数据包后,响应 DHCPOFFER数据包,该数据包包含其自己的IP地址和客户端应使用的IP地址。该数据包还包括一个租用期限,以指示所提供的IP地址有效的时间,以及其他网络参数,例如默认网关和DNS服务器。

3.客户端收到DHCP服务器 DHCPOFFER数据包后,发送 DHCPREQUEST 广播数据包,请求DHCP服务器提供的IP地址。这似乎很多余,但是网络上可能有多个DHCP服务器,或者路由器可能会将DHCPOFFER转发到多个网络。因此,客户端可能会从不同的DHCP服务器收到响应。客户端的DHCPREQUEST数据包包括接受请求的DHCP服务器的IP地址。

4.DHCP服务器收到DHCPREQUEST数据包后,会发送DHCPACK数据包,确认客户端对客户端IP地址具有独占权限,直到租约到期为止。

5.租约到期后,重新向DHCP服务器续约。

6.DHCP服务器,同意客户端续约。

在DHCP服务器上,可以使用journalct1 --unit= dhcpd.service命令来访问客户端与服务端通信消息。以下摘录显示了客户端通过DHCP请求IP地址。

DHCPDISCOVER from 52:54:00:01:fa:0b via eth0
DHCPOFFER on 10.1.8.150 to 52:54:00:01:fa:0b(hosta)via eth0
DHCPREQUEST for 10.1.8.150(10.1.8.2)from 52:54:00:01:fa:0b(hosta)via eth0
DHCPACK on 10.1.8.150 to         52:54:00:01:fa:0b(hosta)via eth0

在租约到期之前,客户端会定期向服务器发送DHCPREQUEST数据包,以确保服务器不会收回IP地址。

多个 DHCP 服务器

尽管 DHCP 支持在物理网络上运行多个 DHCP 服务器,但不建议这么做。正常情况下,同一个物理网络中只需要一台 DHCP 服务器应回答客户端的请求即可。

在同一网络上运行多个服务器的情况下,当新客户端发送 DHCPDISCOVER 数据包以获取地址时,它可能会收到多个 DHCPOFFER 数据包。客户端仅接受其中一台服务器提供的配置,并广播包含该服务器 IP 地址的 DHCPREQUEST 数据包。其他 DHCP 服务器释放它们为客户端准备的 IP 地址。

但是,当客户端使用 DHCPREQUEST 数据包更新其 IP 地址时,服务器行为取决于服务器是否具有权威性。==非权威的 DHCP 服务器会忽略 DHCPREQUEST 数据包中不知道的地址。==当客户端发送的 IP 地址在权威 DHCP 服务器管理的地址范围内,但服务器以前不知道该 IP 地址时,它将拒绝该请求并发回 DHCPNAK 数据包。这可能意味着客户端最初是从网络上的另一台非权威的 DHCP 服务器获得其地址的。任何收到 DHCPNAK 数据包的客户端都不能再使用该地址,而必须请求一个新的地址。

使用默认配置启动 DHCP 服务器时,服务器不是权威服务器,这样可以防止非权威 DHCP 服务器接管权威服务器提供的地址。

部署 DHCP 服务器

要配置 DHCPv4 服务器,请首先使用ip addr命令确认您的网络接口配置是否指定了 BROADCAST 地址。

2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:e5:be:0f brd ff:ff:ff:ff:ff:ffinet 10.1.8.10/24 brd 10.1.8.255 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fee5:be0f/64 scope linkvalid_lft forever preferred_lft forever

服务器必须具有静态 IP 地址。

安装 DHCP 软件

[root@server ~ 10:11:41]# yum install -y dhcp

配置 DHCP 服务器

dhcpd 服务使用/etc/dhcp/dhcpd.conf配置文件。dhcp-server 软件包提供/usr/share/doc/dhcp-*/dhcpd.conf.example配置文件示例。

[root@server ~ 10:12:10]# ls /etc/dhcp
dhclient.d             dhcpd6.conf  scripts
dhclient-exit-hooks.d  dhcpd.conf
[root@server ~ 10:13:37]# vim /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page[root@server ~ 10:14:27]# cp /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y[root@server ~ 10:16:01]# vim /etc/dhcp/dhcpd.conf
# 配置域名
option domain-name "ghl.cloud";# 配置DNS服务器
option domain-name-servers 223.6.6.6, 223.5.5.5;# 默认租约时间
default-lease-time 600;# 最大租约时间
max-lease-time 7200;# 设置日志级别
log-facility local7;# 配置 DHCP 池
subnet 10.1.8.0 netmask 255.255.255.0 {range 10.1.8.101 10.1.8.130;#option domain-name-servers ns1.internal.example.org;#option domain-name "internal.example.org";option routers 10.1.8.2;option broadcast-address 10.1.8.255;#default-lease-time 600;#max-lease-time 7200;
}# 根据MAC地址配置固定IP
host client.ghl.cloud {hardware ethernet 00:0c:29:7c:ee:8a;fixed-address 10.1.8.100;
}
配置说明:
  • authoritative:指示服务器对其所管理的子网具有权威性。
  • subnet:提供的子网详情。
  • range:指定服务器在该范围内分配 IP 地址。
  • option routers:指定服务器提供默认网关地址。
  • option domain-name-servers:指定服务器提供 DNS 名称服务器。
  • option domain-search:指定服务器提供 DNS 域搜索列表。
  • default-lease-time:提供网络信息默认租期,如果客户端不要求任何特定的租期。单位秒。
  • max-lease-time:指示服务器可以从客户端请求接受的最大租期。单位秒。

客户端系统上的 NetworkManager 使用domain-name-serversdomain-search更新resolv.conf文件中的nameserversearch参数。

启用并启动服务

#启用并启动服务
[root@server ~ 11:13:36]# systemctl enable dhcpd --now#查看服务状态
[root@server ~ 11:13:36]# systemctl status dhcpd

基于 MAC 地址预留 IP 地址

在配置文件中,host声明可以将 MAC 地址绑定到 IP 地址。此配置对于始终为特定系统的网络接口提供相同的 IP 地址特别有用,尤其是 Web 或数据库系统之类的服务器。

客户端 MAC 地址查看

[root@client ~ 10:46:16]# ip -br link
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:7c:ee:80 <BROADCAST,MULTICAST,UP,LOWER_UP> 
ens37            UP             00:0c:29:7c:ee:8a <BROADCAST,MULTICAST,UP,LOWER_UP> 

在以下示例中,服务器始终为 MAC 地址是 00:0c:29:7c:ee:8a 的系统分配 10.1.8.100 地址。

[root@server ~ 11:10:23]# vim /etc/dhcp/dhcpd.conf
......
host client.ghl.cloud {hardware ethernet 00:0c:29:7c:ee:8a;fixed-address 10.1.8.100;
}

重启服务

[root@server ~ 11:13:36]# systemctl restart dhcpd

客户端验证

#激活连接
[root@client ~ 11:07:55]# nmcli connection up 有线连接\ 1 
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)#验证
[root@client ~ 11:08:50]# ip -br a
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             10.1.8.11/24 fe80::20c:29ff:fe7c:ee80/64 
ens37            UP             10.1.8.101/24 fe80::44f5:f0ea:1647:f34c/64 

DNS服务器

DNS服务器

DNS服务器

DNS(Domain Name System,域名系统)服务是一种用于将域名转换为IP地址的分布式数据库 服务。它是互联网的核心服务之一,使得用户能够通过易于记忆的域名来访问网站和其他网络服 务,而无需记住复杂的IP地址。

**DNS也是一个存储网络主机和资源目录的分层命名系统。**目录中的信息将网络名称映射到不同资 源记录。

  • 根域:DNS层次结构最顶层,使用独立的"."表示。

  • 顶级域(一级域):DNS层次结构第二层,例如.com,.net和**.org**等域。

  • 二级域:DNS层次结构第三层,例如linux.funredhat.com等域。由各个组织使用。

  • 以此类推。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

学习DNS层次结构前,首先要搞清楚DNS层次结构中一些术语,例如domain,subdomain和 zone等。

Domain

**domain是resource records的集合,**该集合以通用名结尾,表示DNS命名空间的整个子树, 如linux.fun。

top-level domain (TLD-顶级域)由Internet Assigned Numbers Authority (**IANA-**互联网号 码分配机构)管理,并负责委派顶级域。

常见的TLD类型:

  • Generic TLDs(gTLD-通用顶级域名),最初是按主题组织的,包括.com,edu和.net 等。

  • Country code TLDs (CCTLD-国家代码顶级域名),根据ISO3166-1标准在国家范围上组织 的,并包括.us,.uk,.cn和.ru之类的域。

其他顶级域参考顶级域名参考[根域数据库][https://www.ana.org/domains/root/db]。

Subdomain

Subdomain是另一个域的完整子树的域。在讨论两个域之间的关系时使用此术语。例如, lab.inux.funlinux.fun的子域,而linux.fun是**.com的子域。我们也可以将linux.fun称为第 二级域,并将lab.linux.fun**称为第三级域。

Zone

Zone是特定名称服务器直接负责的域。它可能是整个域,也可能只是域的一部分。Zone可以将 部分或全部子域都委派给另一个名称服务器或多个名称服务器。

例如,root名称服务器对root zone具有权威性,但它们将.com域的职责委派给其他名称服务 器,这些名称服务器为.com区域提供权威性应答。这些服务器还可以继续将责任委派给其他名称 服务器。

DNS查询

主机的DNS查询主要有两种方式:递归查询迭代查询

DNS查询时,DNS请求报头部的RD字段决定了查询类型:

  • RD为1=>递归查询,默认查询方式。

  • RD为0=>迭代查询

递归查询:以本地名称服务器为中心,DNS客户端只是发出原始的域名查询请求报文,然后就一 直处于等待状态,直到本地名称服务器发来了最终的查询结果。此时的本地名称服务器就相当于中介代理的作用。

迭代查询:以DNS客户端自己为中心。所有查询工作全部是DNS客户端自己进行。DNS客户会 按照顺序向本地名称服务器、一级名称服务器、二级名称服务器、权威名称服务器发出查询DNS 的请求查询报文,这个过程中每一级服务器就会返回一个能解答这个查询的下一个名称服务器列 表A,获取到下个查询列表信息A后DNS客户会再向返回的列表A中发出请求,直到找到最终 负责所查域名的名称服务器,从它得到最终结果。

有些DNS服务器,为了减轻自己的负载,则会配置禁止使用递归查询,则客户端只能使用递归查 询。

两者主要区别:

  • 递归查询以本地名称服务器为中心进行查询

  • 迭代查询以DNS客户端自己为中心查询。

DNS迭代查询

迭代查询,也叫迭代解析。使用迭代解析方式时,所有的查询工作都是由DNS客户自己进行的。 如果它所配置的主名称服务器(如Windows系统中的首选DNS服务器)不能解析的话,客户 端还会继续向所配置的其它名称服务器(如Windows系统中的备用DNS服务器)查询。

如果考虑了本地名称服务器的缓存技术(在DNS服务器上对一定数量查询过的记录保存一定时 间,这样后面查询同样的域名信息时就可直接从缓存中调出来,以加速查询效率)的话,迭代名 称解析的基本流程如下(在此仅以首先DNS服务器作为本地名称服务器为例,与其它备用DNS 服务器的解析流程完全一样):

​ 1.DNS客户端向本机配置的本地名称服务器发出DNS域名查询请求。

​ 2.本地名称服务器收到请求后,先查询本地的缓存

  • 如果有该域名的记录项,则本地名称服务器就直接把查询的结果返回给客户端。

  • 如果本地缓存中没有该域名的记录,则向DNS客户端返回一条DNS应答报文,报文中 会给出一些参考信息,如本地名称服务器上的根名称服务器地址等。

3.DNS客户端在收到本地名称服务器的应答报文后,会根据其中的根名称服务器地址信息,向 对应的根名称服务器再次发出与前面一样的DNS查询请求报文。

4.根名称服务器在收到DNS查询请求报文后,通过查询自己的DNS数据库得到请求DNS域 名中顶级域名所对应的顶级名称服务器信息,然后以一条DNS应答报文返回给DNS客户 端。

5.DN客户端根据来自根名称服务器应报文中的应名称服务器地址信息,向该级名 称服务器发出与前面一样的DNS查询请求报文。

6.顶级名称服务器在收到DNS查询请求后,先查询本地的缓存:

  • 如果有所请求的DNS域名的记录项,则直接把对应的记录项返回给DNS客户端。

  • 否则,通过查询后把对应域名中二级域名所对应的二级名称服务器地址信息以一条DNS 应答报文返回给DNS客户端。

7.DNS客户端继续按照步骤5与步骤6的方法分别向三级、四级名称服务器查询,直到查到最 终的权威名称服务器返回到最终的记录。

如果在上述步骤中对应域名的权威名称服务器都说找不到对应的域名记录,则会向DNS客户端返 回一条查询失败的DNS应答报文,称为负响应。当然,如果这个权威名称服务器上配置了指向其 它名称服务器的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步重复上述步 骤查询。另外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查 询的。

DNS查找到这里就基本来可以获取域名对应的IP了,除非需要查找的域名没有配置IP则查询失 败。

DNS迭代查询-示例 假设客户端访问站点www.examp1e.com,那么DNS客服端的查询路径如下:

1.DNS客户端向所配置的本地名称服务器发出解析www.examp1e.com域名的DNS请求报 文。

2.本地名称服务器收到客户端的DN查询请求报文后,先查询本地缓存。假设没有查到该域 名对应记录,则本地名称服务器把所配置的根名称服务器a.rootserver.net地址信息以 DNS应答报文返回给DNS客户端。

3.DNS客户端在收到本地名称服务器的DNS应答报文后,根据其中给出的根名称服务器地址 信息,向对应的根名称服务器再次发送解析www.examp1e.com域名的DNS请求报文)。

4.根名称服务器在收到DNS查询请求后,通过查询得到.com顶级域名所对应的顶级名称服 务器,然后把查询到的对应顶级域名信息以一条DNS应答报文返回给DNS客户端。

5.DNS客户端在收到根名称服务器的DNS应答报文,得到.com顶级域名所对应的顶级名称 服务器地址后,再次向对应的顶级名称服务器发送一条解析www.examp1e.com域名的的 DNS请求报文。

6..com顶级名称服务器在收到DNS客户端的DNS查询请求报文后,先查询本地的缓存,假 设也没有该域名的记录项,则查询examp1e.com所对应的二级名称服务器,然后把查询到 的对应二级域名信息以一条DNS应答报文返回给DNS客户端。

7.DNS客户端在收到.com顶级名称服务器的DNS应答报文,得到examp1e.com二级域名 所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条解析 www.example.com域名的DNS请求报文。

8.examp1e.com二级名称服务器在收到DNS客户端的DNS查询请求报文后,也先查询本地 的缓存。假设也没有该域名的记录项,则查询www.example.com所对应的权威名称服务器 (因为这个名称服务器已包括了整个域名www.examp1e.com所在区域),然后把查询到的 对应权威域名信息以一条DNS应答报文返回给DNS客户端。

9.DNS客户端在收到examp1e.com二级名称服务器的DNS应答报文,得到 www.examp1e.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务 器发送解析www.examp1e.com域名的DNS请求报文。

10.权威名称服务器www.examp1e.com在收到DNS客户端的DNS查询请求报文后,在它的 DNS区域数据库中查找,最终得出了www.examp1e.com域名所对应的IP地址。然后向 DNS客户端返回一条DNS应答报文。这样DNS客户端获取IP地址后就可以正常访问这个 网站了。

DNS递归查询

递归查询是默认的DNS解析方式。在这种解析方式中,如果客户端配置的本地名称服务器遇到不 能解析的,则后面的查询全由本地名称服务器代替DNS客户端进行查询,直到本地名称服务器从 权威名称服务器得到了正确的解析结果,然后由本地名称服务器告诉DNS客户端查询的结果。

在递归查询过程中,一直是以本地名称服务器为中心的,DNS客户端只是发出原始的域名查询请 求报文,然后就一直处于等待状态,直到本地名称服务器返回最终的查询结果。此时的本地名称 服务器就相当于中介代理的作用。

如果考虑了本地名称服务器的缓存技术(在DNS服务器上对一定数量查询过的记录保存一定时 间,这样后面查询同样的域名信息时就可直接从缓存中调出来,以加速查询效率),则递归解析 的基本流程如下(在此仅以首先DNS服务器作为本地名称服务器为例,与其它备用DNS服务器 的解析流程完全一样):

​ 1.客户端向本机配置的本地名称服务器发出DNS域名查询请求。

​ 2.本地名称服务器收到请求后,先查询本地的缓存,如果有该域名的记录项,则本地名称服务 器就直接把查询的结果返回给客户端;如果本地缓存中没有该域名的记录,则本地名称服务 器再以DNS客户端的角色发送与前面一样的DNS域名查询请求发给根名称服务器。

​ 3.根名称服务器收到DNS请求后,把所查询得到的所请求的DNS域名中顶级域名所对应的顶 级名称服务器地址返回给本地名称服务器。

​ 4.本地名称服务器根据根名称服务器所返回的顶级名称服务器地址,向对应的顶级名称服务器 发送与前面一样的DNS域名查询请求。

​ 5.顶级名称服务器在收到DNS查询请求后,也是先查询本地的缓存,如果有所请求的DNS域 名的记录项,则直接把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回 给DNS客户端,否则向本地名称服务器返回所请求的DNS域名中的二级域名所对应的二级 名称服务器地址。

​ 6.本地名称服务器根据根名称服务器所返回的二级名称服务器地址,向对应的二级名称服务器 发送与前面一样的DNS域名查询请求。

​ 7.二级名称服务器在收到DNS查询请求后,也是先查询本地的缓存,如果有所请求的DNS域 名的记录项,则直接把对应的记录项返回给本地名称服务器,然后再由本地名称服务器返回 给DNS客户端,否则向本地名称服务器返回所请求的DNS域名中的三级域名所对应的三级 名称服务器地址。

​ 8.就这样本地名称服务器重复步骤6和步骤7的方法一次次地向三级、四级名称服务器等查 询,直到最终的对应域名所在区域的权威名称服务器返回到最终的记录给本地名称服务器。

​ 9.然后再由本地名称服务器返回给DNS客户,同时本地名称服务器会缓存本次查询得到的记 录项。

如果在上述步骤中对应域名的权威名称服务器都说找不到对应的域名记录,则会向DNS客户端返 回一条查询失败的DNS应答报文。当然,如果这个权威名称服务器上配置了指向其它名称服务器 的转发器,则权威名称服务器还会在转发器指向的名称服务器上进一步重复上述步骤查询。另 外,如果DNS客户端上配置了多个DNS服务器,则还会继续向其它DNS服务器查询的。 简单的讲,递归查询步骤;

​ 1.客户端向本机配置的本地名称服务器发出DNS域名查询请求,发出请求后客户端一直处于 等待状态,等待本地名称服务器返回查询结果。

​ 2.本地名称服务器收到DNS请求后,先查询本地的缓存,查到存在该域名记录项立即返回结 果,否则本地名称服务器不断向DNS名称服务器发送DNS请求查询,直到查到改域名对应 的权威名称服务器并获得记录结果。

​ 3.本地名称服务器解析到结果后将结果返回给客户端。

假设客户端访问站点www.examp1e.com,那么DNS客服端的查询路径如下:

​ 1.DNS客户端向所配置的本地名称服务器dns.examp1e.com发出解析www.examp1e.com 域名的DNS请求报文。

​ 2.本地名称服务器收到请求后,先查询本地缓存。假设没有查到该域名对应记录,则本地名称 服务器向所配置的根名称服务器a.rootserver.net发出解析请求解析www.examp1e.com 域名的DNS请求报文(相当于对本地名称服务器说:“请给我www.examp1e.com所对应的IP 地址”)。

​ 3.根名称服务器收到客户端的DNS查询请求报文后,通过查询得到.com顶级域名所对应的 顶级名称服务器,然后向本地名称服务器返回一条应答报文(相当说"我不知道 www.examp1e.com域名所对应的IP地址,但我现在告诉你.com域名所对应的顶级名称服 务器地址")。

​ 4.本地名称服务器在收到根名称服务器的DNS应答报文, 得到.com顶级域名所对应的顶级 名称服务器地址后,再次向对应的顶级名称服务器发送一条请求解析ww.example.com域 名的DNS请求报文。

5..com顶级名称服务器在收到DNS请求报文后,先查询本地的缓存,假设也没有该域名的记 录项,则查询example.com所对应的二级名称服务器,然后也向本地名称服务返回一条 DNS应答报文(相当于对本地名称服务器说"我不知道www.example.com域名所对应的IP 地址,但我现在告诉你examp1e.com域名所对应的二级名称服务器地址"。

6.本地名称服务器在收到.com顶级名称服务器的DNS应答报文,得到examp1e.com二级域 名所对应的二级名称服务器地址后,再次向对应的二级名称服务器发送一条请求解析 www.examp1e.com域名的DNS请求报文。

7.examp1e.com二级名称服务器在收到DNS请求报文后,也先查询本地的缓存,假设也没有 该域名的记录项,则查询www.examp1e.com所对应的权威名称服务器,然后也向本地名称 服务器返回一条DNS应答报文(相当于本地名称服务器说:“我不知道www.examp1e.com域 名所对应的IP地址,但我现在告诉你www.example.com域名所对应的权威名称服务器地 址”)。

8.本地名称服务器在收到examp1e.com二级名称服务器的DNS应答报文,得到 www.examp1e.com三级域名所对应的权威名称服务器地址后,再次向对应的权威名称服务 器发送一条请求解析www.examp1e.com域名的DNS请求报文。

9.ww.examp1e.com权威名称服务器在收到DNS请求后,在它的DNS区域数据库中查找, 最终得出了www.examp1e.com域名所对应的IP地址。然后向本地名称服务器返回到条 DNS应答报文(相当于对本地名称服务器说:“www.examp1e.com域名的IP地址为 xXX.XXX.XX.X”)。

10.本地名称服务器在收到权威名称服务器的应答报文后,向DNS客户端返回一条DNS应答报 文,告诉DNS客户端所得到的www.examp1e.com 域名的IP地址。这样DNS客户端就可 以正常访问这个网站了。

DNS 资源记录

DNS 区域中的 DNS resource record(RR-DNS 资源记录)条目指定有关区域中特定名称或对象的信息。

记录说明

Field nameContent
owner-nameThe name for this resource record.
TTLThe Time To Live of the resource record in seconds. This specifies how long this resource record should be cached by DNS resolvers.
classThe “class” of the record, almost always IN (“internet”).
typeThe type of information stored by this record. For example, an A record maps a host name to an IPv4 address.
dataThe data stored by this record. The exact format varies by record type.

A 资源记录

A 资源记录将主机名映射到 IPv4 地址。

server.linux.fun. 86400 IN A 172.25.254.254

AAAA 资源记录

AAAA 资源记录(4A 记录)将主机名映射到 IPv6 地址

a.root-servers.net  604800 IN AAAA 2001:503:ba3e::2:30

CNAME 资源记录

CNAME 资源记录将一个名称别名为另一个名称(规范名称),该名称应具有 A 或 AAAA 记录。当 DNS 解析程序收到对查询的 CNAME 记录时,它将使用规范名称而不是原始名称重新发出查询。

CNAME 记录的数据字段可以指向 DNS 中任何区域的名称,无论该区域是内部的还是外部的:

www-dev.linux.fun. 30 IN CNAME ab.linux.fun.
server.linux.fun. 30 IN CNAME www.redhat.com
  • CNAME 记录可能指向具有 CNAME 的名称,但 CNAME 记录链最终必须解析为 A 或 AAAA 记录的名称。
  • 通常,避免将 CNAME 记录指向其他 CNAME 记录。CNAME 会使查找效率降低,更脆弱,并且我们可能会意外地创建一个指向彼此的 CNAME 记录循环。
  • CNAME 记录链有合法用途。例如,它们与 Content Delivery Network(CDN)结合使用。
  • NS 和 MX 记录不得指向带有 CNAME 记录的名称,而是使用带有 A 和 / 或 AAA 资源记录的名称。

PTR 资源记录

PTR 或 pointer 资源记录将 IPv4 或 IPv6 地址映射到主机名。它们用于反向 DNS 解析。

PTR 记录以一种类似于主机名的特殊格式对 IP 地址进行编码。

  • 对于 IPv4 地址,该地址被颠倒,以最具体的部分开始,然后视为 in-addr.arpa 域的子域中的主机。
  • 对于 IPv6 地址,该地址在半字节边界(每个十六进制数字)上划分为子域,并设置为 ip6.arpa 域的子域。
4.0.41.198.in-addr.arpa. 785 IN PTR a.root-servers.net.
0.3.0.0.2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.e.3.a.b.3.0.5.0.1.0.0.2.ip6.arpa. 86400 IN PTR a.root-servers.net.

该语法可能看起来很奇怪,但是它简化了将地址范围的责任委托给其他 DNS 管理员的情况。

NS 资源记录

NS 或名称服务器资源记录将域名映射到对其 DNS 区域具有权威性的 DNS 名称服务器。该区域的每个公共权威名称服务器都必须具有 NS 记录。

linux.fun. 86400 IN NS classroom.linux.fun.168.192.ip-addr.arpa. 86400 IN NS classroom.linux.fun.9.0.e.1.4.8.4.6.2.e.d.f.ip6.arpa. 86400 IN NS classroom.linux.fun.
说明
  • 其中两个 NS 记录用于 10.1.8.0/16 网络和 fde2:6484:1e09:/48 网络的反向查找。
  • classroom.linux.fun 上的区域可能包含 NS 记录,以将对 192.168.254.0/24 和 fde2:6484:1e09:1:/64 的反向查找委托给另一个名称服务器。

NS 记录映射的名称必须有 A 或 4A 记录。

SOA 资源记录

SOA 资源记录,也叫做起始授权机构记录,提供有关 DNS 区域如何运行的信息。每个区域必须有一个 SOA 记录。

  • 指定了一个序列号
  • 指定其他权威性名称服务器用来确定何时从主要名称服务器传输区域资源记录的各种超时时时间。
记录值说明
示例含义
MNAMEclassroom.linux.fun.该名称服务器是这个区域的主要名称服务器,负责维护区域资源记录。
RNAMEroot.classroom.linux.fun.该区域中负责人邮件地址,@用。代替,例如 root@classroom.linux.fun.
SERIAL2015071700该区域版本号,随着区域中记录更改而增加。
REFRESH3600从名称服务器向主名称服务器更新数据频率。
RETRY300在重试失败的刷新前,应当等待的时间间隔。单位秒。
EXPIRE604800如果刷新失败,从服务器在停止其旧的区域副本响应查询之前等待的时间。单位秒。
MINIMUM60如果解析器查找某个名称,并且该名称不存在,解析器应将 “记录不存在” 这一信息缓存的时间。单位秒。

MX 资源记录

MX 资源记录将域名映射到接受该域的电子邮件的邮件交换(mail exchange)。邮件服务器故障时,提供负载平衡和冗余的邮件服务器帮助路由电子邮件。

该记录类型的数据是用于确定在多个 MX 记录之间选择的优先级(首选最低),以及用于该名称的邮件交换的主机名。

主机和资源记录

一个主机,无论是客户端还是服务器,都具有以下 DNS 资源记录:

  • 一个或多个 A 或 AAAA 记录
  • 用于将其 IP 地址反向映射到名称的 PTR 记录
  • 一个或多个 CNAME 记录(可选)

DNS zone 还具有以下资源记录:

  • 唯一的 SOA 记录
  • 每个权威名称服务器的 NS 记录
  • 一个或多个 MX 记录(可选)
  • 用于在域中查找服务的一个或多个 SRV 记录(可选)

配置权威名称服务器

权威名称服务器架构

权威名称服务器存储 DNS 资源记录,并为其管理的区域提供权威答案。

Linux 中的 Berkeley Internet Name Domain(BIND)软件可以实现权威的名称服务器。BIND 允许我们将权威服务器配置为区域的主要服务器或辅助服务器。区域中只有一台主服务器,但可具有多台辅助服务器。辅助服务器通过请求区域传输,定期从主服务器下载区域信息的最新版本。它们执行区域传输的频率以及如何知道其数据是否过时由区域的 SOA 资源记录控制。

名称服务器可以是某些区域的主要服务器,同时也可以其他区域的辅助服务器。

当前 BIND 服务器角色为 master 和 slave,以后会变更为 primary 和 secondary(例如,BIND 9.16 ESV 版本)。

注册新的 DNS 域时,必须提供该域的所有公共权威名称服务器的名称和 IP 地址。我们的注册服务商将该信息放在父域的区域文件中(如 NS、A 和 AAAA 记录),以便 DNS 解析器可以找到我们的名称服务器。为了帮助确保可靠性,我们应该至少有两个公共 DNS 服务器,并且它们应位于不同的站点,以避免由于网络故障而造成的中断。

并非所有权威服务器都必须是公共的。例如,使用 primary 服务器来管理区域文件,并将区域信息发布到权威的 secondary 服务器。primary 服务器是私有的,而 secondary 服务器是面向公众的,从而为外部客户端提供权威性的答案,保护我们的 primary 服务器免受攻击。

架构示例 1:外部客户端查找 linux.fun

查找过程:客户的仅缓存名称服务器首先查询其中一个根名称服务器。它定向到负责.com 域的名称服务器池。这些服务器之一使用 linux.fun 域的 NS 记录进行响应,因此仅缓存名称服务器会查询其中一个面向公众的辅助名称服务器。

架构示例 2:内部客户端查找 linux.fun

更好的方法是提供内部 slave 权威服务器。查询本地域的记录时,消除了外部查询,而且更加安全。

安装 BIND

通过安装 bind 软件包来安装 BIND 名称服务器本身作为 named 服务运行。bind 包将 HTML 和 PDF 格式的 BIND 文档在安装在 /usr/share/doc/bind/ 目录。

[root@server ~ 14:59:20]# yum install -y bind bind-utils
软件包说明
  • bind:服务器软件包。
  • bind-utils:客户端软件包。

在 Red Hat Enterprise Linux 8 中,bind 软件包默认将服务配置为基本的递归缓存名称服务器。它被配置为localhost、相关域和地址的 primary 服务器,以减轻根名称服务器的负担。此默认配置还限制了对本地主机上程序的访问。它侦听 IPv4 和 IPv6 环回接口的端口 53 UDP/TCP(127.0.0.1 和::1)上的连接。

配置 BIND

named 主要配置文件是 /etc/named.conf。该文件控制 BIND 的基本操作,由 root 用户(named 组)拥有,具有八进制权限 0640,并且具有 named_conf_t SELinux 类型。

配置文件还指定了每个区域的配置文件位置,这些文件通常保存在 /var/named 中。

配置 DNS 服务器需要执行以下步骤:

  • 配置地址匹配列表。
  • 配置 named 侦听的 IP 地址。
  • 配置客户端的访问控制。
  • 配置 zone。
  • 编写区域文件。
定义地址匹配列表

在 /etc/named.conf 文件的开头,可以使用 acl 指令定义地址匹配列表。acl 指令不是用于控制客户端对服务器的访问,而是使用它们来定义 IP 地址和网络列表。

它们提供别名,可以与访问控制指令和其他配置选项一起使用,并使更新配置文件更加容易。条目可以是完整的 IP 地址或网络,用尾点(10.1.8.)或 CIDR 表示法(192.168.0/24 或 2001:db8:/32)表示,也可以使用先前定义的地址匹配列表的名称。

#修改配置文件
[root@server ~ 14:59:29]# vim /etc/named.conf 
2.1 增加监听iplisten-on port 53 { 127.0.0.1;10.1.8.10; };2.2 放行客户端allow-query     { localhost;10.1.8.0/24; };// allow-query     { localhost;any; };2.3 关闭安全认证dnssec-enable yes;dnssec-validation no;2.4 最后添加正向解析和反向解析配置zone "laoma.cloud." IN {type master;file "laoma.cloud.zone";
};zone "8.1.10.in-addr.arpa" IN {type master;file "10.1.8.zone";
};

在其值中使用 classroom 的任何指令都将与 10.1.8.0/24 网络和 192.168.1.21 中的主机匹配。acl 语句定义的地址集可以被多个指令引用。

named 中内置了四个预定义的 ACL:

ACLDescription
noneMatches no hosts.
anyMatches all hosts.
localhostMatches all IP addresses of the DNS server.
localnetsMatches all hosts from the DNS server’s local subnets.
配置 named 侦听的 IP 地址

我们可以在 /etc/named.conf 文件 options 块中指定许多全局设置。listen-on 和 listen-on-v6 指令,指定了命名监听的接口和端口。

  • listen-on 选项采用以分号分隔的 IPv4 地址列表。
  • listen-on-v6 使用 IPv6 地址。
[root@server ~ 14:59:29]# vim /etc/named.conf
zone "ghl.cloud" IN {type master;file "ghl.cloud.zone";
};zone "8.1.10.in-addr.arpa" IN {type master;file "10.1.8.zone";
};
配置客户端的访问控制

我们可以在 /etc/named.conf 文件 options 块中使用以下三个指令配置控制访问:

  • allow-query,控制所有查询。默认情况下,allow-query 设置为localhost,对于公开权威服务器必须定义 allow-query {any;}; 允许互联网托管者从他们那里获取信息。

  • allow-recursion,控制递归查询。权威服务器不应允许递归查询,防止服务器被用于 DNS 放大分布式拒绝服务攻击,并更好地保护其免受缓存中毒攻击。

  • allow-transfer,控制区域转移(Zone Transfer)。区域转移允许客户端获取我们区域中所有数据的转储。区域转移应该受到限制,否则攻击者很容易快速获取我们区域中的所有资源记录。

[root@server ~ 15:11:26]# cd /var/named 
[root@server named 15:13:06]# touch ghl.cloud.zone
[root@server named 15:13:38]# cp named.localhost ghl.cloud.zone 
cp:是否覆盖"ghl.cloud.zone"? y
[root@server named 15:19:27]# touch 10.1.8.zone
[root@server named 15:19:40]# cp -a named.loopback 10.1.8.zone
cp:是否覆盖"10.1.8.zone"? y[root@server named 15:35:08]# vim ghl.cloud.zone 
$TTL 3600
@              IN SOA dns.ghl.cloud. admin.ghl.cloud. (42 ; serial3H ; secondary refresh15M ; secondary retry1W ; secondary timeout15M ; minimum cache TTL for negative answers
)IN NS dns.ghl.clound.
dns            IN A 10.1.8.10
server         IN A 10.1.8.10
student        IN CNAME client.ghl.cloud.
client         IN A 10.1.8.11
www         30 IN A 10.1.8.200
@              IN MX 10 mail.ghl.cloud.
mail           IN A 10.1.8.253[root@server named 15:38:54]# vim 10.1.8.zone
$TTL 3600
@              IN SOA dns.ghl.cloud. admin.ghl.cloud. (42 ; serial3H ; secondary refresh15M ; secondary retry1W ; secondary timeout15M ; minimum cache TTL for negative answers
)IN NS dns.ghl.cloud.
10             IN PTR server.ghl.cloud.
10             IN PTR dns.ghl.cloud.
11             IN PTR client.ghl.cloud.
11             IN PTR student.ghl.cloud.
200            IN PTR www.ghl.cloud.
253            IN PTR mail.ghl.cloud.[root@server ~ 15:46:27]# named-checkconf 
[root@server ~ 15:46:29]# named-checkzone ghl.cloud /var/named/ghl.cloud.zone 
zone ghl.cloud/IN: loaded serial 42
OK

运行 BIND

[root@server ~ 15:47:04]# systemctl enable named --now
[root@server ~ 15:47:24]# systemctl status named
客户端测试

方式 1:配置 dns

[root@client ~ 16:00:08]# nmcli connection modify ens33 -ipv4.dns 223.5.5.5 -ipv4.dns 223.6.6.6 
[root@client ~ 16:01:29]# nmcli connection down 有线连接\ 1 
成功停用连接 "有线连接 1"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)[root@client ~ 11:14:07]# nmcli connection modify ens33 ipv4.dns 10.1.8.10 
[root@client ~ 15:57:59]# nmcli connection up ens33[root@client ~ 16:38:25]# ping student
PING client.ghl.cloud (10.1.8.11) 56(84) bytes of data.
64 bytes from student.ghl.cloud (10.1.8.11): icmp_seq=1 ttl=64 time=0.016 ms
......[root@client ~ 16:39:07]# host student
student.ghl.cloud is an alias for client.ghl.cloud.
client.ghl.cloud has address 10.1.8.11[root@client ~ 17:24:43]# getent hosts student
10.1.8.11       client.ghl.cloud student.ghl.cloud

方式 2:dig 工具

[root@client ~ 16:04:47]# yum install -y bind bind-utils
[root@client ~ 16:38:37]# dig @10.1.8.10 -x 10.1.8.200

“有线连接 1”(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/9)

[root@client ~ 11:14:07]# nmcli connection modify ens33 ipv4.dns 10.1.8.10
[root@client ~ 15:57:59]# nmcli connection up ens33

[root@client ~ 16:38:25]# ping student
PING client.ghl.cloud (10.1.8.11) 56(84) bytes of data.
64 bytes from student.ghl.cloud (10.1.8.11): icmp_seq=1 ttl=64 time=0.016 ms

[root@client ~ 16:39:07]# host student
student.ghl.cloud is an alias for client.ghl.cloud.
client.ghl.cloud has address 10.1.8.11

[root@client ~ 17:24:43]# getent hosts student
10.1.8.11 client.ghl.cloud student.ghl.cloud

方式 2:dig 工具```bash
[root@client ~ 16:04:47]# yum install -y bind bind-utils
[root@client ~ 16:38:37]# dig @10.1.8.10 -x 10.1.8.200
http://www.dtcms.com/a/406264.html

相关文章:

  • 如何在 Vue 中打印页面:直接用 web-print-pdf(npm 包)
  • 响应式网站内容布局网站开发团队成员介绍
  • PaintBoard+cpolar:云端画板的远程创作方案
  • 9月25日星期四今日早报简报微语报早读
  • 零基础学AI大模型之AI大模型可视化界面
  • 深圳建设工程项目网站沈阳网站模板建站
  • (二)3.1.9 生产“稳”担当:Apache DolphinScheduler Worker 服务源码全方位解析
  • Linux-01(Linux 基础命令)
  • 苹果群控系统的游戏运营
  • 英迈思做的网站怎么样建设网站时 首先要解决两个问题 一是什么
  • 风险网站如何解决办法关于加强公司 网站建设的通知
  • 7、revision 是 Maven 3.5+ 引入的现代版本管理机制
  • Maven入门:高效构建Java项目
  • Hadess入门到实战(2) - 如何管理Maven制品
  • maven pom文件中<dependencyManagement><dependencies><dependency> 三者的区别
  • Django数据库连接数超限问题分析与解决方案
  • 软考 UML 用例图 extend扩展关系 include包含关系 泛化继承inherit关系
  • 代码随想录算法训练营第五十一天|99.岛屿数量 深搜 99.岛屿数量 广搜 100.岛屿的最大面积
  • Maven setting文件中<mirrors>(镜像)和 <servers>两个标签的区别
  • 论坛门户网站建设运营费用八度 网站建设
  • iOS 26 设备文件管理实战指南,文件访问、沙盒导出、系统变更与 uni-app 项目适配
  • 【数据结构】List 详解
  • 网站哪个做的好织梦cms手机网站
  • Golang面试-Channel
  • Go channel 的底层实现
  • uniapp USB UVC 摄像头调用的最佳实现 支持Android5到Android16 v2
  • 【uni-app】树形结构数据选择框
  • 视频解析网站甜品蛋糕网站建设策划书
  • PostgreSQL 中序列(Sequence)的详细用法
  • 超低延迟与高并发保障:互联网直播点播平台EasyDSS如何成为企业级现场直播的“技术底座”?