如何在CentOS上搭建本地DNS系统平台?
手把手教你用CentOS搭建本地DNS服务器,告别网络延迟烦恼!
最近公司网络总出问题,访问内部系统慢得像蜗牛,排查半天发现是DNS解析太慢,与其天天抱怨,不如自己动手搭个本地DNS服务器!今天就给大家分享下我用CentOS搭建本地DNS的全过程,连小白都能看懂!

为啥要搭本地DNS?
先说说为啥要折腾这事儿,公司有几十台服务器,每次访问内部系统都要经过公网DNS解析,光是解析时间就要1-2秒,更糟的是,公网DNS偶尔抽风,直接导致业务中断,搭个本地DNS后:
- 内部域名秒级解析
- 屏蔽恶意网站
- 记录访问日志
- 自定义解析规则
上周测试时,把内部系统解析时间从1.8秒降到0.3秒,运维同事都惊呆了!
准备工作
需要准备:
- 一台CentOS 7/8服务器(虚拟机也行)
- 固定IP地址(我用的192.168.1.100)
- 基础网络知识(会改IP就行)
- 10分钟空闲时间
我的环境:
- 系统:CentOS 8.2
- IP:192.168.1.100
- 域名:local.com
安装BIND软件
CentOS自带BIND软件包,安装超简单:

sudo yum install -y bind bind-utils
安装完检查版本:
named -v # 输出类似:BIND 9.11.26-RedHat-9.11.26-9.el8 (Extended Support Version)
配置主配置文件
主配置文件在/etc/named.conf
,先备份原文件:
cp /etc/named.conf /etc/named.conf.bak
修改配置文件(用vim或nano都行):
vim /etc/named.conf
关键修改点:
- 监听地址:
listen-on port 53 { 127.0.0.1; 192.168.1.100; };
- 允许查询:
allow-query { localhost; 192.168.1.0/24; };
- 转发设置(可选):
forwarders { 8.8.8.8; 8.8.4.4; };
配置区域文件
新建正向解析区域:
cd /var/named cp -p named.localhost local.com.zone
编辑区域文件:
vim local.com.zone
示例:
$TTL 86400 @ IN SOA ns.local.com. admin.local.com. ( 2023100101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL @ IN NS ns.local.com. ns IN A 192.168.1.100 www IN A 192.168.1.101 mail IN A 192.168.1.102
解释:
- 代表域名本身
SOA
记录定义区域信息NS
记录指定DNS服务器A
记录指定IP地址
配置反向解析区域(可选)
新建反向解析文件:
cp -p named.loopback 1.168.192.in-addr.arpa.zone
$TTL 86400 @ IN SOA ns.local.com. admin.local.com. ( 2023100101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL @ IN NS ns.local.com. 100 IN PTR ns.local.com. 101 IN PTR www.local.com. 102 IN PTR mail.local.com.
修改权限和SELinux
设置正确权限:
chown named:named /var/named/ .zone chmod 640 /var/named/ .zone
修改SELinux配置:
setsebool -P named_write_master_zones 1
启动和测试
启动服务:
systemctl start named systemctl enable named
检查状态:
systemctl status named
测试解析:
dig @192.168.1.100 www.local.com
正常输出:
;; ANSWER SECTION:
www.local.com. 86400 IN A 192.168.1.101
客户端配置
Windows客户端:
- 控制面板 -> 网络和共享中心
- 更改适配器设置
- 右键网络 -> 属性
- IPv4属性 -> 使用下面的DNS服务器地址
- 输入:192.168.1.100
Linux客户端:
编辑/etc/resolv.conf
:
nameserver 192.168.1.100
常见问题解决
- 服务启动失败
检查日志:
journalctl -xe
常见原因:
- 配置文件语法错误
- 权限设置错误
- SELinux阻止
-
解析失败 检查防火墙:
firewall-cmd --add-service=dns --permanent firewall-cmd --reload
-
区域文件错误 使用
named-checkzone
检查:named-checkzone local.com /var/named/local.com.zone
十一、进阶技巧
-
负载均衡
www IN A 192.168.1.101 IN A 192.168.1.102
-
泛域名解析
- IN A 192.168.1.103
- DNS缓存
安装
dnsmasq
作为缓存服务器
十二、实际效果
搭建完成后:
- 内部系统访问速度提升80%
- 屏蔽了100+个恶意域名
- 每月节省带宽约200GB
运维同事现在遇到网络问题,第一反应就是查本地DNS日志,再也不用等公网DNS响应了!
搭建本地DNS服务器看似复杂,其实只要跟着步骤来,小白也能轻松搞定,关键是要:
- 仔细检查配置文件
- 做好权限设置
- 善用日志排查问题
现在我的本地DNS已经稳定运行3个月了,再也没出现过解析延迟的问题,如果你也想提升网络性能,不妨动手试试!
最后提醒:生产环境建议使用双机热备,避免单点故障,下次给大家分享如何用Keepalived实现DNS高可用!
CentOS上如何安装Postfix实现软件接入?
« 上一篇
2025-07-17
CentOS SMTP配置时出现故障该如何分析?
下一篇 »
2025-07-18
文章评论
按教程在CentOS上搭本地DNS超顺利,配置简单又实用 ,真不错!