DNS 服务器的配置



一、DNS 服务

解析:域名系统

1. Unbound 软件包

  • unbound-1.4.20-28.el7.x86_64.rpm

     DNS的主程序包。

  • unbound-libs-1.4.20-28.el7.x86_64

     进行域名解析必备的库文件。

2. Unbound 服务器的安装与运行管理

  • Unbound 服务的安装

    [root@localhost ~]# mount /dev/cdrom /mnt 
    [root@localhost ~]# rpm -ivh /mnt/Packages/unbound-1.4.20-28.el7.x86_64.rpm
  • 启动、重启、查询服务的启动状态、停止
     systemctl start|stop|restart|reload|status unbound.service

  • Unbound 服务在系统开机时自动启动或不启动的命令格式如下:
     systemctl enable|disable unbound.service

  • 检查dhcpd进程
     ps -ef | grep unbound

  • 查看dhcpd运行的端口
     ss -nutap | grep unbound

实例:搭建一台授权DNS服务器,该服务器能访问互联网中其他DNS服务器,能解析内网搭建的所有服务器的域名,并通过配置转发地址使内网的用户使用域名访问外网的服务器。

1622097501399

二、授权 DNS 服务器的配置

1. 配置网络参数

**以 root 用户身份登录 RHEL7 系统→配置 DNS 服务器网卡的 IP 地址为 192.168.8.1/24、主机名为dns1.xyz.edu **

编辑->虚拟网络编辑器->更改设置->添加网络->添加网络->修改子网 IP

1622099016595

虚拟机 -> 设置 -> 硬件 -> 网络适配器 -> 网络连接 -> NAT

image-20210613145835368

启动应用程序->系统设置->网络->有线->设置-> IPv4
image-20210613151142807
1621953070703

2. 安装软件包

安装 Unbound 软件包→启动和开机自动启动 Unbound 服务。

[root@dns1 ~]# mount /dev/cdrom /mnt
[root@dns1 ~]# rpm -ivh /mnt/Packages/unbound-1.4.20-28.el7.x86_64.rpm
[root@dns1 ~]# systemctl restart unbound 
[root@dns1 ~]# systemctl enable unbound 
Created symlink from /etc/systemd/system/multi-user.target.wants/unbound.service to /usr/lib/systemd/system/unbound.service.

3. 编辑配置文件

使用 vim 编辑配置文件 unbound.conf,对服务器全局参数进行配置

执行指令:vim /etc/unbound/unbound.conf,在末行模式使用 /参数名 跳转到大致位置配置参数

