DNS服务器
·
在 Linux 网络服务中,BIND9是最经典、使用最广泛的 DNS 服务器软件,支持权威解析、递归查询、区域转发、主从复制等核心功能。本文从零开始,带你吃透 BIND9 的核心概念、安装配置、正向 / 反向解析、DNS 转发、Web 绑定及主从区域传送,一站式搞定 DNS 服务部署。
一、DNS 核心概念速通
先理清 DNS 基础术语,后续配置不迷路:
- DNS 系统:分层分布式数据库,实现域名↔IP映射、邮件路由等功能,客户端通过解析器发起查询。
- 域与域名:DNS 是树形结构,域名从右到左由点分隔,如
ourhost.example.com。 - 区域(Zone):DNS 树的管理单元,服务器对区域内域名有完整解析权限。
- 权威服务器:存储区域完整数据,响应带AA(权威应答) 标记。
- 主服务器(Master):维护区域数据原始副本,配置手动编辑 / 动态更新。
- 辅助服务器(Slave):通过区域传送同步主服务器数据,实现高可用。
- 缓存服务器:执行递归查询并缓存结果,提升解析效率。
- 转发服务器:自身不做完整递归,将查询转发给上级 DNS 服务器。
二、BIND9 软件简介
BIND9 是开源 DNS 服务器,基于MPL 2.0协议开源,功能全面、兼容性强,是 Linux 环境 DNS 服务的首选方案。
三、BIND9 安装(CentOS/RHEL 8+)
执行一键安装命令,包含主程序和工具包:
dnf install bind bind-utils -y
bind:DNS 服务主程序(named)bind-utils:dig/nslookup 等 DNS 测试工具
四、核心配置文件解析
BIND9 主配置文件为/etc/named.conf,核心配置项如下:
options {
# 监听53端口,指定本机IP/any(所有网卡)
listen-on port 53 { 127.0.0.1; any;};
# 区域数据文件存放目录
directory "/var/named";
# 允许所有客户端查询
allow-query { localhost;any; };
# 开启递归查询
recursion yes;
# 关闭DNSSEC(实验环境简化配置)
dnssec-enable no;
dnssec-validation no;
};
# 根域名服务器指向(所有DNS服务器必备)
zone "." IN {
type hint;
file "named.ca";
};
# 引入子配置文件
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
关键配置说明
listen-on:DNS 默认监听53 端口,生产环境建议指定内网 IP,不建议用 any。allow-query:控制允许访问 DNS 服务的客户端,实验环境设为 any。recursion:开启递归,让服务器帮客户端完成完整域名解析。
五、区域文件模板(SOA 记录)
区域文件存储解析记录,SOA 记录是核心,定义主从同步规则:
| 字段 | 含义 | 推荐值 |
|---|---|---|
| Serial | 序列号(格式:yyyymmddnn) | 主从同步依据 |
| Refresh | 辅服务器检查更新间隔 | 1D(1 天) |
| Retry | 连接主服失败后重试间隔 | 1H(1 小时) |
| Expire | 数据过期时间(超时停止解析) | 1W(1 周) |
| Minimum | 否定缓存 TTL | 3H(3 小时) |
正向解析模板(/var/named/named.localhost):
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
六、实战实验(核心环节)
实验 1:正向解析(域名→IP)
以baidu.com为例,配置正向解析:
-
修改
/etc/named.conf,添加区域配置:
zone "baidu.com" IN {
type master;
file "named.baidu.com";
};
-
创建区域数据文件
/var/named/named.baidu.com:
$TTL 1D
@ IN SOA @ admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.baidu.com.
IN MX 10 mail.baidu.com.
ns IN A 192.168.226.130
mail IN A 192.168.226.1
www IN A 192.168.226.5
www IN A 192.168.226.10
ftp IN CNAME www.baidu.com
-
重启服务并验证:
systemctl restart named
# 验证NS记录
dig -t NS baidu.com @192.168.226.130
# 验证A记录
dig -t A www.baidu.com @192.168.226.130
实验 2:反向解析(IP→域名)
-
named.conf添加反向区域:
zone "226.168.192.in-addr.arpa" IN {
type master;
file "named.fanxiang";
};
-
反向区域文件
/var/named/named.fanxiang:
$TTL 1D
@ IN SOA @ admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.baidu.com.
130 IN PTR ns.baidu.com.
1 IN PTR www.baidu.com.
-
验证反向解析:
dig -x 192.168.226.130 @192.168.226.130
实验 3:DNS 转发服务器
将本地 DNS 查询转发给公共 DNS(114.114.114.114):
-
修改
named.conf:
options {
listen-on port 53 { 192.168.226.130; };
forward only; # 仅转发,不本地递归
forwarders { 114.114.114.114; }; # 上级DNS
};
-
重启服务,客户端测试解析。
实验 4:绑定 Web 服务器解析
实现域名访问本地 Web 服务:
-
配置
haha.com区域:
zone "haha.com" IN {
type master;
file "named.haha.com";
};
-
区域文件
named.haha.com:
$TTL 1D
@ IN SOA @ admin.haha.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS ns.haha.com.
ns IN A 192.168.226.130
www IN A 192.168.226.130
-
客户端访问:
curl www.haha.com
实验 5:主从区域传送(DNS 高可用)
区域传送实现主→从数据同步,分两种方式:
- AXFR:完全区域传送(新从服务器首次同步)
- IXFR:增量区域传送(主服更新后同步)
从服务器配置
zone "zhangsan.com" IN {
type slave; # 从属服务器
masters { 192.168.197.128; }; # 主服务器IP
file "slaves/named.zhangsan"; # 同步文件存放路径
};
同步成功后,从服务器会自动拉取主服务器的区域数据,实现解析高可用。
七、BIND9 服务管理命令
# 启动服务
systemctl start named
# 开机自启
systemctl enable named
# 重启服务
systemctl restart named
# 查看状态
systemctl status named
# 检查配置语法
named-checkconf
# 检查区域文件语法
named-checkzone baidu.com /var/named/named.baidu.com
八、总结
BIND9 作为经典 DNS 服务器,覆盖了权威解析、递归查询、转发、主从复制等企业级需求。本文从概念到实战,完整演示了 BIND9 的部署与应用,实验环境可直接复用,生产环境只需调整监听 IP、访问权限等安全配置即可上线。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)