dns

🗺️ 第一部分:DNS 核心概念(树状架构)

为了让学生不产生混乱,必须让他们明白:DNS 是互联网的全球“电话簿”。电脑只认数字(IP 地址),而人类只认名字(域名)。DNS 的查询是从右往左反向进行的,它是一棵倒立的树:

🚨 核心区别:递归查询 vs 权威查询

🛠️ 第二部分:BIND 软件包核心机制 (CentOS 7)

在 CentOS 7 中,DNS 服务由 bind 软件包提供,运行的后台进程名为 named。

配置 BIND 只需要搞懂三个核心部件的静态联动关系:

[1. 主配置文件] ----> 告诉 BIND 基础规则与到哪里找域 (/etc/named.conf) | v [2. 区域声明 Block] ----> 在主配置文件内,声明自己对哪些域名有“所有权” (zone "example.com") | v [3. 区域解析文件] ----> 存放域名与 IP 地址的具体映射表格 (/var/named/...)

📋 核心记录类型学生速查表

记录类型 全称 核心作用 应用示例
SOA Start of Authority 权威起始记录,包含区域的合法所有权、序列号及同步参数。 每个 Zone 必须包含一个,位于最顶部
NS Name Server 域名服务器记录,指定谁来负责解析这个区域。 @ IN NS example.com.
A Address IPv4 正向解析记录,将域名转换成具体 IPv4 地址。 www IN A 192.168.1.10
AAAA IPv6 Address IPv6 正向解析记录,将域名转换成具体 IPv6 地址。 www IN AAAA fe80::1
CNAME Canonical Name 别名记录,给现有域名起一个外号。 ftp IN CNAME www
MX Mail Exchanger 邮件交换记录,标记负责该域名邮件接收的服务器。 @ IN MX 10 example.com.

💻 第三部分:完整配置代码实操模板

1. 主配置文件:/etc/named.conf

在本地实验中,学生需要将默认的 127.0.0.1 和 localhost 改为 any,以允许外部主机发起查询需求。

options {
listen-on port 53 { any; }; // 修改此处:允许监听所有网卡的53端口
listen-on-v6 port 53 { ::1; };
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 { any; }; // 修改此处:允许任何客户端向本服务器查询
recursion yes; // 允许递归查询

dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

// 区域声明示范:拥有 example.com 这个域
zone "example.com" IN {
type master; // 主DNS服务器
file "example.com.zone"; // 指向具体的解析数据文件路径
allow-update { none; }; // 不允许动态更新
};

zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

2. 正向区域文件:/var/named/example.com.zone

⚠️ 教学避坑提示: 告诉学生,在 DNS 区域文件中,凡是完整的合格域名(FQDN)结尾必须带上一个点号 .(例如 example.com.)。如果不加点,系统会自动将域名后缀加上,导致拼接成类似 example.com.example.com 的错误域名。
$TTL 1D
@ IN SOA example.com. example.com. (
2026091101 ; serial(序列号,每次修改递增)
1D ; refresh(刷新时间)
1H ; retry(重试时间)
1W ; expire(过期时间)
3H ) ; minimum(最小缓存时间)
;
; 指定该区域的权威域名服务器
@ IN NS example.com.
;
; 指定邮件服务器
@ IN MX 10 example.com.
;
; 主机名映射 IP 地址的 A 记录表格
ns1 IN A 192.168.1.5
mail IN A 192.168.1.6
www IN A 192.168.1.10
blog IN A 192.168.1.20
;
; 别名记录示范
ftp IN CNAME www

💡 课堂互动小实验:在安装前观察 DNS 分层解析

在正式修改 BIND 配置文件前,让学生在 CentOS 7 终端执行以下命令,通过 dig 工具的追踪功能,亲眼看看一个请求是如何从全球根服务器一步步下发到权威服务器的:

dig +trace baidu.com

实验效果: 终端会清晰地打印出请求首先到达根服务器(.),然后指引到顶级域服务器(.com.),最后落地到域名的权威服务器。通过这种视觉呈现,学生能瞬间理解 DNS 的树状分层理论。