一、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服务器,能解析内网搭建的所有服务器的域名,并通过配置转发地址使内网的用户使用域名访问外网的服务器。
二、授权 DNS 服务器的配置
1. 配置网络参数
**以 root 用户身份登录 RHEL7 系统→配置 DNS 服务器网卡的 IP 地址为 192.168.8.1/24、主机名为dns1.xyz.edu **
编辑->虚拟网络编辑器->更改设置->添加网络->添加网络->修改子网 IP
虚拟机 -> 设置 -> 硬件 -> 网络适配器 -> 网络连接 -> NAT
启动应用程序->系统设置->网络->有线->设置-> IPv4
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