配置DNS域名解析服务
大家好,今天我将带大家一起探索如何配置DNS(Domain Name System)域名解析服务。DNS是我们互联网中不可或缺的一部分,它负责将我们熟悉的域名(如www.example.com)转换为计算机可以理解的IP地址。
本节首先对 DNS 系统的作用及类型做一个简单回顾,并学习 Linux 操作系统中 BIND域名服务的基础知识。
一、BIND 域名服务基础
DNS 系统的作用及类型
DNS 系统在网络中的作用就是维护一个地址数据库,其中记录了各种主机域名与 IP 地址的对应关系,以便为客户程序提供正向或反向的地址查询服务,即正向解析与反向解析。
- 正向解析: 根据主机名(域名)查找对应的IP地址。
在DNS服务中,正向解析通过A记录(将域名映射到IPv4地址)或AAAA记录(将域名映射到IPv6地址)来实现。 - 反向解析: 根据IP地址查找对应的主机名(域名)。
在DNS服务中,反向解析通过PTR记录来实现,PTR记录为邮件交换记录的一种,与A记录(域名到IP的映射)相对应,它负责解析IP地址到域名。
根据所管理的区域地址数据的来源不同,DNS 系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。
常见的几种类型如下。
- 缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。
- 主域名服务器:维护某一个特定 DNS区域的地址数据库,对其中的解析记录具有自主控制权,是指定区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所负责区域的地址数据文件。
- 从域名服务器:与主域名服务器提供完全相同的 DNS 解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询的结果都是一样的。关键区别在于,从域名服务器提供的解析结果不是由自己决定的,而是来自于主域名服务器。构建从域名服务器时,需要指定主域名服务器的位置,以便服务器能自动同步区域的地址数据库。
BIND 的安装和控制
BIND 不是唯一能够提供域名服务的 DNS 服务程序,但它却是应用最为广泛的,BIND 可以运行在大多数 Linux/UNIX 主机中。其官方站点位于 https://www.isc.org/。
修改主机名
#主域名服务器
hostnamectl set-hostname ns1.bdqn.com
#从域名服务器
hostnamectl set-hostname ns2.bdqn.com
#客户机
hostnamectl set-hostname client
1.安装 BIND 软件
在 CentOS 系统中, 系统光盘自带了 BIND 服务的安装文件, 主要包括以下几个软件包。
软件包 | 作用 |
---|---|
bind-9.9.4-37.el7.x86_64.rpm | 提供了域名服务的主要程序及相关文件 |
bind-utils-9.9.4-37.el7.x86_64.rpm | 提供了对 DNS 服务器的测试工具程序,如 nslookup 等 |
bind-libs-9.9.4-37.el7.x86_64.rpm | 提供了 bind、bind-utils 需要使用的库函数 |
bind-chroot-9.9.4-37.el7.x86_64.rpm | 为 BIND 服务提供一个伪装的根目录(将/var/named/chroot/文件夹作为 BIND 服务的根目录),以提高安全性 |
# 查询是否已安装与BIND 相关的软件包
[root@localhost Server]# rpm -qa | grep "^bind"
bind-utils-9.9.4-37.el7.x86_64
bind-license-9.9.4-37.el7.noarch
bind-libs-lite-9.9.4-37.el7.x86_64
bind-9.9.4-37.el7.x86_64
bind-libs-9.9.4-37.el7.x86_64
bind-chroot-9.9.4-37.el7.x86_64
yum -y install bind bind-utils bind-libs bind-chroot
2.BIND 服务控制
BIND 软件包安装完毕以后,会自动增加一个名为 named 的系统服务,通过 systemctl 工具可以控制 DNS 域名服务的运行
[root@localhost ~]# systemctl status named
●named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service;
disabled; vendor preset: disabled) Active: inactive (dead)
二、使用 BIND 构建域名服务器
主域名解析服务器需要的配置文件
配置文件 | 作用 |
---|---|
named.conf | 主配置文件 |
bdqn.com.zone | 正向解析文件 |
192.168.78.arpa | 反向解析文件 |
构建主域名服务器
建立主配置文件 named.conf
# vi 进入 /etc/named.conf 修改添加配置文件
[root@ns1 ~]# vi /etc/named.conf
[root@ns1 ~]# cat /etc/named.conf
options {
listen-on port 53 { 192.168.72.131; }; //监听地址和53号端口
listen-on-v6 port 53 { ::1; };
directory "/var/named"; //区域数据文件的默认存放位置
allow-query { 192.168.72.0/24; }; //允许使用本DNS服务的网段
};
zone "bdqn.com" IN { //正向查找“bdqn”区域,域名
type master; //类型为主区域
file "bdqn.com.zone"; //区域数据文件为bdqn.com.zone
allow-transfer {192.168.72.129;}; //允许从服务器下载正向区域数据
};
zone "72.168.192.in-addr.arpa" IN { //反向查找查找“192.168.72.0/24”区域
type master; //类型为主区域
file "192.168.72.arpa"; //区域数据文件为 192.168.72.arpa
allow-transfer {192.168.72.129;}; //允许从服务器下载反向区域数据
};
当不需要建立从域名服务器时,上述配置内容中的“allow-transfer ……”部分可以不添加;
当不需要提供反向解析时,“zone “16.16.173.in-addr.arpa” ……”部分也可以去掉。
建立正、反向区域数据文件
# cd 切换到 /var/named/
# 切换到区域文件的默认存放位置
[root@ns1 ~]# cd /var/named/
[root@ns1 named]# ls
chroot data dynamic named.ca named.empty named.localhost named.loopback slaves
# 复制 named.localhost 到 bdqn.com.zone
[root@ns1 named]# cp named.localhost bdqn.com.zone
# vi 进入到 bdqn.com.zone 添加配置
[root@ns1 named]# vi bdqn.com.zone
[root@ns1 named]# cat bdqn.com.zone
$TTL 1D
@ IN SOA bdqn.com. admin.bdqn.com. ( //SOA标记 域名 管理邮箱
0 ; serial //更新序列号,可以是10 位以内的整数
1D ; refresh //刷新时间,重新下载地址数据的间隔
1H ; retry //重试延时,下载失败后的重试间隔
1W ; expire //失效时间,超过该时间仍无法下载则放弃
3H ) ; minimum //无效解析记录的生存周期
@ NS ns1.bdqn.com. //NS 记录当前区域的 DNS 服务器的主机地址
NS ns2.bdqn.com. //从域名服务器
MX 10 mail.bdqn.com. //MX 记录当前区域的邮件服务器的主机地址,数字 10 表示(当有多个 MX 记录时)选择邮件服务器的优先级,数字越大,优先级越低。
ns1 A 192.168.72.131 //A 记录正向解析条目
ns2 A 192.168.72.129
mail A 192.168.72.110
www A 192.168.72.111
* A 192.168.72.120 //泛域名解析,表示定义的域名以外其他所有域名
# 创建反向区域数据文件
# 复制 named.loopback 到 192.168.72.arpa
[root@ns1 named]# cp named.loopback 192.168.72.arpa
# vi 进入到 192.168.72.arpa 配置文件
[root@ns1 named]# vi 192.168.72.arpa
[root@ns1 named]# cat 192.168.72.arpa
$TTL 1D
@ IN SOA bdqn.com. admin.bdqn.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.bdqn.com.
NS ns2.bdqn.com.
131 PTR ns1.bdqn.com.
129 PTR ns2.bdqn.com.
110 PTR mail.bdqn.com.
111 PTR www.bdqn.com.
因为区域数据配置文件是手动创建的,默认的属主与属组均为 root 用户,而 named 服务默认以名为“named”的用户身份运行。named 用户要对区域数据文件有读取权限。否则, BIND 服务将无法读取所创建的区域数据配置文件,具体操作如下:
# 重新设置权限
chown named:named /etc/named.conf
chown named:named /var/named/bdqn.com.zone
chown named:named /var/named/192.168.72.arpa
检查
# 检查主配置文件有没有问题
[root@ns1 named]# named-checkconf -z /etc/named.conf
zone bdqn.com/IN: loaded serial 0
zone 72.168.192.in-addr.arpa/IN: loaded serial 0
# 检查正向查找文件有没有问题
[root@ns1 named]# named-checkzone bdqn.com bdqn.com.zone
zone bdqn.com/IN: loaded serial 0
OK
# 检查反向查找文件有没有问题
[root@ns1 named]# named-checkzone 72.168.192.in-addr.arpa 192.168.72.arpa
zone 72.168.192.in-addr.arpa/IN: loaded serial 0
OK
启动 named 服务
# 检查配置没问题之后启动 named
[root@ns1 named]# systemctl start named
# 设置开机自启动
[root@ns1 named]# systemctl enable named
验证主域名服务器
# 指定为本机提供 DNS 解析的服务器地址
[root@bogon ~]# vi /etc/resolv.conf
[root@bogon ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.72.131
# 测试DNS域名解析
[root@bogon ~]# nslookup ns1.bdqn.com
Server: 192.168.72.131
Address: 192.168.72.131#53
Name: ns1.bdqn.com
Address: 192.168.72.131
# 测试DNS反向域名解析
[root@bogon ~]# nslookup 192.168.72.131
131.72.168.192.in-addr.arpa name = ns1.bdqn.com.
构建从域名服务器
建立主配置文件 named.conf
# 编辑主配置文件
[root@ns2 ~]# vi /etc/named.conf
[root@ns2 ~]# cat /etc/named.conf
options {
directory "/var/named";
};
zone "bdqn.com" IN {
type slave; //类型为从区域
masters {192.168.72.131;}; //指定主服务器的IP 地址
file "slaves/bdqn.com.zone"; //下载的区域文件保存到slaves/目录
};
zone "72.168.192.in-addr.arpa" IN {
type slave;
masters {192.168.72.131;};
file "slaves/192.168.72.arpa";
};
启动 named 服务
# 启动 named
[root@ns2 ~]# systemctl start named
# 设置开机自启动
[root@ns2 ~]# systemctl enable named
验证从域名服务器
[root@bogon ~]# nslookup ns1.bdqn.com
Server: 192.168.72.131
Address: 192.168.72.131#53
Name: ns1.bdqn.com
Address: 192.168.72.131
# 测试DNS反向域名解析
[root@bogon ~]# nslookup 192.168.72.131
131.72.168.192.in-addr.arpa name = ns1.bdqn.com.x
三、总结
通过以上步骤,我们成功地配置了一个简单的DNS域名解析服务。当然,实际的配置可能会更加复杂,涉及到更多的zone和记录类型。但无论如何,希望这篇文章能为你提供一个良好的起点,帮助你更好地理解和配置DNS服务。如果你有任何问题或建议,请随时在评论区留言。