DNS域名解析服务
一、引言
在互联网的浩瀚海洋中,我们每天都在浏览各种网站,享受着数字世界带来的便利。然而,你是否曾想过,当你在浏览器中输入一个网址,如“www.admin.com”,电脑是如何迅速找到并打开对应网站的呢?这背后,DNS(Domain Name System,域名系统)域名解析服务器就像一位默默无闻的幕后英雄,扮演着至关重要的角色。它将我们容易记忆的域名翻译成计算机能够识别的IP地址,从而实现网站的访问。本文将深入探讨DNS域名解析服务器的工作原理、搭建方法以及相关实验,带你一探究竟。
二、DNS概述
(一)产生原因
随着互联网的飞速发展,联网计算机数量呈爆炸式增长。每台计算机都有一个唯一的IP地址,用于在网络中相互识别和通信。然而,IP地址是由一串数字组成,对于人类来说,记忆起来十分困难。试想,如果你要记住“192.168.48.130”这样的数字组合才能访问一个网站,那将是一件多么繁琐的事情。于是,人们在IP地址的基础上发展出了域名,它由字母和数字构成,更易于人们识别和记忆,逐渐成为互联网用户访问网站的主要入口。但计算机只能识别纯数字的IP地址,无法直接读取域名,这就需要一种能够将域名翻译成IP地址的服务,DNS域名解析应运而生。
(二)作用
DNS是互联网上的一项基础服务,其核心作用就是将域名和IP地址进行相互映射,方便人们访问互联网。它就像是一个巨大的电话簿,记录着域名与IP地址的对应关系。当我们输入一个域名时,DNS服务器会在后台迅速查找并返回对应的IP地址,使我们能够顺利访问目标网站。具体来说,DNS主要实现以下两种解析:
-
正向解析(域名→IP):这是最常见的解析方式,即将人们输入的域名转换为计算机能够识别的IP地址,帮助我们找到目标网站的实际位置。
-
反向解析(IP→域名):与正向解析相反,它可以根据一个IP地址查找对应的域名。虽然在日常上网中使用较少,但在某些特定场景下,如服务器管理、网络安全分析等,反向解析发挥着重要作用。
(三)连接方式
DNS服务器通过53端口监听网络,时刻准备接收和处理来自客户端的域名解析请求。它默认使用UDP协议进行快速的数据传输,因为UDP的无连接特性使得数据传输速度较快,能够满足大多数情况下的解析需求。然而,当UDP查询无法获取完整信息时,DNS服务器会切换到TCP协议重新查询,以确保查询结果的完整性和准确性。因此,DNS服务器在启动时会同时启动TCP和UDP的53端口,以应对各种复杂的网络情况。
(四)因特网的域名结构
因特网采用层次树状结构的命名方法,这种结构使得域名具有唯一性和可管理性。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名称,即域名。域名空间被划分为多个域,每个域都是一个可被管理的划分结构。需要注意的是,域名只是逻辑概念,并不代表计算机所在的物理地点。
1. 分类
-
国家顶级域名(CCTLD):根据ISO3166标准制定,如“cn”代表中国,“us”代表美国,“uk”代表英国等。这些域名通常用于标识一个国家或地区,具有很强的地域属性。
-
通用顶级域名:常见的有7个,包括“com”(公司企业)、“net”(网络服务机构)、“org”(非营利组织)、“int”(国际组织)、“gov”(美国的政府部门)、“mil”(美国的军事部门)和“edu”(教育机构)。这些域名用于不同类型的组织和机构,具有广泛的适用性。
-
基础结构域名:只有一个,即“arpa”,用于反向域名解析,因此也被称为反向域名。
2. 域名服务器类型划分
-
根域名服务器:位于域名解析体系的最高层次,知道所有顶级域名服务器的域名和IP地址。当本地域名服务器无法解析一个域名时,首先会求助根域名服务器。根域名服务器是整个DNS系统的核心,至关重要。目前,全球共有13台根域名服务器,它们的稳定运行对于互联网的正常运转起着决定性作用。
-
顶级域名服务器:负责管理在其注册的二级域名。例如,“com”顶级域名服务器负责管理所有以“.com”结尾的二级域名,如“admin.com”、“baidu.com”等。
-
权威域名服务器:负责一个“区”的域名服务器,通常由域名的注册者或管理机构指定,用于存储该区域内所有域名与IP地址的映射关系。
-
本地域名服务器:不属于域名服务器的层次结构,当主机发出DNS查询时,查询报文首先发送给本地域名服务器。本地域名服务器通常由互联网服务提供商(ISP)提供,缓存了大量常用的域名解析结果,能够快速响应用户的查询请求,提高解析效率。
为了提高域名服务器的可靠性,DNS域名服务器通常会将数据复制到多个服务器进行保存。其中,主服务器在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系;从服务器从主服务器获取数据,作为备份,在主服务器宕机时能够迅速接管解析任务;缓存服务器则通过向其他域名解析服务器查询,将经常查询的域名信息保存到本地,提高重复查询时的效率,一般部署在企业内网的网关位置。
三、DNS域名解析过程
(一)分类
DNS域名解析过程主要分为两种类型:
-
递归解析:当DNS服务器收到用户发起的请求时,如果本地没有存储与之对应的信息,它会向其他服务器发出请求,并将返回的查询结果提交给用户。在这个过程中,DNS服务器会一直查询,直到得到最终的解析结果,再将结果返回给用户。递归解析的特点是用户只需要向DNS服务器发送一次请求,后续的查询工作由DNS服务器完成。
-
迭代解析(反复):与递归解析不同,DNS服务器在收到用户请求后,并不直接回复查询结果,而是告诉用户另一台DNS服务器的地址,让用户再向这台服务器提交请求,依次反复,直到返回查询结果。迭代解析需要用户多次向不同的DNS服务器发送请求,每个服务器只负责回答自己知道的部分,然后指引用户到下一个服务器。
(二)解析图及过程分析
整个DNS域名解析过程可以形象地用一张图来表示,它展示了从用户输入域名到最终获取IP地址的完整路径。以访问“www.google.com”为例,解析过程大致如下:
-
浏览器缓存检查:当你在浏览器中输入“www.google.com”时,本地电脑首先会检查浏览器缓存中是否有这个域名对应的IP地址。浏览器缓存是为了提高访问速度而存储的近期访问过的域名解析结果。如果缓存中有,解析过程立即结束,浏览器直接使用缓存中的IP地址访问网站。但浏览器缓存有时间限制,通常为几分钟到几小时不等,这个时间由域名的TTL(Time To Live,生存时间)属性决定。如果TTL设置过长,当域名对应的IP地址发生变化时,客户端可能仍然使用缓存中的旧地址,导致无法正常访问网站;如果TTL设置过短,则会增加DNS查询的频率,影响网络性能。
-
操作系统缓存检查:如果浏览器缓存中没有找到对应的解析结果,系统会进一步查找操作系统缓存中的DNS解析记录。操作系统同样会缓存一些常用的域名解析结果,以便快速响应用户的访问请求。在Linux系统中,可以通过修改“/etc/hosts”文件来设置本地的域名解析规则;在Windows系统中,对应的文件是“C:\Windows\System32\drivers\etc\hosts”。用户可以在这个文件中手动添加域名与IP地址的映射关系,用于测试或特殊配置。然而,这也可能成为黑客攻击的途径,通过篡改用户的hosts文件,将特定域名解析到恶意IP地址,实现域名劫持。
-
本地DNS服务器查询:如果在本地电脑的浏览器缓存和操作系统缓存中都没有找到解析结果,系统会将域名发送给网络配置中指定的本地DNS服务器。本地DNS服务器通常是用户所在网络的入口点,如学校的校园网DNS服务器或工作单位的内部DNS服务器。这些服务器一般都会缓存大量的域名解析结果,大约80%的域名解析在这里就可以完成。本地DNS服务器的缓存时间同样受到域名TTL值的控制。
-
根DNS服务器请求:如果本地DNS服务器也没有命中,它会直接向根DNS服务器请求解析。根DNS服务器是整个DNS体系的顶层,负责指引查询到正确的顶级域名服务器。
-
顶级DNS服务器获取:根DNS服务器会返回给本地DNS服务器一个顶级DNS服务器的地址,如“.com”顶级域名服务器的地址。全球共有13台左右顶级域名服务器,它们负责管理各自顶级域名下的所有二级域名。
-
Name Server服务器查询:本地DNS服务器再向顶级DNS服务器发送解析请求,顶级DNS服务器查找并返回此域名对应的Name Server域名服务器的地址。Name Server服务器就是该域名的权威服务器,由域名注册商或管理机构指定,负责存储该域名的最终解析记录。
-
IP和TTL值返回:Name Server服务器收到查询请求后,在其数据库中进行查询,找到映射关系后将其IP地址和TTL值返回给本地DNS服务器。本地DNS服务器会缓存这个域名和IP的对应关系,缓存时间由TTL值控制。
-
解析结果返回给本地电脑:本地DNS服务器把解析的结果返回给本地电脑,本地电脑根据TTL值缓存在本地系统缓存中,域名解析过程结束。此时,浏览器就可以使用获取到的IP地址访问目标网站了。
在整个解析过程中,从客户端到本地DNS服务器属于递归查询,而DNS服务器之间使用的交互查询则是迭代查询。这种分工合作的机制确保了域名解析的高效性和准确性。
四、搭建DNS域名解析服务器
(一)概述
BIND(Berkeley Internet Name Domain)是全球使用最广泛的、最高效的、最安全的域名解析服务程序。它提供了完整的DNS服务器功能,支持多种解析方式和丰富的配置选项,是搭建DNS域名解析服务器的首选软件。
(二)安装软件
在Linux系统中,可以通过以下命令安装BIND软件:
[root@server ~]# yum install bind -y
该命令会自动从软件仓库下载并安装BIND及相关依赖包,安装过程简单快捷。
(三)bind服务中的关键文件
BIND服务的运行依赖于几个关键的配置文件,了解这些文件的结构和作用对于正确配置DNS服务器至关重要。
-
主配置文件(/etc/named.conf):这是BIND服务的核心配置文件,共59行,去除注释和空行后有效行数仅30行左右。它用于设置BIND服务程序的运行参数,包括全局参数设置、日志记录配置、区域配置以及包含的其他配置文件等。
-
区域配置文件(/etc/named.rfc1912.zones):该文件用于保存域名和IP地址对应关系文件的位置,类似于图书目录。当需要修改域名与IP映射关系时,需要在此文件中查找相关文件的位置。
-
数据配置文件目录(/var/named):该目录存储保存域名和IP地址映射关系的数据文件。这些文件包含了具体的域名解析记录,如A记录、MX记录、NS记录等。
(四)主配置文件分析
主配置文件由四个主要部分组成:options、logging、zone和include。以下是常用参数的详细解释:
[root@server ~]# vim /etc/named.conf
options { # 全局参数设置
listen-on port 53 { 127.0.0.1; }; # 监听允许访问的ip与端口,可以使用IP地址、网段、所有主机(any)
listen-on-v6 port 53 { ::1; };# 监听允许访问的ipV6与端口
directory "/var/named"; # DNS数据目录位置,默认即可
dump-file "/var/named/data/cache_dump.db"; # 默认缓存文件位置,默认即可
statistics-file "/var/named/data/named_stats.txt"; # DNS状态文件保存文件,默认即可
memstatistics-file "/var/named/data/named_mem_stats.txt"; # 内存状态文件保存文件,默认即可
secroots-file "/var/named/data/named.secroots"; # 安全根服务器保存位置,默认即可
recursing-file "/var/named/data/named.recursing"; # 递归查询文件保存位置,默认即可
allow-query { localhost; }; # 允许那些客户端进行访问,可以书写IP地址、网段、所有主机(any)
recursion yes; # 允许递归查询,若删除则为迭代查询
dnssec-validation yes; # 开启加密,默认即可
managed-keys-directory "/var/named/dynamic"; # 指定目录中文件保存位置,用于管理密钥(DNSSEC)
pid-file "/run/named/named.pid"; # pid文件保存路径,默认即可
session-keyfile "/run/named/session.key"; # 会话密钥存储路径,自动生成,默认即可
logging { # 指定日志记录的分类及其存储目录
channel default_debug { # 设置日志输出方式
file "data/named.run"; # 产生日志信息文件的位置
severity dynamic; # 日志级别
};
};
zone "." IN { # zone 表示区域, "." 表示根,此处设置DNS根服务器的相关内容
type hint; # 表示服务器的类型为根
file "named.ca"; # 用于保存dns根服务器信息的文件,存储路径/var/named/named.ca,一共有13台ipv4和13台ipv6根服务器信息
};
include "/etc/named.rfc1912.zones"; # 表示当前DNS服务器的区域配置文件位置
include "/etc/named.root.key"; # 密钥存储文件位置
一般需要修改的三部分包括:listen-on port 53(监听ip及端口)、allow-query(允许访问的客户端)和recursion(是否开启递归查询)。
(五)区域配置文件
区域配置文件(/etc/named.rfc1912.zones)的作用是保存域名和IP地址映射关系文件的位置。它是一系列功能模板的集合,用户可以根据需要添加或修改区域配置。
1. 正向解析
zone "localhost.localdomain" IN { # 正向解析域名
type master; # 服务类型:master表示主服务器,slave表示从服务器,hint根服务器
file "named.localhost"; # 域名与IP地址规则文件存储位置
allow-update { none; }; # 允许那些客户端动态更新本机域名解析
};
2. 反向解析
zone "1.0.0.127.in-addr.arpa" IN { # 表示127.0.0.1的反向解析配置,IP地址需要倒置书写,只需书写网段即可
type master;
file "named.loopback"; # 反向解析的规则文件保存位置
allow-update { none; };
};
(六)正向解析资源文件
正向解析资源文件存储了域名与IP地址的映射关系,是DNS服务器进行正向解析的核心数据文件。以下是文件内容的分析和模板:
$TTL 1D # 设置生存周期时间,为1天,$表示宏定义
@ IN SOA @ rname.invalid. (
# @ :表示zone域,现在表示域名,如baidu.com
# IN SOA : 授权信息开始
# rname.invalid. : 域名管理员的邮箱(不能使用@,使用点替代邮件分隔符@)
0 ; serial # 序列号,10位以内的整数
1D ; refresh # 更新频率为1天
1H ; retry # 失败重试时间为1小时
1W ; expire # 失效时间1周
3H ) ; minimum # 缓存时间为3小时
IN NS ns.域名.
ns IN A 域名解析服务器IP地址
www IN A 域名解析服务器IP地址
bbs IN A 域名解析服务器IP地址
mail IN A 域名解析服务器IP地址
# A:表示IPv4地址, AAAA表示IPv6地址
常见的域名解析记录包括:
-
A记录:指定域名对应的IP地址,如将“item.taobao.com”解析到“115.238.23.xxx”。
-
MX记录:用于邮件服务器的解析,将某个域名下的邮件服务器指向指定的Mail Server。
-
NS记录:为某个域名指定DNS解析服务器,即该域名由哪个IP地址的DNS服务器来解析。
-
CNAME记录:别名解析,可以为一个域名设置一个或多个别名。
-
TXT记录:为某个主机名或域名设置说明,如添加注释或验证信息。
-
SOA记录:定义了区域的权威信息,包括域名的管理员邮箱、序列号(0)、刷新时间(1D)、重试时间(1H)、过期时间(1W)和最小TTL值(3H)。
(七)反向解析资源文件
反向解析资源文件用于将IP地址解析为对应的域名,其格式如下:
[root@server ~]# vim /var/named/named.loopback
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.域名. # 域名服务器记录,注意结尾的点
ns IN A 域名解析服务器的IP地址
IP地址 PTR 域名. # PTR 指针记录,用于反向解析
五、实验:搭建DNS域名解析服务器
(一)实验一:正向解析
-
准备工作
在进行正向解析实验之前,需要完成以下准备工作:
-
关闭安全软件:在服务端和客户端分别执行以下命令,关闭SELinux和防火墙,避免安全策略干扰DNS服务的正常运行。
[root@server ~]# setenforce 0 [root@server ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 [root@node1 ~]# systemctl stop firewalld
-
安装bind软件:在服务端安装BIND软件包,确保系统具备DNS服务功能。
[root@server ~]# yum install bind -y
-
配置静态IP:分别设置服务端和客户端的静态IP地址、网关和DNS服务器,确保网络连通性。
服务端配置:
[root@server ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses 192.168.48.130/24 ipv4.gateway 192.168.48.2 ipv4.dns 114.114.114.114 [root@server ~]# nmcli c reload [root@server ~]# nmcli c up ens32
客户端配置:
[root@node1 ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses 192.168.48.131/24 ipv4.gateway 192.168.48.2 ipv4.dns 114.114.114.114 [root@node1 ~]# nmcli c reload [root@node1 ~]# nmcli c up ens32
-
-
DNS配置
在服务端进行以下DNS配置操作:
-
编辑主配置文件:修改监听IP和允许查询的客户端范围,使其能够接收来自所有主机的查询请求。
[root@server ~]# vim /etc/named.conf # 修改以下两行 listen-on port 53 { any; }; allow-query { any; };
-
编辑区域配置文件:添加一个正向解析区域,指定管理的域名为“admin.com”,并设置数据配置文件的名称为“admin.com.zone”。
[root@server ~]# vim /etc/named.rfc1912.zones zone "admin.com" IN { type master; file "admin.com.zone"; allow-update { none; }; };
-
编辑数据配置文件:复制一个模板文件并修改其内容,添加相应的域名解析记录。
[root@server ~]# cd /var/named [root@server named]# cp -a named.localhost admin.com.zone [root@server named]# vim admin.com.zone
修改后的内容如下:
$TTL 1D admin.com. IN SOA ns.admin.com. admin.admin.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum admin.com. IN NS ns.admin.com. ns.admin.com. IN A 192.168.48.130 www.admin.com. IN A 192.168.48.130 ftp.admin.com. IN A 192.168.48.130 bbs.admin.com. IN A 192.168.48.130 www1.admin.com. IN CNAME www.admin.com.
-
重启服务:使配置生效,重启named服务。
[root@server named]# systemctl restart named
-
-
测试
在客户端进行以下测试操作,验证DNS正向解析是否成功:
-
修改DNS设置:将客户端的DNS服务器地址修改为服务端的IP地址。
[root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 dns=192.168.48.130 [root@node1 ~]# nmcli c reload [root@node1 ~]# nmcli c up ens32
-
使用nslookup命令测试:通过nslookup命令查询域名的IP地址,验证解析是否成功。
[root@node1 ~]# nslookup www.admin.com Server: 192.168.48.130 Address: 192.168.48.130#53 Name: www.admin.com Address: 192.168.48.130
-
使用dig命令测试:dig命令可以提供更详细的解析信息,用于进一步验证和调试。
[root@node1 ~]# dig www.admin.com
-
-
数据配置文件精简
为了简化数据配置文件,可以采用以下精简原则:
-
使用“@”替代域名,如“@”替代“admin.com.”。
-
使用空格或tab重复继承上一行第一列的值。
-
省略域名,系统会自动补全,如“www”为“www.admin.com.”。
精简后的配置文件示例如下:
[root@server named]# vim admin.com.zone $TTL 1D @ IN SOA ns.admin.com. admin.admin.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns.admin.com. ns IN A 192.168.48.130 www IN A 192.168.48.130 ftp IN A 192.168.48.130 bbs IN A 192.168.48.130 www1 IN CNAME www
-
(二)实验二:反向解析
-
准备工作
反向解析实验的准备工作与正向解析类似,主要包括关闭安全软件、安装bind软件和配置静态IP地址。以下是具体操作命令:
-
关闭安全软件:
[root@server ~]# setenforce 0 [root@server ~]# systemctl stop firewalld [root@node1 ~]# setenforce 0 [root@node1 ~]# systemctl stop firewalld
-
安装bind软件:
[root@server ~]# yum install bind -y
-
配置静态IP:
服务端配置:
[root@server ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.48.130/24 ipv4.gateway 192.168.48.2 ipv4.dns 114.114.114.114 [root@server ~]# nmcli c reload [root@server ~]# nmcli c up ens160
客户端配置:
[root@node1 ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.48.131/24 ipv4.gateway 192.168.48.2 ipv4.dns 192.168.48.130 [root@node1 ~]# nmcli c reload [root@node1 ~]# nmcli c up ens160
-
-
DNS设置
在服务端进行以下DNS反向解析设置:
-
编辑主配置文件:修改监听IP和允许查询的客户端范围。
[root@server ~]# vim /etc/named.conf # 修改以下两行 listen-on port 53 { any; }; allow-query { 192.168.48.131; };
-
编辑区域配置文件:添加反向解析记录,注意区域名称中IP地址需要反向书写,只需书写网段号。
[root@server named]# vim /etc/named.rfc1912.zones zone "48.168.192.in-addr.arpa" IN { type master; file "192.168.48.arpa"; allow-update { none; }; };
-
编辑数据配置文件:复制一个反向解析模板文件并修改其内容,添加相应的反向解析记录。
[root@server ~]# cd /var/named [root@server named]# cp -a named.loopback 192.168.48.arpa [root@server named]# vim 192.168.48.arpa
修改后的内容如下:
$TTL 1D @ IN SOA ns.admin.com. jenny.qq.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns.admin.com. ns.admin.com. IN A 192.168.48.130 130 IN PTR ns.admin.com. 130 IN PTR www.admin.com. 130 IN PTR ftp.admin.com.
-
重启服务:使配置生效,重启named服务。
[root@server named]# systemctl restart named
-
-
客户端测试
在客户端进行以下测试操作,验证DNS反向解析是否成功:
[root@node1 ~]# nslookup 192.168.48.130 130.48.168.192.in-addr.arpa name = www.admin.com. 130.48.168.192.in-addr.arpa name = ftp.admin.com. 130.48.168.192.in-addr.arpa name = ns.admin.com.
(三)实验三:部署DNS从服务器
-
完全区域传送
为了提高DNS服务的可靠性和性能,通常会部署从服务器。从服务器可以从主服务器上获取指定的区域数据文件,起到备份解析记录与负载均衡的作用。
服务器说明:
|设备|IP|系统| |主服务器|192.168.48.130|Euler| |从服务器|192.168.48.131|Euler|
实验步骤:
-
预处理、安装软件、设置网卡信息:两个服务器都需要进行安全软件关闭、软件安装和网卡配置等预处理操作。
# 两个服务器都执行以下命令 setenforce 0 systemctl stop firewalld yum install bind -y # 主服务器网卡配置 [root@server ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses '192.168.48.130/24' ipv4.gateway '192.168.48.2' ipv4.dns '192.168.48.130' [root@server ~]# nmcli c reload [root@server ~]# nmcli c up ens32 # 从服务器网卡配置 [root@node1 ~]# nmcli c modify ens32 ipv4.method manual ipv4.addresses '192.168.48.131/24' ipv4.gateway '192.168.48.2' ipv4.dns '192.168.48.131' [root@node1 ~]# nmcli c reload [root@node1 ~]# nmcli c up ens32
-
主服务端操作:
-
编辑主配置文件:设置监听IP,允许所有主机查询。
[root@server ~]# vim /etc/named.conf listen-on port 53 { any; }; allow-query { any; };
-
编辑区域配置文件:添加允许从服务器的同步请求配置。
[root@server ~]# vim /etc/named.rfc1912.zones zone "admin.com" IN { type master; file "admin.com.zone"; allow-transfer { 192.168.48.131; }; }; zone "48.168.192.in-addr.arpa" IN { type master; file "192.168.48.arpa"; allow-transfer { 192.168.48.131; }; };
-
设置正反向解析数据配置文件:
正向解析文件:
[root@server ~]# cd /var/named [root@server ~]# cp -a named.localhost admin.com.zone [root@server ~]# vim admin.com.zone
修改后的内容如下:
$TTL 1D @ IN SOA ns.admin.com. admin.admin.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns.admin.com. NS slave.admin.com. ns IN A 192.168.48.130 www IN A 192.168.48.130 bbs IN A 192.168.48.130 ftp IN CNAME www slave IN A 192.168.48.131
反向解析文件:
[root@server ~]# cd /var/named [root@server ~]# cp -a named.loopback 192.168.48.arpa [root@server ~]# vim /var/named/192.168.48.arpa
修改后的内容如下:
$TTL 1D @ IN SOA ns.admin.com admin.admin.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns.admin.com. NS slave.admin.com. 130 IN PTR ns.admin.com. 130 IN PTR www.admin.com. 130 IN PTR bbs.admin.com. 130 IN PTR ftp.admin.com. 131 IN PTR slave.admin.com.
-
重启服务:
[root@server ~]# systemctl restart named
-
-
从服务端操作:
-
编辑主配置文件:设置监听IP和允许查询的范围。
[root@node1 ~]# vim /etc/named.conf listen-on port 53 { 192.168.48.131; }; allow-query { any; };
-
编辑区域配置文件:设置从服务器的区域配置,指定主服务器的IP地址和要抓取的区域信息。
[root@node1 ~]# vim /etc/named.rfc1912.zones zone "admin.com" IN { type slave; masters { 192.168.48.130; }; file "slaves/admin.com.zone"; }; zone "48.168.192.in-addr.arpa" IN { type slave; masters { 192.168.48.130; }; file "slaves/192.168.48.arpa"; };
-
重启服务:启动named服务后,从服务器会自动从主服务器上同步数据配置文件。
[root@node1 ~]# systemctl start named
-
确认从服务端的网卡DNS地址修改为自己的IP:确保从服务器自身也能提供DNS域名解析服务。
[root@node1 ~]# nslookup www.admin.com [root@node1 ~]# nslookup 192.168.48.130 [root@node1 ~]# dig @192.168.48.130 www.admin.com
-
-
-
增量区域传送
增量区域传送是指仅复制区域里变化的文件,相比完全区域传送更加高效。以下是实验步骤:
-
主服务端操作:修改数据配置文件,添加新的解析记录,并更新序列号。
[root@server ~]# vim /var/named/admin.com.zone $TTL 1D @ IN SOA admin.com. admin.admin.com. ( 1 ; serial # 修改,需要加1 3 ; refresh # 修改 1H ; retry 1W ; expire 3H ) ; minimum NS ns.admin.com. MX 8 mail.admin.com. # 添加 NS slave.admin.com. ns IN A 192.168.48.130 www IN A 192.168.48.130 bbs IN A 192.168.48.130 mail IN A 192.168.48.130 # 添加 ftp IN CNAME www slave IN A 192.168.48.131 www1 IN CNAME www # 添加
-
主服务端操作:重启服务,使配置生效。
[root@server ~]# systemctl restart named
-
从服务端操作:重启服务,从服务器会自动从主服务器获取更新后的数据。
[root@node1 ~]# systemctl restart named
-
从服务端操作:测试新的解析记录是否生效。
[root@node1 ~]# nslookup mail.admin.com [root@node1 ~]# nslookup www1.admin.com
-
六、总结
通过以上实验,我们深入了解了DNS域名解析服务器的工作原理和搭建方法。从正向解析到反向解析,再到部署从服务器,每一步都让我们对DNS系统有了更全面的认识。在实际应用中,合理配置和管理DNS服务器对于保障网络服务的稳定性和可靠性至关重要。随着互联网的不断发展,DNS技术也在不断演进,如DNSSEC(DNS Security Extensions)的引入,为DNS解析增加了安全性,防止域名劫持和缓存投毒等攻击。未来,我们还需要关注DNS技术的最新发展,不断优化和提升DNS服务的质量,以满足日益增长的互联网需求。