Linux 网络服务架设学习笔记(第二期)------网络基础设施(下篇):DNS 服务器------权威、缓存与转发
知识衔接:
Linux 网络服务架设学习笔记(第一期)------网络基础设施(上篇):DHCP 服务器------动态地址分配与中继
本系列更多内容可见:Linux常见服务器配置
Linux系统管理入门系列更多文章欢迎访问:Linux入门------系统管理1、Linux入门------系统管理2
我的主页:AOwhisky,这里有更多运维系统性知识整理和其他有趣内容,欢迎与我一起探讨学习~
引言:互联网的"电话簿"------谁把域名翻译成 IP 地址?
你在浏览器中输入 www.baidu.com,按下回车,不到一秒就看到了网页。这背后发生了一系列复杂的网络请求,其中最关键的一步是:浏览器需要知道 www.baidu.com 对应的 IP 地址是多少。
这就像你打算去拜访一位朋友,你知道他的名字(域名),但不知道他的住址(IP 地址)。你需要查一下"电话簿"------而互联网的"电话簿"就是 DNS(Domain Name System,域名系统)。
DNS 是一个分层、分布式的数据库系统,它的核心功能是:
- 正向解析:域名 → IP 地址
- 反向解析:IP 地址 → 域名
DNS 的分布式设计让全球数十亿台设备能够高效、可靠地完成域名解析。它的工作方式大致如下:
- 你用的是本地配置的 DNS 服务器(如
223.5.5.5或8.8.8.8) - 该服务器从根域名服务器开始逐级向下查询
- 经过顶级域(.com、.org、.cn)→ 二级域(baidu.com)→ 权威 DNS 服务器
- 最终返回准确的 IP 地址
本期将系统学习 DNS 服务的完整知识体系:
- DNS 基础:层次结构、递归查询 vs 迭代查询、资源记录类型
- 权威 DNS 服务器:BIND 的安装、区域文件配置、正向/反向解析
- 缓存 DNS 服务器:Unbound 与 dnsmasq 的部署与配置
- 客户端测试 :
dig、host、nslookup等工具的实战使用
读完这一期,你将具备独立部署和维护 DNS 服务体系的能力------从为内网提供权威解析,到为客户端提供高速缓存服务。
--- Compiled and Authored by Whisky --- Augest 4 th, 2026
目录
- DNS 基础概念
- 1.1 DNS 的层次结构
- 1.2 DNS 查询方式:递归查询 vs 迭代查询
- DNS 资源记录详解
- 2.1 资源记录格式
- 2.2 常见记录类型:A/AAAA/CNAME/PTR/NS/MX/SOA
- 权威 DNS 服务器:BIND 部署
- 3.1 安装与基本配置
- 3.2 创建区域文件(正向+反向)
- 3.3 验证与启动服务
- 客户端 DNS 测试与配置
- 4.1 测试工具:dig、host、nslookup
- 4.2 客户端 DNS 配置
- 缓存 DNS 服务器:Unbound
- 5.1 Unbound 简介与安装
- 5.2 配置 Unbound 缓存服务器
- 5.3 客户端测试与缓存管理
- 轻量级缓存 DNS:dnsmasq
- 6.1 dnsmasq 简介与安装
- 6.2 DNS 缓存配置
- 6.3 dnsmasq 的高级用法:域名转发与广告屏蔽
- 总结与速查手册
1. DNS 基础概念
1.1 DNS 的层次结构
DNS 采用树形层级结构,从根域向下逐级划分:
text
.(根域)
│
┌───────────┼───────────┬───────────┐
│ │ │ │
.com .org .cn .net (顶级域)
│ │ │
┌────┴────┐ │ ┌────┴────┐
baidu.com google.com edu.cn gov.cn (二级域)
│ │
www.baidu.com www.edu.cn (主机名/三级域)
| 层级 | 名称 | 示例 | 说明 |
|---|---|---|---|
| 0 | 根域 | . |
DNS 层次结构的最高层,全球 13 组根服务器 |
| 1 | 顶级域(TLD) | .com、.org、.cn |
通用顶级域(gTLD)和国家代码顶级域(ccTLD) |
| 2 | 二级域 | baidu.com、redhat.com |
组织或个人注册的域名 |
| 3+ | 子域/主机名 | www.baidu.com、mail.redhat.com |
具体的资源记录归属 |
DNS 的分布式管理:
- 根域名服务器:由 IANA 管理,全球 13 组(A-M)
- 顶级域服务器:由各注册局管理(如 Verisign 管理 .com)
- 权威 DNS 服务器:由域名所有者管理
1.2 DNS 查询方式:递归查询 vs 迭代查询
| 查询方式 | 特点 | 作用主体 |
|---|---|---|
| 递归查询 | 客户端向本地 DNS 服务器发起请求,服务器代替客户端完成全部查询并返回结果 | 本地 DNS 服务器 |
| 迭代查询 | DNS 服务器逐级向上查询,返回下一级服务器的地址,客户端自己继续查询 | DNS 客户端或服务器 |
递归查询示例:
text
客户端 本地 DNS 服务器 根/顶级/权威服务器
│ │ │
│ ① 请求 www.example.com 的 IP │ │
│ ─────────────────────────────────▶│ │
│ │ ② 依次向各级服务器查询 │
│ │ ─────────────────────────────▶│
│ │ ③ 获取最终结果 │
│ │ ◀─────────────────────────────│
│ ④ 返回 IP 地址 │ │
│ ◀─────────────────────────────────│ │
│ │ │
💡 白话理解:
- 递归查询:你问图书馆管理员"某本书在哪",管理员帮你查完告诉你结果
- 迭代查询:你问管理员,管理员告诉你"去 3 楼查",你跑到 3 楼问,人家又告诉你去 5 楼......直到你找到书
2. DNS 资源记录详解
2.1 资源记录格式
DNS 区域文件中的资源记录格式如下:
bash
owner-name TTL class type data
server.whisky.cloud. 300 IN A 192.168.1.10
| 字段 | 含义 | 示例 |
|---|---|---|
| owner-name | 资源记录的名称 | server.whisky.cloud. |
| TTL | 缓存有效期(秒) | 300 |
| class | 记录类别(几乎总是 IN,即 Internet) |
IN |
| type | 记录类型 | A、CNAME、PTR 等 |
| data | 记录数据(格式因类型而异) | 192.168.1.10 |
2.2 常见记录类型
| 类型 | 作用 | 示例 |
|---|---|---|
| A | 主机名 → IPv4 地址 | server.whisky.cloud. 3600 IN A 10.1.8.10 |
| AAAA | 主机名 → IPv6 地址 | server.whisky.cloud. 3600 IN AAAA 2001:db8::1 |
| CNAME | 别名(规范名称) | www-dev.whisky.cloud. 300 IN CNAME lab.whisky.cloud. |
| PTR | IPv4/IPv6 地址 → 主机名(反向解析) | 10.8.1.10.in-addr.arpa. 3600 IN PTR server.whisky.cloud. |
| NS | 权威 DNS 服务器 | whisky.cloud. 86400 IN NS dns.whisky.cloud. |
| MX | 邮件交换服务器 | whisky.cloud. 86400 IN MX 10 mail.whisky.cloud. |
| SOA | 区域授权起始(区域元数据) | 见下文 |
| TXT | 任意文本(常用于验证/SPF) | whisky.cloud. 3600 IN TXT "v=spf1 mx -all" |
| SRV | 服务定位 | _ldap._tcp.whisky.cloud. 86400 IN SRV 0 100 389 server.whisky.cloud. |
SOA 记录详解(每个区域必须有且仅有一条):
bash
whisky.cloud. 86400 IN SOA dns.whisky.cloud. root.whisky.cloud. (
2024080401 ; 序列号(每次修改递增)
3600 ; REFRESH(从服务器刷新间隔,秒)
300 ; RETRY(刷新失败后重试间隔,秒)
604800 ; EXPIRE(从服务器停止响应前的等待时间,秒)
60 ; MINIMUM(否定缓存 TTL,秒)
)
| SOA 字段 | 含义 | |
|---|---|---|
MNAME |
主 DNS 服务器名称 | dns.whisky.cloud. |
RNAME |
负责人的邮箱(@ 用 . 代替) |
root.whisky.cloud. → root@whisky.cloud |
SERIAL |
区域版本号(每次修改必须递增) | 2024080401 |
REFRESH |
从服务器向主服务器拉取更新的间隔 | 3600(1 小时) |
RETRY |
刷新失败后的重试间隔 | 300(5 分钟) |
EXPIRE |
从服务器停止服务前的等待时间 | 604800(7 天) |
MINIMUM |
否定响应的缓存时长 | 60(1 分钟) |
3. 权威 DNS 服务器:BIND 部署
BIND(Berkeley Internet Name Domain) 是 Linux 上最流行的 DNS 服务器软件。它既可以作为权威 DNS 服务器,也可以作为缓存 DNS 服务器。
3.1 安装与基本配置
bash
# 安装 BIND 和客户端工具
[root@server ~]# yum install -y bind bind-utils
# 主配置文件:/etc/named.conf
# 区域文件目录:/var/named/
基本配置流程:
- 配置
named监听的 IP 地址 - 配置查询访问控制(
allow-query) - 定义区域(zone)
- 创建区域文件(正向和反向)
步骤 1:修改 /etc/named.conf
bash
[root@server ~]# vim /etc/named.conf
bash
options {
# 监听所有 IPv4 地址的 53 端口
listen-on port 53 { any; };
# 允许所有客户端查询(生产环境应限制)
allow-query { any; };
# 禁止递归查询(权威服务器不应提供递归)
recursion no;
# 区域文件目录
directory "/var/named";
};
# 定义正向区域
zone "whisky.cloud" IN {
type master;
file "whisky.cloud.zone";
};
# 定义反向区域(10.1.8.0/24)
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
步骤 2:创建区域文件
bash
# 创建正向区域文件
[root@server ~]# vim /var/named/whisky.cloud.zone
bash
$TTL 3600
@ IN SOA dns.whisky.cloud. root.whisky.cloud. (
2024080401 ; 序列号
3H ; REFRESH
15M ; RETRY
1W ; EXPIRE
15M ; MINIMUM
)
; NS 记录
@ IN NS dns.whisky.cloud.
; A 记录(主机名 → IP)
dns IN A 10.1.8.10
server IN A 10.1.8.10
client IN A 10.1.8.11
www IN A 10.1.8.200
mail IN A 10.1.8.253
; CNAME 记录(别名)
student IN CNAME client.whisky.cloud.
; MX 记录(邮件交换)
@ IN MX 10 mail.whisky.cloud.
创建反向区域文件:
bash
[root@server ~]# vim /var/named/10.1.8.zone
bash
$TTL 3600
@ IN SOA dns.whisky.cloud. root.whisky.cloud. (
2024080401
3H
15M
1W
15M
)
; NS 记录
@ IN NS dns.whisky.cloud.
; PTR 记录(IP → 主机名)
10 IN PTR server.whisky.cloud.
10 IN PTR dns.whisky.cloud.
11 IN PTR client.whisky.cloud.
200 IN PTR www.whisky.cloud.
253 IN PTR mail.whisky.cloud.
步骤 3:设置文件权限与 SELinux
bash
# 修改文件属主和权限
[root@server ~]# chown root:named /var/named/*.zone
[root@server ~]# chmod 640 /var/named/*.zone
# SELinux 标签(如果启用)
[root@server ~]# chcon -t named_zone_t /var/named/*.zone
3.2 验证配置
验证主配置文件:
bash
[root@server ~]# named-checkconf
# 无输出表示配置正确
验证区域文件:
bash
[root@server ~]# named-checkzone whisky.cloud /var/named/whisky.cloud.zone
zone whisky.cloud/IN: loaded serial 2024080401
OK
[root@server ~]# named-checkzone 8.1.10.in-addr.arpa /var/named/10.1.8.zone
zone 8.1.10.in-addr.arpa/IN: loaded serial 2024080401
OK
3.3 启动服务
bash
# 启用并启动 BIND
[root@server ~]# systemctl enable named --now
# 检查服务状态
[root@server ~]# systemctl status named
# 查看监听端口(DNS 使用 UDP/TCP 53)
[root@server ~]# ss -ulnp | grep 53
UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("named",pid=1234,fd=20))
# 配置防火墙
[root@server ~]# firewall-cmd --add-service=dns --permanent
[root@server ~]# firewall-cmd --reload
4. 客户端 DNS 测试与配置
4.1 测试工具:dig、host、nslookup
dig(Domain Information Groper) 是最强大的 DNS 诊断工具:
bash
# 安装 bind-utils(包含 dig)
[root@client ~]# yum install -y bind-utils
# 查询 A 记录
[root@client ~]# dig @10.1.8.10 server.whisky.cloud
; <<>> DiG 9.11.4-P2 <<>> @10.1.8.10 server.whisky.cloud
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;server.whisky.cloud. IN A
;; ANSWER SECTION:
server.whisky.cloud. 3600 IN A 10.1.8.10
;; AUTHORITY SECTION:
whisky.cloud. 86400 IN NS dns.whisky.cloud.
;; Query time: 1 msec
;; SERVER: 10.1.8.10#53(10.1.8.10)
常用 dig 命令:
| 命令 | 作用 |
|---|---|
dig @server domain A |
查询 A 记录 |
dig @server domain CNAME |
查询 CNAME 记录 |
dig @server domain MX |
查询 MX 记录 |
dig @server domain NS |
查询 NS 记录 |
dig @server -x IP |
反向查询(PTR 记录) |
dig +trace domain |
从根服务器开始追踪查询路径 |
dig +short domain |
简洁输出(仅返回 IP) |
host 命令(简洁输出):
bash
[root@client ~]# host server.whisky.cloud
server.whisky.cloud has address 10.1.8.10
[root@client ~]# host -t MX whisky.cloud
whisky.cloud mail is handled by 10 mail.whisky.cloud.
[root@client ~]# host 10.1.8.10
10.8.1.10.in-addr.arpa domain name pointer server.whisky.cloud.
nslookup 命令(交互式/非交互式):
bash
# 非交互式
[root@client ~]# nslookup server.whisky.cloud 10.1.8.10
Server: 10.1.8.10
Address: 10.1.8.10#53
Name: server.whisky.cloud
Address: 10.1.8.10
# 交互式
[root@client ~]# nslookup
> server 10.1.8.10
> set type=MX
> whisky.cloud
> exit
4.2 客户端 DNS 配置
bash
# 使用 nmcli 配置 DNS
[root@client ~]# nmcli connection modify ens160 ipv4.dns 10.1.8.10
[root@client ~]# nmcli connection up ens160
# 验证 resolv.conf
[root@client ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.1.8.10
# 验证解析
[root@client ~]# ping student.whisky.cloud
PING client.whisky.cloud (10.1.8.11) 56(84) bytes of data.
64 bytes from 10.1.8.11: icmp_seq=1 ttl=64 time=0.123 ms
# student 是 CNAME,实际解析到 client.whisky.cloud
5. 缓存 DNS 服务器:Unbound
5.1 Unbound 简介
Unbound 是一个高性能、安全的递归缓存 DNS 服务器,相比 BIND 更适合作为缓存服务器而非权威服务器。
| 特性 | 说明 |
|---|---|
| 安全 | 默认启用 DNSSEC 验证,防缓存污染 |
| 高性能 | 使用现代数据结构,查询速度快 |
| 轻量 | 资源占用低,适合大规模部署 |
5.2 配置 Unbound 缓存服务器
bash
# 安装 Unbound
[root@cache ~]# yum install -y unbound
# 配置 /etc/unbound/unbound.conf
[root@cache ~]# vim /etc/unbound/unbound.conf
yaml
server:
# 监听接口(默认只监听 localhost)
interface: 0.0.0.0
interface: ::0
interface-automatic: no
# 访问控制(允许内网客户端查询)
access-control: 127.0.0.0/8 allow
access-control: 10.1.8.0/24 allow
# 允许递归查询
do-not-query-localhost: no
# DNSSEC 验证(默认启用)
# 如果内网域名未签名,需设置 domain-insecure
# domain-insecure: "whisky.cloud"
重要配置说明:
| 参数 | 作用 |
|---|---|
interface |
监听的 IP 地址(0.0.0.0 表示所有接口) |
access-control |
允许递归查询的客户端网段 |
domain-insecure |
跳过 DNSSEC 验证的域(用于内网未签名域名) |
验证与启动:
bash
# 验证配置文件
[root@cache ~]# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf
# 启动服务
[root@cache ~]# systemctl enable unbound --now
# 防火墙放行 DNS
[root@cache ~]# firewall-cmd --add-service=dns --permanent
[root@cache ~]# firewall-cmd --reload
5.3 客户端测试与缓存管理
客户端测试:
bash
[root@client ~]# dig @10.1.8.20 server.whisky.cloud
; Query time: 2 msec
;; SERVER: 10.1.8.20#53(10.1.8.20)
缓存管理:
bash
# 查看缓存内容
[root@cache ~]# unbound-control dump_cache | head -30
# 清空特定域名的缓存
[root@cache ~]# unbound-control flush server.whisky.cloud
ok
# 清空整个区域的缓存
[root@cache ~]# unbound-control flush_zone whisky.cloud
ok
# 查看 Unbound 统计信息
[root@cache ~]# unbound-control stats
💡 缓存的价值:首次查询需要 2-5 毫秒(从权威服务器获取),后续缓存命中仅需 < 1 毫秒,大幅提升 DNS 解析效率。
6. 轻量级缓存 DNS:dnsmasq
6.1 dnsmasq 简介
dnsmasq 是一款轻量级网络服务软件,集成了 DNS 缓存 、DHCP 、DHCP 中继 、TFTP/PXE 四大功能,适用于个人用户或小型网络。
6.2 DNS 缓存配置
bash
# 安装 dnsmasq
[root@cache ~]# yum install -y dnsmasq
配置文件 /etc/dnsmasq.conf:
bash
# 监听所有接口
listen-address=0.0.0.0
# DNS 缓存大小(默认 150 条)
cache-size=1000
# 禁止从 /etc/hosts 解析(如需使用 hosts,保留默认)
# no-hosts
# 上游 DNS 服务器(默认从 /etc/resolv.conf 读取)
# resolv-file=/etc/resolv.dnsmasq.conf
# 域名转发:将特定域名的查询转发到指定 DNS
server=/whisky.cloud/10.1.8.10
server=/google.com/8.8.8.8
# 自定义解析(类似 hosts)
address=/www.linux.fun/10.1.8.100
address=/ftp.linux.fun/10.1.8.200
域名转发的高级用法:
bash
# 国内域名用国内 DNS
server=/cn/114.114.114.114
server=/taobao.com/114.114.114.114
# 国外域名用 Google DNS
server=/google.com/8.8.8.8
server=/youtube.com/8.8.8.8
# 屏蔽广告(将广告域名解析到 127.0.0.1)
address=/ad.youku.com/127.0.0.1
address=/ad.iqiyi.com/127.0.0.1
启动服务:
bash
[root@cache ~]# systemctl enable dnsmasq --now
# 防火墙放行
[root@cache ~]# firewall-cmd --add-service=dns --permanent
[root@cache ~]# firewall-cmd --reload
6.3 dnsmasq 解析流程
dnsmasq 按以下顺序处理 DNS 查询:
text
1. 解析 /etc/hosts 文件
↓(未命中)
2. 解析 /etc/dnsmasq.d/*.conf 中的规则
↓(未命中)
3. 使用 /etc/resolv.conf 中的上游 DNS 服务器
💡 实用场景 :在
/etc/hosts中定义内网域名解析,dnsmasq 会自动将 hosts 中的记录提供给所有客户端,实现内网 DNS 的快速部署。
7. 总结与速查手册
7.1 核心知识点一览
| 主题 | 关键点 |
|---|---|
| DNS 层次结构 | 根域 → 顶级域 → 二级域 → 子域/主机名 |
| 查询方式 | 递归查询(服务器代查)、迭代查询(客户端自查) |
| 资源记录 | A(IPv4)、AAAA(IPv6)、CNAME(别名)、PTR(反向)、NS(权威)、MX(邮件)、SOA(区域元数据) |
| BIND 权威 DNS | /etc/named.conf + 区域文件,权威服务器应关闭递归 |
| Unbound 缓存 DNS | 高性能递归服务器,支持 DNSSEC,适合大规模内网 |
| dnsmasq 轻量 DNS | DNS + DHCP + TFTP 三合一,适合小型网络 |
7.2 DNS 资源记录速查表
| 类型 | 用途 | 示例 |
|---|---|---|
| A | 域名 → IPv4 | server IN A 10.1.8.10 |
| AAAA | 域名 → IPv6 | server IN AAAA 2001:db8::1 |
| CNAME | 别名 | www IN CNAME server.whisky.cloud. |
| PTR | IPv4 → 域名 | 10 IN PTR server.whisky.cloud. |
| NS | 权威 DNS 服务器 | @ IN NS dns.whisky.cloud. |
| MX | 邮件服务器 | @ IN MX 10 mail.whisky.cloud. |
| SOA | 区域元数据 | 见上文 |
| TXT | 任意文本 | @ IN TXT "v=spf1 mx -all" |
7.3 BIND 命令速查表
| 命令 | 作用 |
|---|---|
named-checkconf |
验证 /etc/named.conf 语法 |
named-checkzone zone file |
验证区域文件 |
systemctl start named |
启动 BIND |
systemctl reload named |
重新加载配置(无需重启) |
rndc status |
查看 BIND 运行状态 |
rndc reload |
重新加载配置和区域文件 |
rndc flush |
清空缓存 |
7.4 DNS 测试工具速查表
| 工具 | 命令示例 | 作用 |
|---|---|---|
dig |
dig @10.1.8.10 server.whisky.cloud |
查询 A 记录 |
dig |
dig @10.1.8.10 -x 10.1.8.10 |
反向查询 |
dig |
dig +trace baidu.com |
追踪查询路径 |
host |
host server.whisky.cloud |
简洁正向查询 |
host |
host -t MX whisky.cloud |
查询 MX 记录 |
nslookup |
nslookup server.whisky.cloud |
查询 A 记录 |
nslookup |
nslookup -type=PTR 10.1.8.10 |
反向查询 |
7.5 Unbound 管理命令速查表
| 命令 | 作用 |
|---|---|
unbound-checkconf |
验证配置语法 |
unbound-control dump_cache |
导出缓存内容 |
unbound-control flush domain |
清空特定域名缓存 |
unbound-control flush_zone zone |
清空整个区域缓存 |
unbound-control stats |
查看统计信息 |
unbound-control reload |
重新加载配置 |
7.6 常见错误排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
dig: connection timed out |
DNS 服务器未响应 | 检查 DNS 服务是否运行、防火墙是否放行 53 端口 |
status: REFUSED |
服务器拒绝查询 | 检查 allow-query 配置 |
status: NXDOMAIN |
域名不存在 | 检查区域文件中的记录是否正确 |
status: SERVFAIL |
服务器无法完成查询 | 检查上游 DNS 或区域文件语法 |
BIND: loading zone: permission denied |
区域文件权限问题 | chown root:named 和 chmod 640 |
| 客户端无法解析内网域名 | 缓存服务器未配置 domain-insecure | Unbound 添加 domain-insecure: "whisky.cloud" |
| dnsmasq 不生效 | 配置未重新加载 | systemctl reload dnsmasq |
7.7 思考与拓展(原课后作业转化)
- 递归查询和迭代查询的核心区别是什么?
→ 递归查询由 DNS 服务器代替客户端完成全部查询;迭代查询中,每台服务器只返回下一级服务器的地址,客户端自己继续查询。递归查询更"省心",但会增加服务器负载。 - A 记录和 CNAME 记录的区别是什么?
→ A 记录直接将域名映射到 IP 地址;CNAME 记录将一个域名别名指向另一个域名(该域名再通过 A 记录解析到 IP)。CNAME 不直接解析 IP,必须最终指向 A 记录。 - 权威 DNS 服务器为什么不建议开启递归查询?
→ 防止被用于 DNS 放大攻击(DDoS)。攻击者利用递归服务器的放大效应,将小查询放大为大响应,攻击第三方目标。 dig +trace命令的作用是什么?
→ 从根服务器开始逐级追踪查询过程,显示每一步的查询结果,帮助诊断 DNS 解析链路中的问题。- Unbound 和 dnsmasq 都支持 DNS 缓存,如何选择?
→ Unbound:功能更强、安全配置更完善、支持 DNSSEC,适合中大型企业网络。dnsmasq:配置简单、资源占用更低、集成了 DNS+DHCP+TFTP,适合小型网络和嵌入式环境。
7.8 生产环境最佳实践
| 场景 | 建议 |
|---|---|
| 权威 DNS 服务器 | 关闭递归(recursion no),限制 allow-query 只对授权客户端开放 |
| 缓存 DNS 服务器 | 限制 access-control,仅允许内网客户端使用 |
| DNS 安全 | 启用 DNSSEC(权威服务器签名 + 缓存服务器验证) |
| 区域文件管理 | 每次修改记录后递增 SERIAL 号,否则从服务器不会同步更新 |
| 配置文件备份 | 定期备份 /etc/named.conf 和 /var/named/*.zone |
| 日志监控 | 监控 DNS 查询日志,异常流量可能是 DDoS 攻击或域名劫持 |
| 高可用 | 部署主从 DNS 服务器,确保单点故障不影响解析服务 |
下期预告 :DNS 让域名找到了"家门"(IP 地址),但数据在网络中如何传输?如果需要在不同服务器之间共享文件或同步数据 ,就需要 NFS 和 Rsync 。下一期我们将学习 NFS 网络文件系统 的部署与挂载,以及 Rsync 远程同步工具 的命令使用------让数据在 Linux 服务器之间自由流动。敬请期待第三期!
--- Compiled and Authored by Whisky --- Augest 4 th, 2026