安装BIND,配置区域文件,设置分离规则,重启服务生效
Linux搭建DNS分离解析详细指南
什么是DNS分离解析?
DNS分离解析(Split DNS)是指根据客户端请求的来源(如IP地址、地理位置等),返回不同的解析结果,典型应用场景包括:
- 内网用户访问域名时解析为内网服务地址(如192.168.1.100)
- 外网用户访问同一域名时解析为公网服务地址(如203.0.113.100)
- 实现内外网服务隔离,提升安全性
环境准备
| 组件 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | CentOS 7+/Ubuntu 20+ | 支持BIND 9.11+ |
| BIND软件包 | bindutils bind | 主程序+工具包 |
| 网络环境 | 双网卡/NAT | 需区分内外网网络 |
| 域名 | example.com | 示例域名(需提前注册) |
安装BIND服务
1 CentOS系统安装
yum install y bind bindutils systemctl enable named systemctl start named
2 Ubuntu系统安装
apt update apt install y bind9 bind9utils bind9doc systemctl enable bind9 systemctl start bind9
核心配置文件结构
BIND主要配置文件为/etc/named.conf,包含:
- 全局配置(global options)
- 控制访问策略(access control)
- 视图配置(view)
- 区域声明(zone)
配置分离解析
1 定义地址匹配列表(ACL)
acl "internalclients" {
192.168.1.0/24; // 内网IP段
10.0.0.0/8; // 其他内网段
};
acl "externalclients" {
!192.168.1.0/24; // 排除内网IP
!10.0.0.0/8; // 排除其他内网段
};
2 配置双向视图
views {
// 内网视图
view "internal" {
matchclients { "internalclients" };
zone "example.com" {
type master;
file "db.example.com.internal";
};
};
// 外网视图
view "external" {
matchclients { "externalclients" };
zone "example.com" {
type master;
file "db.example.com.external";
};
};
};
3 区域文件配置对比
| 文件名 | 内容示例 | 适用场景 |
|---|---|---|
| db.example.com.internal | NS记录指向内网DNS服务器 | 内网解析 |
| db.example.com.external | NS记录指向公网DNS服务器 | 外网解析 |
内网区域文件示例:

$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2023100101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN NS ns2.example.com.
www IN A 192.168.1.100
外网区域文件示例:
$TTL 86400
@ IN SOA dns1.example.com. hostmaster.example.com. (
2023100101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS dns1.example.com.
IN NS dns2.example.com.
www IN A 203.0.113.100
安全加固配置
在named.conf中添加:

// 限制递归查询权限
options {
allowquerycache { any; };
allowquery {
internalclients; // 允许内网递归查询
externalclients; // 允许外网递归查询
localhost; // 本地回环地址
};
};
测试验证
1 内网测试
dig @192.168.1.1 www.example.com +short # 应返回:192.168.1.100
2 外网测试
dig @203.0.113.1 www.example.com +short # 应返回:203.0.113.100
常见问题排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 内外网均解析为同IP | 视图匹配规则错误/区域文件路径错误 | 检查view配置和file路径 |
| 外网无法解析 | 防火墙阻挡DNS端口(53) | 开放防火墙UDP/TCP 53端口 |
| 递归查询失败 | allowquery配置过严 | 调整access控制列表 |
相关问题与解答
Q1:如何添加更多的内部客户端IP段?
A:在named.conf的ACL配置中新增IP段,
acl "internalclients" {
192.168.1.0/24;
10.0.0.0/8;
172.16.0.0/16; // 新增网段
};
修改后需重新加载配置:rndc reload

Q2:如何实现基于地理位置的分离解析?
A:需结合GeoIP库实现,步骤如下:
- 安装GeoIP数据库:
yum install geoipdat - 在视图配置中使用
matchdestination匹配地理信息:view "asia" { matchdestination { "Asia/"; }; zone "example.com" { ... } }; - 根据需求配置不同地区的解析记录
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/196604.html