DNS域名解析服务
·
文章目录
DNS域名解析服务
一、DNS 概述与核心作用
1.1 DNS 的角色
DNS (Domain Name System) 是互联网的“导航员”或“114查号台”。它的核心作用是实现域名与 IP 地址 之间的相互映射。
- 正向解析:根据域名查找对应的 IP 地址(最常用)。
- 反向解析:根据 IP 地址查找对应的域名(用于特殊用途,如邮件服务器反垃圾验证)。
1.2 端口与协议
- 默认端口:53
- 使用协议:
- UDP:用于常规的域名解析查询。速度快,开销小。
- TCP:用于区域传送(主从服务器同步数据)。因为TCP更可靠,能保证大数据量的准确传输。
1.3 域名结构:FQDN
- FQDN (Fully Qualified Domain Name):全限定域名,完整标识主机在域名树中的位置。
- 格式:
主机名.子域.二级域.顶级域.根域.(根域.通常省略) - 示例:
www.sina.com.cn.->http://www.sina.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中定义正向和反向区域。修改主要配置文件 vim /etc/named.conf options { listen-on port 53 { 192.168.10.23; }; ●监听53端口,ip地址使用提供服务的本地IP,也可用any表示所有 #listen-on-v6 port 53 { ::1; }; #ipv6行如不使用可以注释掉或者删除 directory "/var/named"; #区域数据文件的默认存放位置 dump- file "/var/named/data/cache_dump.db"; #域名缓存数据库文件的位置 statistics-file "/var/named/data/named stats.txt"; #状态统计文件的位置 memstatistics-file "/var/named/data/named mem stats.txt"; # 内存统计文件的位置 allow-query { 192.168.10.0/24; 192.168.100.0/24; };● 允许使用本DNS解析服务的网段,也可用any代表所有 } zone "." IN {#正向解析“."根区域 type hint;#类型为根区域 file "named.ca";#区域数据文件为named.ca,#记录了13台根域服务器的域名和IP地址等信息 }; include "/etc/named.rfc1912.zones"; #包含区域配置文件里的所有配置 修改 (3)修改区域配置文件,添加正向区域配置 vim /etc/named.rfc1912.zones #文件里有模版,可复制粘贴后修改 zone "benet.com." IN {●正向解析"benet.com"区域 type master;#类型为主区域 file "benet.com.zone."; ●指定区域数据文件为benet.com.zone allow-update { none; } ; }; 配置正向区域数据文件 cd /var/ named/ cp -p named.localhost benet.com.zone #保留源文件的权限和属主的属性复制 vim /var/named/benet.com.zone $TTL 1D #有效解析记录的生存周期 @ in SOA benet.com. admin.benet.com. ( #“@"符号表示当前的DNS区域名 0 ; serial #更新序列号,可以是10位以内的整数 1D ; refresh #刷新时间,重新下载地址数据的间隔 1H ; retry #重试延时,下载失败后的重试间隔 1W ; expire #失效时间,超过该时间仍无法下载则放弃# 3H) ; minimum #无效解析记录的生存周期, NS benet.com #记录当前区域的DNS服务器的名称 A 192.168.10.23 #记录主机IP地址 IN MX 10 mail.benet.com #MX为邮件交换记录,数字越大优先级越低 www IN A 192.168.10.23 #记录正向解析www.benet.com对应的IP mail IN A 192.168.10.11 #MX为邮件交换记录,数字越大优先级低 ftp IN CNAME www #CNAME使用别名,ftp 是www的别名 * IN A 192.168.10.100 #泛域名解析,“*"代表任意主机名 #“@”这里是一个变量,当前DNS区域名 #SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。 # "benet.com. "此为完全合格域名(FQDN) ,后面有个“."不能漏掉 #“admin.benet.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替 #IN 表示internet (5)启动服务,关闭防火墙 systemctl start named systemctl stop firewalld setenforce 0 #如果服务启动失败,可以查看日志文件来排查错误 tail -f /var/log/messages #如果服务启动卡住,可以执行下面命令解决 rndc-confgen -r /dev/urandom -a #对域名语法进行检查(named.conf) named-checkconf -z /etc/named.conf (6)在客户端的域名解析配置文件中添加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 (7)测试DNS解析 [root@benet23 ~]# systemctl restart network [root@benet23 ~]# host www.benet.com www.benet.com has address 192.168.10.23 [root@benet23 ~]# nslookup www.benet.com Server: 192.168.10.23 Address: 192.168.10.23#53 Name: www.benet.com Address: 192.168.10.23 [root@benet23 ~]# nslookup mail.benet.com Server: 192.168.10.23 Address: 192.168.10.23#53 Name: mail.benet.com Address: 192.168.10.11 [root@benet23 ~]# nslookup zhangsan.benet.com Server: 192.168.10.23 Address: 192.168.10.23#53 Name: zhangsan.benet.com Address: 192.168.10.100 ==================================================================================== 扩展内容 ----反向解析---- vim /etc/named.rfc1912.zones // 192.168.10.0 反向则是 10.168.192 zone "10.168.192.in-addr.arpa" IN { type master; file "benet.com.zone.local;"; //指定反向解析的数据文件,也可以跟正向解析的数据文件相同 allow-update { none; }; }; cd /var/named/ cp -p benet.com.zone benet.com.zone.local $TTL 1D #有效解析记录的生存周期,默认单位为秒 @ IN SOA benet.com. admin.benet.com. ( #SOA标记、域名和管理员邮箱,@变量表示域名 0 ; serial #更新序列号,10位以内数字,用于主从同步,主服务器这个数值要大于从服务器否则无法同步 1D ; refresh #刷新时间 1H ; retry #重试刷新时间间隔 1W ; expire #失效时间,超过该时间则放弃 3H ) ; minimum #无效解析记录的生存周期 NS benet.com. A 192.168.10.23 100 IN PTR www.benet.com 200 IN PTR mail.benet.com # 20是192.168.10.20的意思 # RTP反向指针 功能:反向解析 systemctl restart named //rndc reload也可以重载配置文件 host 192.168.10.20 // 将会反向解析出域名www.benet.com - 建立区域数据文件(复制模板保留权限
cp -p)。- 正向区域文件 (
benet.com.zone) 包含 A, CNAME, MX 记录。 - 反向区域文件 (
benet.com.zone.local) 包含 PTR 记录。
- 正向区域文件 (
- 检查语法 (
named-checkconf,named-checkzone) 并启动服务 (systemctl start named)。 - 在客户端将DNS服务器地址指向新配置的服务器进行测试 (
nslookup,host)。
五、附录:重要概念补充
- 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 看似复杂,但其核心逻辑是 “分层管理 + 分布式查询”:从根服务器到权威服务器,每一层都在接力完成 “域名→IP” 的翻译工作。掌握 DNS 不仅能帮助你理解互联网的运作机制,更能在实际工作中解决域名解析故障、搭建可靠的网络服务。希望本文能带你走进 DNS 的世界,让你对这个 “互联网导航系统” 有更清晰的认识!
更多推荐



所有评论(0)