配置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服务。如果你有任何问题或建议,请随时在评论区留言。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值