同一域名example.com下域控制器与Apache服务的BIND拆分DNS配置咨询
同一域名example.com下域控制器与Apache服务的BIND拆分DNS配置咨询
嗨,这个问题其实很典型——同一个域名既要承载AD域服务,又要跑Web服务,核心冲突在于DNS解析的指向矛盾,用BIND的**拆分DNS(视图View功能)**就能完美解决,我给你一步步拆解:
核心思路:拆分DNS(视图View)
简单来说,就是让BIND根据请求客户端的IP地址范围,返回不同的example.com解析结果:
- 域内客户端(比如192.168.234.0/24、192.168.78.0/24网段的设备)访问
example.com时,解析到域控制器,保证AD认证、域服务正常运行 - 其他客户端(或者需要访问Web服务的设备)访问
example.com时,解析到Apache服务器192.168.234.232
配置位置与具体步骤
1. BIND主配置文件修改
主配置文件路径根据系统不同略有差异:
- RHEL/CentOS系:
/etc/named.conf - Debian/Ubuntu系:
/etc/bind/named.conf
打开文件,替换原有example.com区域配置,添加视图定义:
// 内部视图:匹配域内客户端IP,返回AD相关DNS记录 view "internal" { match-clients { 192.168.234.0/24; 192.168.78.0/24; localhost; }; recursion yes; // 允许内部客户端递归查询,适配AD需求 zone "example.com" IN { type master; file "internal/example.com.zone"; // 内部区域文件路径,后续要创建 allow-update { none; }; }; // 可按需添加内部反向解析域等 }; // 外部视图:匹配所有其他客户端,返回Apache服务器记录 view "external" { match-clients { any; }; recursion no; // 禁止外部客户端递归查询,提升安全性 zone "example.com" IN { type master; file "external/example.com.zone"; // 外部区域文件路径,后续要创建 allow-update { none; }; }; };
2. 创建内部区域文件(AD专用)
区域文件存放路径:
- RHEL/CentOS系:
/var/named/internal/(需先创建internal目录) - Debian/Ubuntu系:
/var/lib/bind/internal/
创建example.com.zone文件,包含AD所需的所有记录(可从AD自带的DNS导出记录来减少手动编写错误):
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2024052001 ; 序列号,每次修改要递增 3600 ; 刷新时间 1800 ; 重试时间 604800 ; 过期时间 86400 ; 最小TTL ) @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; 域控制器的A记录 ns1 IN A 192.168.234.5 ns2 IN A 192.168.78.5 ; 域根A记录(指向主DC) @ IN A 192.168.234.5 ; AD必需的SRV记录(Kerberos、LDAP等) _kerberos._tcp.example.com. IN SRV 0 100 88 ns1.example.com. _kerberos._tcp.example.com. IN SRV 0 100 88 ns2.example.com. _ldap._tcp.example.com. IN SRV 0 100 389 ns1.example.com. _ldap._tcp.example.com. IN SRV 0 100 389 ns2.example.com. ; 按需添加其他AD相关记录(如GC、KDC记录等)
3. 创建外部区域文件(Web服务专用)
同样在对应路径创建external/example.com.zone文件,仅保留指向Apache的记录:
$TTL 86400 @ IN SOA ns1.example.com. admin.example.com. ( 2024052001 ; 序列号,需与内部文件不同或递增 3600 ; 刷新时间 1800 ; 重试时间 604800 ; 过期时间 86400 ; 最小TTL ) @ IN NS ns1.example.com. @ IN NS ns2.example.com. ; 域名指向Apache服务器 @ IN A 192.168.234.232 ; 若需要www子域名,可添加 www IN A 192.168.234.232 ; DNS服务器的A记录(外部可访问的话用DC或其他公网DNS IP) ns1 IN A 192.168.234.5 ns2 IN A 192.168.78.5
4. 权限配置与服务重启
- 确保区域文件所属用户为BIND服务用户(RHEL是
named,Debian是bind):# RHEL示例 chown -R named:named /var/named/internal /var/named/external # Debian示例 chown -R bind:bind /var/lib/bind/internal /var/lib/bind/external - 重启BIND服务生效:
# RHEL/CentOS systemctl restart named # Debian/Ubuntu systemctl restart bind9
测试验证
- 在域内客户端执行
dig example.com或nslookup example.com,应返回域控制器的IP(192.168.234.5或192.168.78.5) - 在非域内客户端执行同样命令,应返回Apache服务器的IP(192.168.234.232)
备注:内容来源于stack exchange,提问作者Mena
相关产品推荐
相关产品推荐

