在CentOS 7系统中配置DNS子域(Subdomain)是网络管理中常见的需求,尤其对于需要组织化域名结构的企业或复杂网络环境,子域允许在主域名下创建独立的子域名空间,便于管理和扩展,本文将详细介绍CentOS 7下DNS子域的配置步骤、注意事项及相关实践。

DNS服务器基础准备
在配置子域之前,需确保主DNS服务器已正确安装并运行BIND(Berkeley Internet Name Domain)服务,CentOS 7可通过以下命令安装BIND:
sudo yum install bind bind-utils -y
安装完成后,检查named服务状态并启用开机启动:
sudo systemctl start named sudo systemctl enable named sudo systemctl status named
确保防火墙允许DNS流量(默认TCP/UDP 53端口):
sudo firewall-cmd --permanent --add-service=dns sudo firewall-cmd --reload
主域区域文件配置
假设主域名为example.com,需先编辑主域的区域文件,通常位于/var/named/目录下,文件名与区域配置对应,编辑/etc/named.conf文件,添加主域区域声明:
zone "example.com" IN {
type master;
file "example.com.zone";
allow-update { none; };
};
创建区域文件/var/named/example.com.zone,确保权限正确(chown named:named example.com.zone示例如下:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025081501 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
IN NS ns1.example.com.
IN MX 10 mail.example.com.
ns1 IN A 192.168.1.1
www IN A 192.168.1.2
子域区域配置
以创建子域sub.example.com为例,需在主DNS服务器中完成以下步骤:
-
编辑主域区域文件
在example.com.zone中添加子域的NS记录:
sub IN NS ns1.sub.example.com.
-
创建子域区域文件
在/etc/named.conf中添加子域区域声明:zone "sub.example.com" IN { type master; file "sub.example.com.zone"; allow-update { none; }; };创建子域区域文件
/var/named/sub.example.com.zone示例:$TTL 86400 @ IN SOA ns1.sub.example.com. admin.sub.example.com. ( 2025081501 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ; Minimum TTL ) IN NS ns1.sub.example.com. IN A 192.168.1.10 ns1 IN A 192.168.1.10 test IN A 192.168.1.11 -
配置子域委派
子域委派需在父域(example.com)的NS记录中指向子域的权威服务器,上述步骤1已完成此配置,若子域由独立服务器管理,需确保父域的NS记录指向子域服务器的IP地址。
验证与测试
配置完成后,使用dig或nslookup工具验证解析结果:
dig sub.example.com @192.168.1.1 nslookup test.sub.example.com 192.168.1.1
检查返回的SOA、NS及A记录是否正确,若解析失败,可通过named-checkzone命令排查区域文件语法错误:
named-checkzone sub.example.com /var/named/sub.example.com.zone
常见问题与优化
-
区域文件权限
确保区域文件所有者为named用户,权限为640,避免权限问题导致服务异常。 -
序列号(Serial)管理
修改区域文件后需递增序列号,否则从服务器不会同步更新。
-
安全加固
禁用DNS查询转发(forwarders)或配置ACL限制查询来源,防止DNS放大攻击。
子域与主域的DNS服务器分离
若子域由独立DNS服务器管理,需在父域配置中添加子域服务器的NS记录,并在子域服务器上配置对应的区域文件。
- 父域
example.com.zone中:sub IN NS ns2.sub.example.com. sub IN NS ns3.sub.example.com.
- 子域服务器
ns2.sub.example.com上配置sub.example.com区域,确保IP地址与父域NS记录一致。
相关问答FAQs
Q1: 如何在CentOS 7中为子域配置动态更新(DDNS)?
A: 需在区域声明中允许特定客户端更新,并配置密钥认证,步骤如下:
- 生成TSIG密钥:
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST client-key - 将密钥添加到
/etc/named.conf的key和zone中:key "client-key" { algorithm HMAC-SHA256; secret "生成的密钥字符串"; }; zone "sub.example.com" IN { ... allow-update { key client-key; }; }; - 客户端使用
nsupdate命令配合密钥文件动态更新记录。
Q2: 子域解析失败但主域正常,可能的原因及排查方法?
A: 常见原因及解决方案:
- 父域NS记录错误:检查
example.com.zone中子域的NS记录是否指向正确的IP地址。 - 子域区域文件语法错误:使用
named-checkzone验证文件语法。 - 防火墙或SELinux阻拦:检查防火墙规则及SELinux状态(
sestatus),必要时临时关闭测试(setenforce 0)。 - 递归查询未启用:确保
/etc/named.conf中recursion yes;已配置,或客户端指定正确的DNS服务器IP。