// 配置区域的全局参数:使用
interface: 192.168.8.1                   // 52行,设置监听的网络接口(默认监听localhost网络接口)
access-control: 192.168.8.0/24 allow     // 246行,允许allow或拒绝refuse给哪些地址提供解析服务
username: "”                             // 295行,改成空字符串,表示任何用户均可访问
domain-insecure: "xyz.edu"               // 504行,跳过验证域 “xyz.edu”,以避免信任链验证失败
include: /etc/unbound/local.d/*.conf     // 681行,将指定的其他可能的配置文件包含进当前文件

4. 配置正向和反向解析记录

配置正向解析记录和反向解析记录。可以在全局配置文件中配置,也可以在 /etc/unbound/local.d 目录中定义一个以 .conf 结尾的文件中(如 /etc/unbound/local.d/domain.conf )配置(以全局配置文件中的第454 行~第470行为格式模板)。在此,继续在全局配置文件中配置正向和反向解析记录

执行指令:vim /etc/unbound/unbound.conf,在末行模式使用 /参数名 跳转到大致位置配置参数

local-zone: "xyz.edu." static // 680行:设置解析的区域名,此行不输入
// 添加以下 4 行 local-data,以定义正向解析记录
local-data: "xyz.edu. 86400 IN SOA dns1.xyz.edu. root.xyz.edu 1 1D 1H 1W 1H"
local-data: "dns1.xyz.edu.   IN A      192.168.8.1"
local-data: "dns2.xyz.edu.   IN A      192.168.8.2"
local-data: "cname.xyz.edu.  IN CNAME  dns1.xyz.edu."
local-data: "xyz.edu.        IN MX 5   dns1.xyz.edu."
// 添加以下 2 行 local-data-ptr,以定义反向解析记录
local-data-ptr: "192.168.8.1 dns1.xyz.edu"
local-data-ptr: "192.168.8.2 dns2.xyz.edu"

5. 配置转发

配置转发。任何一台 DNS 服务器能直接提供的解析记录都是有限的,当用户请求的解析记录超出了某台 DNS 服务器所能解析的范围时,就需要在该 DNS 服务器上设置转发功能,以便把超范围的用户解析请求转发给其他 DNS 服务器代为解析。若要将本 DNS 服务器的解析请求转发给由 ISP 提供的 IP 地址为 8.8.8.8 的公共 DNS 服务器,则只要在 unbound.conf 作以下修改便可。

执行指令:vim /etc/unbound/unbound.conf,在末行模式使用 /参数名 跳转到大致位置配置参数

forward-zone:                // 843行,定义转发forward
	name: "."                // 转发所有的查询
	forward-addr: 8.8.8.8    // 将解析请求转发到指定IP地址的DNS服务器

6. 检测配置文件语法错误:

检测配置文件是否有语法错误,没有错误后,重启服务

[root@dns1 ~]# unbound-checkconf 
unbound-checkconf: no errors in /etc/unbound/unbound.conf
[root@dns1 ~]# systemctl restart unbound

7. 在服务器端的防火墙中开放DNS服务

[root@dns1 ~]# firewall-cmd --permanent --add-service=dns
success
[root@dns1 ~]# firewall-cmd --reload
success

8. Linux客户端测试

Linux客户端测试。在客户端修改 /etc/resolv.conf 文件,将 DNS 服务器的 IP 地址指向上述所配置的授权 DNS 服务器的 IP 地址→使用 nslookup 命令验证 DNS 查询结果。

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.8.1

[root@localhost ~]# nslookup
> dns1.xyz.edu                   // 验证正向解析记录
Server:		192.168.8.1
Address:	192.168.8.1#53

Name:	dns1.xyz.edu
Address: 192.168.8.1            
> 192.168.8.1                    // 验证反向解析记录
Server:		192.168.8.1
Address:	192.168.8.1#53

1.8.168.192.in-addr.arpa	name = dns1.xyz.edu.

> set type=cname                // 验证别名记录的解析结果
> cname.xyz.edu
Server:		192.168.8.1
Address:	192.168.8.1#53

cname.xyz.edu	canonical name = dns1.xyz.edu.
> www.baidu.com                 // 验证转发功能的解析结果(失败,?????)


> exit                          // 退出nslookup命令,结束测试

三、纯缓存 DNS 服务器的配置

1. 配置网络参数

**以 root 用户身份登录 RHEL7 系统→配置 DNS 服务器网卡的 IP 地址为 192.168.8.1/24、主机名为dn2.xyz.edu **

2. 安装软件包

安装 Unbound 软件包→启动和开机自动启动。

[root@dns2 ~]# mount /dev/cdrom /mnt
[root@dns2 ~]# rpm -ivh /mnt/Packages/unbound-1.4.20-28.el7.x86_64.rpm
[root@dns2 ~]# systemctl start unbound 
[root@dns2 ~]# systemctl enable unbound 
Created symlink from /etc/systemd/system/multi-user.target.wants/unbound.service to /usr/lib/systemd/system/unbound.service.

3. 编辑配置文件

使用 vim 编辑配置文件 unbound.conf,对服务器全局参数进行配置

执行指令:vim /etc/unbound/unbound.conf,使用 /参数名 跳转到大致位置配置参数

// 配置区域的全局参数:使用
interface: 192.168.8.2              // 52行,设置监听的网络接口(默认监听localhost网络接口)
msg-cache-size: 8m                  // 150行,缓存大小
access-control: 0.0.0.0/24 allow    // 204行,允许allow或拒绝refuse给哪些地址提供解析服务
username: "”                        // 296行,改成空字符串,表示任何用户均可访问
domain-insecure: "xyz.edu"          // 505行,跳过验证域 “xyz.edu”,以避免信任链验证失败
forward-zone:                       // 844行:定义转发forward
	name: "."                       // 转发所有的查询
	forward-addr: 192.168.8.1       // 将解析请求转发到指定 IP 地址的 DNS 服务器

6. 检测配置文件语法错误

检测配置文件是否有语法错误,没有错误后,重启服务

[root@dns2 ~]# unbound-checkconf 
unbound-checkconf: no errors in /etc/unbound/unbound.conf
[root@dns2 ~]# systemctl restart unbound

7. 在服务器端的防火墙中开放DNS服务

[root@dns2 ~]# firewall-cmd --permanent --add-service=dns
success
[root@dns2 ~]# firewall-cmd --reload
success

8. 验证纯缓存 DNS 服务器

**验证纯缓存 DNS 服务器。将客户端的 DNS 服务器的 IP 地址设为纯缓存 DNS 服务器的 IP 地址,然后使用 nslookup 命令测试正向解析和反向解析的效果。 **

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.8.2

[root@localhost ~]# nslookup
> dns1.xyz.edu                   // 验证正向解析记录
Server:		192.168.8.2
Address:	192.168.8.2#53

Name:	dns1.xyz.edu
Address: 192.168.8.1
> 192.168.8.1                    // 验证反向解析记录
Server:		192.168.8.2
Address:	192.168.8.2#53

1.8.168.192.in-addr.arpa	name = dns1.xyz.edu.

> exit

文章作者: AYang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 AYang !
  目录