CentOS本地DNS解析配置指南
在CentOS系统中,本地DNS解析主要通过/etc/hosts文件或bind软件实现,前者适用于少量静态域名映射,后者则支持复杂的企业级DNS服务,本文将详细讲解两种方式的配置方法、验证技巧及常见问题处理。

通过/etc/hosts实现基础解析
/etc/hosts是Linux系统中最基础的本地域名解析工具,优先级高于外部DNS服务器,其核心功能是将域名与IP地址直接绑定,适合小型网络或测试环境。
文件结构与语法
/etc/hosts的每行格式为:IP地址 域名 [别名],多个域名用空格分隔。
0.0.1 localhost.localdomain localhost 192.168.1.100 webserver.example.com web
- 第一列必须是有效IP(IPv4或IPv6);
- 第二列为完整域名(FQDN),第三列为简短别名;
- 注释以开头,如
# 测试环境域名映射。
配置步骤
- 编辑文件:使用
vi或nano打开/etc/hosts,添加需解析的记录。 - 保存生效:修改后无需重启服务,系统会立即加载新配置。
验证方法
执行ping 域名命令,若返回对应IP则解析成功。
[root@localhost ~]# ping webserver.example.com PING webserver.example.com (192.168.1.100) 56(84) bytes of data. 64 bytes from webserver.example.com (192.168.1.100): icmp_seq=1 ttl=64 time=0.234 ms
通过BIND实现企业级DNS服务
对于需要动态更新、区域转发等高级功能的环境,建议部署bind(Berkeley Internet Name Domain)软件,以下以CentOS 7为例演示安装与配置。
安装与启动服务
# 安装bind及相关工具 yum install -y bind bind-utils # 启动named服务并设置开机自启 systemctl start named systemctl enable named
核心配置文件说明
BIND的主要配置文件位于/etc/named/目录下,关键文件包括:
| 文件路径 | 功能描述 |
|-------------------------|-----------------------------------|
| /etc/named.conf | 主配置文件,定义全局参数与区域 |
| /var/named/example.zone | 正向解析区域文件(示例) |
| /var/named/192.168.1.arpa | 反向解析区域文件 |

配置正向解析区域
以example.com域名为例,在/etc/named.conf中添加正向区域声明:
zone "example.com" IN {
type master;
file "example.zone";
allow-update { none; };
};
随后创建区域文件/var/named/example.zone如下:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025101001 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.example.com.
ns1 IN A 192.168.1.10
web IN A 192.168.1.20
$TTL:默认资源记录生存时间;SOA:起始授权机构,需填写主DNS服务器及管理员邮箱;NS:指定域名服务器;A:将域名映射到IPv4地址。
配置反向解析区域
反向解析用于通过IP查询域名,需在/etc/named.conf中添加:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.arpa";
};
区域文件/var/named/192.168.1.arpa示例如下:
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2025101001 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ; Minimum TTL
)
@ IN NS ns1.example.com.
10 IN PTR ns1.example.com.
20 IN PTR web.example.com.
- 反向区域的命名规则为“网络号.in-addr.arpa”(如
168.1.x对应168.192.in-addr.arpa); PTR记录用于关联IP与域名。
权限与防火墙配置
确保区域文件属主为named用户:

chown named:named /var/named/example.zone chown named:named /var/named/192.168.1.arpa
开放DNS服务端口(53/TCP+UDP):
firewall-cmd --permanent --add-service=dns firewall-cmd --reload
验证服务
- 检查配置语法:
named-checkconf(主配置)、named-checkzone example.com /var/named/example.zone(区域文件)。 - 测试解析:
dig @localhost example.com A # 正向解析 dig -x 192.168.1.20 # 反向解析
常见问题排查
- 解析失败:检查
/etc/resolv.conf中的nameserver是否指向本地DNS(127.0.0.1),或确认防火墙未阻断53端口。 - 区域文件报错:确保
$ORIGIN指令正确(如$ORIGIN example.com.),且TTL值符合规范。 - 权限错误:区域文件必须由
named用户读写,否则服务无法加载。
相关问答FAQs
Q1:为什么修改了/etc/hosts后,ping仍显示旧IP?
A:可能是DNS缓存导致,可尝试清除缓存:nscd -i hosts(若有nscd服务)或重启网络服务systemctl restart network。
Q2:BIND服务启动失败,日志提示“permission denied”?
A:通常因区域文件权限不当引起,需确保文件属主为named用户(如chown named:named /var/named/example.zone),并移除不必要的写权限(如chmod 640 /var/named/example.zone)。