安装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