文章目录
-
- 一、DNS 基础理论
-
- 1. DNS 诞生背景
- 2. DNS 系统组成
- 3. DNS 两种查询方式
-
- (1)递归查询 RD=1(客户端 ↔ 本地 DNS)
- (2)迭代查询 RD=0(本地 DNS ↔ 根 / 顶级 / 权威服务器)
- 示例:解析`www.xiaomi.com`完整流程
- 4. DNS 核心资源记录 RR
-
- SOA 字段详解
- 5. DNS 服务器分类
- 6. 常用 DNS 排查工具
-
- Windows 工具
- Linux 工具(bind-utils 包)
- 二、CentOS7 BIND 权威 DNS 实操(主服务器)
-
- 实验环境规划
- 步骤 1:基础环境初始化(两台主机均执行)
- 步骤 2:dns-server 安装 BIND 服务
- 步骤 3:修改主配置文件`/etc/named.conf`
-
- 1)定义 ACL 可信网段
- 2)修改 options 全局配置
- 3)定义正向、反向区域(文件末尾追加)
- 步骤 4:创建区域解析文件
-
- 1)复制模板生成区域文件
- 2)编辑正向区域`/var/named/laogao.cloud.zone`
- 3)编辑反向区域`/var/named/10.1.8.zone`
- 步骤 5:校验配置语法(启动前必做)
- 步骤 6:启动服务 + 放行防火墙
- 三、客户端测试(dns-client 主机)
-
- 1. 客户端指定 DNS 服务器
- 2. 解析测试命令
- 四、扩展:缓存 DNS 服务器(Unbound/Dnsmasq)
-
- 方案 1:Unbound 轻量缓存 DNS
-
- 1. 安装
- 2. 核心配置`/etc/unbound/unbound.conf`
- 3. 管理缓存
- 方案 2:Dnsmasq 多功能缓存 DNS(小型局域网首选)
-
- 1. 安装
- 2. 核心配置`/etc/dnsmasq.conf`
- 3. 上游 DNS 文件`/etc/resolv.dnsmasq.conf`
- 4. 启动测试
一、DNS 基础理论
1. DNS 诞生背景
早期 ARPAnet 通过HOSTS.txt维护主机名与 IP 映射,由 NIC 统一分发,网络规模暴露出两大致命缺陷:
名称冲突:用户随意修改主机名易重复;
数据不一致
:全网主机文件同步滞后,解析错乱。
为解决分布式域名解析问题,DNS(Domain Name System,域名系统)诞生,核心作用:
把人类易记域名翻译为机器通信 IP 地址
域名解析访问流程
流程简述:客户端输入域名→DNS 解析得到 IP→基于 IP 发起 HTTP 访问。
2. DNS 系统组成
域名:字符化主机标识,如www.huawei.com;
DNS 服务器:分布式数据库,存储域名 – IP 映射,响应解析请求,不存储全网所有记录;
分层域名树结构
(从顶到底)
DNS层级结构
-
根域:.,所有域名顶层,默认书写省略;
-
顶级域 TLD:
- gTLD 通用域:.com商业、.edu教育、.org组织;
- ccTLD 国家域:.cn中国、.uk英国、.us美国;
-
次顶级域:企业自定义,如huawei;
-
主机名:服务器标识,如
www
、
mail
;
完整 FQDN 格式:
主机.次级域.顶级域.根
→
www.huawei.com.
3. DNS 两种查询方式
DNS 完整解析流程为递归 + 迭代组合(互联网标准流程)
(1)递归查询 RD=1(客户端 ↔ 本地 DNS)
客户端只发 1 次请求,全权交给本地 DNS,服务器必须返回最终 IP 或报错,不返回中间服务器地址。
(2)迭代查询 RD=0(本地 DNS ↔ 根 / 顶级 / 权威服务器)
本地 DNS 查不到完整记录,上级服务器仅返回下一级 DNS 地址,本地 DNS 逐层自行询问。
示例:解析www.xiaomi.com完整流程
4. DNS 核心资源记录 RR
所有解析数据存储为资源记录,通用格式:域名 TTL 类型 数据
表格
| A | IPv4 正向解析,域名→IP | www 3600 IN A 10.1.8.200 |
| AAAA | IPv6 正向解析,域名→IPv6 | a.root-servers.net IN AAAA 2001:503:ba3e::2:30 |
| CNAME | 域名别名,指向真实域名 | student IN CNAME client.laogao.cloud. |
| PTR | 反向解析,IP→域名(in-addr.arpa 域) | 10 IN PTR dns.laogao.cloud. |
| NS | 区域权威服务器记录,指定域名由哪台 DNS 解析 | @ IN NS dns.laogao.cloud. |
| SOA | 区域起始授权记录,每个区域唯一,管控主从同步、缓存超时 | 包含序列号、刷新 / 重试 / 过期时间 |
| MX | 邮件交换记录,域名邮箱服务器,数字越小优先级越高 | @ IN MX 10 mail.laogao.cloud. |
| TXT | 文本记录,用于 SPF、域名所有权验证 | "v=spf1 a -all" |
| SRV | 服务定位记录,标记 LDAP、数据库等服务端口与主机 | _ldap._tcp IN SRV 0 100 389 server0 |
SOA 字段详解
plaintext
@ IN SOA dns.laogao.cloud. root.laogao.cloud. (
2026080500 ; serial 序列号,修改区域文件必须+1
3H ; refresh 从服务器多久同步主服务器
15M ; retry 同步失败重试间隔
1W ; expire 长期同步失败,从服务器停止提供解析
15M ; minimum 不存在域名的负缓存时间
)
- dns.laogao.cloud.:主 DNS 服务器 FQDN;
- root.laogao.cloud.:管理员邮箱,.替代@,即root@laogao.cloud。
5. DNS 服务器分类
权威服务器(BIND Master/Slave)
-
Master 主服务器:唯一可编辑区域解析记录;
-
Slave 从服务器:定期从主服务器
区域传输 Zone Transfer
同步数据,提供冗余解析;
企业规范:至少部署 2 台异地权威服务器,避免单点故障。
缓存递归服务器(Unbound/Dnsmasq/BIND)
不存储权威记录,缓存外网解析结果,加速内网解析,仅对内网可信主机开放递归,防止 DNS 放大攻击。
6. 常用 DNS 排查工具
Windows 工具
Linux 工具(bind-utils 包)
:功能最全,完整输出解析报文,排错首选
- dig @DNSIP 域名:指定服务器查询
- dig +short 域名:精简输出仅 IP
- dig -t MX 域名:指定查询 MX 记录
- dig -x IP:反向 PTR 查询
- dig +trace 域名:完整追踪迭代查询全过程
host:轻量化简易解析工具
nslookup:跨平台通用
whois:查询域名注册商、注册时间等信息
getent hosts:按系统解析顺序(hosts→DNS)查询域名
二、CentOS7 BIND 权威 DNS 实操(主服务器)
实验环境规划
表格
| dns-server | 10.1.8.10/24 | BIND 主权威服务器 |
| dns-client | 10.1.8.11/24 | DNS 测试客户端 |
网关:10.1.8.2
步骤 1:基础环境初始化(两台主机均执行)
bash
# dns-server
hostnamectl set-hostname dns-server
# dns-client
hostnamectl set-hostname dns-client
bash
nmcli connection modify ens33 ipv4.method manual \\
ipv4.addresses 10.1.8.10/24 ipv4.gateway 10.1.8.2 \\
ipv4.dns 10.1.8.2 autoconnect yes
nmcli connection up ens33
dns-client 将 IP 改为10.1.8.11/24,其余参数一致。
步骤 2:dns-server 安装 BIND 服务
bash
# 安装服务+解析工具
yum install -y bind bind-utils
# 核心文件说明
# /etc/named.conf BIND主配置文件
# /var/named/ 区域解析文件存放目录
# /var/log/messages named运行日志,排错使用
步骤 3:修改主配置文件/etc/named.conf
1)定义 ACL 可信网段
文件开头添加内网网段白名单
conf
acl classroom {
10.1.8.0/24; # 允许内网所有主机访问DNS
};
内置默认 ACL:
- any:所有 IP;none:拒绝全部;localhost:本机;localnets:本机同网段
2)修改 options 全局配置
conf
options {
listen-on port 53 { 127.0.0.1; 10.1.8.10; }; # 监听本机回环+内网网卡IP
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; # 开启递归(内网缓存场景;纯权威服务器建议关闭recursion no)
allow-recursion { classroom; }; # 仅内网允许递归,防攻击
allow-transfer { classroom; }; # 仅允许内网从服务器同步区域数据
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
3)定义正向、反向区域(文件末尾追加)
conf
# 正向区域:laogao.cloud域名
zone "laogao.cloud" IN {
type master; # 角色为主服务器
file "laogao.cloud.zone"; # 对应区域文件名称
};
# 反向区域:10.1.8.0/24网段,格式 网段倒写.in-addr.arpa
zone "8.1.10.in-addr.arpa" IN {
type master;
file "10.1.8.zone";
};
步骤 4:创建区域解析文件
1)复制模板生成区域文件
bash
# 正向区域模板
cp /var/named/named.localhost /var/named/laogao.cloud.zone
# 反向区域模板
cp /var/named/named.loopback /var/named/10.1.8.zone
# 修改文件权限、属组(named服务读取权限)
chmod 640 /var/named/*.zone
chown root:named /var/named/*.zone
# SELinux标签修复
chcon -t named_zone_t /var/named/*.zone
2)编辑正向区域/var/named/laogao.cloud.zone
conf
$TTL 1D ; 默认TTL 1天
@ IN SOA dns.laogao.cloud. root.laogao.cloud. (
2026080501 ; serial 修改文件必须自增
3H
15M
1W
15M
)
; NS记录,指定权威服务器
@ IN NS dns.laogao.cloud.
; A记录 域名映射IPv4
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.laogao.cloud.
; MX邮件记录
@ IN MX 10 mail.laogao.cloud.
注意:完整 FQDN 必须末尾带.,简写域名自动拼接laogao.cloud
3)编辑反向区域/var/named/10.1.8.zone
conf
$TTL 1D
@ IN SOA dns.laogao.cloud. root.laogao.cloud. (
2026080501
3H
15M
1W
15M
)
@ IN NS dns.laogao.cloud.
; PTR反向记录,仅写IP最后一段
10 IN PTR dns.laogao.cloud.
10 IN PTR server.laogao.cloud.
11 IN PTR client.laogao.cloud.
11 IN PTR student.laogao.cloud.
200 IN PTR www.laogao.cloud.
253 IN PTR mail.laogao.cloud.
步骤 5:校验配置语法(启动前必做)
bash
# 校验主配置named.conf
named-checkconf
# 校验正向区域文件
named-checkzone laogao.cloud /var/named/laogao.cloud.zone
# 校验反向区域文件
named-checkzone 8.1.10.in-addr.arpa /var/named/10.1.8.zone
# 无报错再启动服务
步骤 6:启动服务 + 放行防火墙
bash
# 开机自启并立即启动
systemctl enable named –now
# 查看运行状态
systemctl status named
# 防火墙放行DNS 53端口UDP/TCP
firewall-cmd –add-service=dns –permanent
firewall-cmd –reload
# 实时查看named运行日志(排错)
journalctl -f _SYSTEMD_UNIT=named.service
三、客户端测试(dns-client 主机)
1. 客户端指定 DNS 服务器
bash
# 将客户端DNS指向自建BIND服务器
nmcli connection modify ens33 ipv4.dns 10.1.8.10
nmcli connection up ens33
2. 解析测试命令
bash
ping dns.laogao.cloud
ping student.laogao.cloud # CNAME别名,自动解析client
ping www.laogao.cloud
bash
# 正向解析
host www.laogao.cloud
# 反向解析IP
host 10.1.8.10
# 查询域名MX邮件记录
host -t MX laogao.cloud
bash
# 指定服务器查询A记录
dig @10.1.8.10 www.laogao.cloud A
# 反向PTR查询
dig @10.1.8.10 -x 10.1.8.200
# 查询NS权威服务器记录
dig @10.1.8.10 laogao.cloud NS
# 精简输出仅IP
dig +short www.laogao.cloud
bash
getent hosts student.laogao.cloud
四、扩展:缓存 DNS 服务器(Unbound/Dnsmasq)
方案 1:Unbound 轻量缓存 DNS
1. 安装
bash
yum install -y unbound bind-utils
2. 核心配置/etc/unbound/unbound.conf
conf
server:
interface: 10.1.8.20 # 监听内网IP
interface: 127.0.0.1
access-control: 10.1.8.0/24 allow # 内网允许递归
access-control: 0.0.0.0/0 refuse # 拒绝外网
domain-insecure: laogao.cloud # 内部域跳过DNSSEC校验
# 内网域名转发至BIND权威服务器
forward-zone:
name: "laogao.cloud"
forward-addr: 10.1.8.10
# 所有外网域名转发公共DNS
forward-zone:
name: "."
forward-addr: 114.114.114.114
forward-addr: 8.8.8.8
3. 管理缓存
bash
# 校验配置
unbound-checkconf
# 启停服务
systemctl enable unbound –now
# 导出缓存
unbound-control dump_cache > dns_cache.log
# 清空单域名缓存
unbound-control flush www.laogao.cloud
# 清空整个域缓存
unbound-control flush_zone laogao.cloud
方案 2:Dnsmasq 多功能缓存 DNS(小型局域网首选)
支持 DNS 缓存 + DHCP + 广告拦截,轻量无复杂配置
1. 安装
bash
yum install -y dnsmasq
2. 核心配置/etc/dnsmasq.conf
conf
listen-address=10.1.8.20,127.0.0.1 # 监听IP
resolv-file=/etc/resolv.dnsmasq.conf # 上游公共DNS文件
strict-order # 严格按顺序查询上游DNS
# 内网域名转发至BIND权威服务器
server=/laogao.cloud/10.1.8.10
# 广告域名劫持至无效IP,屏蔽广告
address=/ad.xxx.com/127.0.0.1
# 自定义静态内网解析(替代hosts)
address=/server.laogao.cloud/10.1.8.10
3. 上游 DNS 文件/etc/resolv.dnsmasq.conf
conf
nameserver 114.114.114.114
nameserver 8.8.8.8
4. 启动测试
bash
# 校验配置
dnsmasq -test
systemctl enable dnsmasq –now
# 客户端测试
dig @10.1.8.20 www.laogao.cloud
网硕互联帮助中心




评论前必须登录!
注册