一、DNS 概述与核心作用
1.1 DNS 的角色
DNS(Domain Name System)堪称互联网的 “导航员” 或 “114 查号台”,其核心作用是实现域名与 IP 地址之间的相互映射,主要分为两种解析方式:
- 正向解析:根据域名查找对应的 IP 地址,这是最常用的解析方式。
- 反向解析:根据 IP 地址查找对应的域名,多用于特殊场景,如邮件服务器的反垃圾验证。
1.2 端口与协议
- 默认端口:DNS 服务默认使用 53 端口。
- 使用协议:
- UDP:用于常规的域名解析查询,具有速度快、开销小的特点。
- TCP:用于区域传送(主从服务器同步数据),由于 TCP 协议更可靠,能够保证大数据量的准确传输。
1.3 域名结构:FQDN
FQDN(Fully Qualified Domain Name)即全限定域名,它能完整标识主机在域名树中的位置。
- 格式:主机名。子域。二级域。顶级域。根域.(根域。通常省略)。
- 示例:www.sina.com.cn. 对应的网址为 http://www.sina.com.cn./ 。
域名空间呈现层次结构,最顶层是根域(.),全球有 13 个根服务器系统集群。根域之下是顶级域,如.com(组织域)、.cn(国家域)、.net(组织域)等。顶级域之下是二级域,如sina.com、com.cn等。二级域之下则是主机或子域,如www.sina.com、mail.sina.com、www.com.cn等。
二、DNS 查询原理
2.1 两种查询方式
-
递归查询(Recursive Query)
这是客户机与本地 DNS 服务器之间的查询方式。客户机发出请求后,只需等待最终结果(成功或失败),中间的所有查询过程由 DNS 服务器代理完成。简单来说就是 “你办事,我放心,我只要结果”。 -
迭代查询(Iterative Query)
这是本地 DNS 服务器与其它各级 DNS 服务器之间的查询方式。上级服务器不会替下级服务器去查询,而是返回一个最佳查询点(另一台 DNS 服务器的地址),让请求者自己再去询问。可以概括为 “这个我不直接管,你去问 XX 办公室吧”。
2.2 完整的正向解析流程
一个完整的查询结合了递归和迭代两种方式,具体流程如下:
- 客户端检查本地缓存和 hosts 文件。
- 客户端向本地 DNS 服务器发起递归查询。
- 本地 DNS 服务器检查自身缓存,若无记录,则向根 DNS 服务器发起迭代查询。
- 根 DNS 服务器返回.com 顶级域服务器的地址。
- 本地 DNS 服务器向.com 顶级域服务器发起迭代查询。
- 顶级域服务器返回google.com权威服务器的地址。
- 本地 DNS 服务器向google.com的权威服务器发起迭代查询。
- 权威服务器返回www.google.com对应的 IP 地址。
- 本地 DNS 服务器将结果返回给客户端,并缓存该记录。
缓存清理命令:
- Windows 系统:使用
ipconfig /displaydns查看缓存,ipconfig /flushdns清理缓存。 - Linux 系统:需安装 nscd 服务,使用
nscd -i hosts清理缓存。
三、DNS 服务器架构与类型
3.1 分布式层次结构
全球 DNS 系统是一个庞大的分布式数据库,由众多服务器共同承担解析任务,不同类型的服务器职责和举例如下:
| 服务器类型 | 职责 | 举例 |
|---|---|---|
| 根 DNS 服务器 | 管理根域,返回顶级域服务器的地址 | 全球 13 个根服务器系统集群(编号 A-M) |
| 顶级域 DNS 服务器 | 管理特定顶级域,返回权威服务器地址 | .com、.cn、.net 服务器 |
| 权威 DNS 服务器 | 管理特定域名(如google.com),返回其下主机的最终 IP | ns1.google.com |
重要提示:所谓的 “全球 13 台根服务器” 指的是 13 个逻辑根服务器系统,每个系统都通过任播技术在全球部署了上百台物理服务器副本,以提高 resiliency 和访问速度,中国也有多个根镜像服务器。
3.2 DNS 服务器软件(BIND)
BIND(Berkeley Internet Name Domain)是最广泛使用的 DNS 服务软件,其软件包组成如下:
- bind:主程序包。
- bind-utils:提供 nslookup、dig 等测试工具。
- bind-libs:提供库文件。
- bind-chroot:提供一个伪根目录,将 DNS 服务锁定在 /var/named/chroot/ 中,增强安全性。
3.3 DNS 服务器系统类型
根据职能,一台物理 DNS 服务器可以被配置为以下一种或多种类型:
| 类型 | 作用 | 特点 |
|---|---|---|
| 主域名服务器 | 维护特定区域的权威数据,数据可修改 | type master ; |
| 从域名服务器 | 从主服务器同步区域数据,提供冗余备份和负载均衡 | { } ; type slave ; 需指定 masters |
| 缓存域名服务器 | 不管理任何区域,仅缓存查询结果,加速访问 | 必须指定根域或转发器 |
| 转发域名服务器 | 将所有非本地查询请求转发给指定的其他 DNS 服务器 | 配置 forwarders { } ; |
四、DNS 部署实战
4.1 基础配置:主服务器与正向 / 反向解析
核心配置文件
- 主配置文件:/etc/named.conf - 定义全局设置,如监听地址、允许查询的网段。
- 区域配置文件:/etc/named.rfc1912.zones - 定义本服务器负责管理的区域(域名)及其属性(如区域数据文件名、类型)。
- 区域数据文件:/var/named/xxx.zone - 存储具体的域名和 IP 的映射记录,这是最核心的数据库文件。
记录类型详解
- SOA:起始授权记录,定义区域全局信息(主服务器、管理员邮箱、序列号、同步参数)。
- NS:域名服务器记录,指明该区域由哪台 DNS 服务器负责解析。
- A:正向解析记录,将域名指向一个 IPv4 地址。
- AAAA:将域名指向一个 IPv6 地址。
- CNAME:别名记录,将一个域名指向另一个域名。
- MX:邮件交换记录,定义邮件服务器的域名和优先级。
- PTR:反向解析记录,将 IP 地址指向域名。
配置流程
- 安装 BIND:执行
yum install bind bind-chroot -y命令。 - 编辑主配置文件 named.conf,设置 listen-on 和 allow-query:
- 在区域配置文件 named.rfc1912.zones 中定义正向和反向区域:
-
建立区域数据文件(复制模板保留权限 cp -p):
-
检查语法并启动服务:
- 检查语法:使用
named-checkconf -z /etc/named.conf对域名语法进行检查(针对 named.conf)。 - 启动服务:执行
systemctl start named命令,关闭防火墙systemctl stop firewalld,设置setenforce 0。如果服务启动失败,可以查看日志文件tail -f /var/log/messages来排查错误;如果服务启动卡住,可以执行rndc-confgen -r /dev/urandom -a命令解决。也可以使用rndc reload重载配置文件。
- 检查语法:使用
-
在客户端的域名解析配置文件中添加 DNS 服务器地址:
- 方式一:编辑
vi /etc/resolv .conf,修改完后立即生效,添加nameserver 192.168.10.23。 - 方式二:编辑
vi /etc/sysconfig/network-scripts/ifcfg-ens33,修改完后需要重启网卡,添加DNS1=192.168.10.23,然后执行systemctl restart network。
- 方式一:编辑
-
测试 DNS 解析:
- 使用
host命令测试,如host www.benet.com。 - 使用
nslookup命令测试,如nslookup www.benet.com、nslookup mail.benet.com、nslookup zhangsan.benet.com。 - 反向解析测试:执行
host 192.168.10.20,将会反向解析出域名www.benet.com。
- 使用
五、附录:重要概念补充
- IANA/ICANN:全球顶级 IP 地址和域名资源的管理机构。
- CNNIC:中国互联网络信息中心,管理国家顶级域.cn。
常见公共 DNS:
- 114.114.114.114(国内)
- 8.8.8.8(Google)
- 223.5.5.5 / 223.6.6.6(阿里云)
IPv6 与根服务器:IPv6 协议和新的 DNS 架构(如根服务器数量可能增加至 25 个)为改变全球根服务器分布格局提供了可能性,中国正在积极研究相关技术。
总结
本文围绕 DNS 域名解析服务展开了全面且详细的介绍,涵盖多个关键方面。
在 DNS 概述与核心作用部分,明确了 DNS 作为互联网 “导航员” 的角色,其核心是实现域名与 IP 地址的相互映射,包括正向解析和反向解析两种方式;还介绍了 DNS 使用的默认端口 53,以及分别用于常规查询和区域传送的 UDP 与 TCP 协议;同时解释了全限定域名(FQDN)的结构和示例,并描述了域名空间的层次结构。
DNS 查询原理方面,阐述了递归查询(客户机与本地 DNS 服务器之间,客户端等待最终结果)和迭代查询(本地 DNS 服务器与其他各级服务器之间,上级返回最佳查询点)两种方式,以及结合这两种方式的完整正向解析流程,包括客户端检查本地缓存、向本地服务器发起递归查询,本地服务器进行一系列迭代查询并返回结果等步骤,还提供了不同系统下的缓存清理命令。
关于 DNS 服务器架构与类型,说明了全球 DNS 系统的分布式层次结构,介绍了根 DNS 服务器、顶级域 DNS 服务器和权威 DNS 服务器的职责与示例,强调了 “13 台根服务器” 是逻辑系统且有众多物理副本;讲解了最广泛使用的 DNS 服务软件 BIND 的软件包组成;并根据职能划分了主域名服务器、从域名服务器、缓存域名服务器和转发域名服务器等类型及其特点。
在 DNS 部署实战部分,详细介绍了主服务器与正向 / 反向解析的核心配置文件(主配置文件、区域配置文件、区域数据文件),各种记录类型(SOA、NS、A、AAAA、CNAME、MX、PTR 等),以及具体的配置流程,包括安装 BIND、编辑配置文件、建立区域数据文件、检查语法、启动服务、配置客户端 DNS 地址和测试解析等步骤。
最后,附录补充了 IANA/ICANN、CNNIC 等管理机构,常见公共 DNS 以及 IPv6 与根服务器的相关信息。
通过本文,能够全面了解 DNS 域名解析服务的相关知识,从基本概念到实际部署操作都有清晰的指导。
1563

被折叠的 条评论
为什么被折叠?



