如何在CentOS上搭建本地DNS并确保配件支持到位?

代码编程 2025-08-19 790

手把手教你用CentOS搭建本地DNS服务器,告别网络延迟烦恼!

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

CentOS搭建本地DNS-配件支持-配件支持

为啥要搭本地DNS?

先说说我为啥要折腾这事儿,公司有十几个内部系统,每次访问都要先解析域名,但公网DNS服务器经常抽风,解析时间动不动就3秒起步,更气人的是,有些系统根本不需要对外开放,结果还得绕一圈公网DNS。

搭个本地DNS的好处可太多了:

  1. 速度起飞:内部域名秒解析,访问速度提升300%
  2. 安全可控:再也不用担心公网DNS被劫持
  3. 灵活管理:想改哪个域名解析就改哪个
  4. 节省带宽:内部流量不走公网,省下不少流量费

准备工作

要搭DNS服务器,得先准备这些:

  • 一台CentOS 7/8服务器(虚拟机也行)
  • 固定IP地址(我用的192.168.1.100)
  • 域名管理权限(公司内部域名.local)
  • 基础Linux命令知识(不会也没关系,我教你)

安装BIND软件

CentOS自带BIND软件包,安装超简单:

sudo yum install -y bind bind-utils

安装完记得检查版本:

CentOS搭建本地DNS-配件支持-配件支持
named -v

看到版本号就说明安装成功了,我装的是BIND 9.11版本,完全够用。

配置主配置文件

BIND的主配置文件在/etc/named.conf,打开后先改这几个地方:

  1. 监听地址: 把listen-on port 53 { 127.0.0.1; };改成:

    listen-on port 53 { any; };

    这样所有IP都能访问

  2. 允许查询: 把allow-query { localhost; };改成:

    allow-query     { any; };

    (生产环境建议改成内网IP段)

  3. 转发设置: 在最后加上:

    forwarders { 8.8.8.8; 8.8.4.4; };

    这样解析不了的域名会自动转发给Google DNS

配置区域文件

这是最关键的部分!在/etc/named.rfc1912.zones里添加:

zone "local" IN {
    type master;
    file "local.zone";
    allow-update { none; };
};

然后在/var/named目录下创建local.zone文件:

$TTL 86400
@   IN  SOA ns.local. admin.local. (
        2023100101  ; Serial
        3600        ; Refresh
        1800        ; Retry
        604800      ; Expire
        86400 )     ; Minimum TTL
@   IN  NS  ns.local.
ns  IN  A   192.168.1.100
www IN  A   192.168.1.10
mail    IN  A   192.168.1.20

这个配置的意思是:

  • 本地域名是.local
  • DNS服务器IP是192.168.1.100
  • www.local解析到192.168.1.10
  • mail.local解析到192.168.1.20

设置权限并启动服务

配置文件写好后,要改权限:

chown named:named /var/named/local.zone
chmod 640 /var/named/local.zone

然后启动服务:

systemctl start named
systemctl enable named

检查是否启动成功:

systemctl status named

看到active (running)就说明OK了。

测试DNS解析

现在来测试下效果:

  1. 在服务器上用dig命令:

    dig @192.168.1.100 www.local

    应该能看到解析结果

  2. 在其他电脑上改DNS: 把网络设置里的DNS改成192.168.1.100

  3. 测试访问: 在浏览器输入www.local,应该能直接访问到192.168.1.10

遇到的问题及解决方案

我第一次搭建时遇到这些问题:

  1. 解析失败: 检查/var/log/messages日志,发现是SELinux阻止了named访问文件 解决方法:setenforce 0临时关闭SELinux(生产环境建议配置SELinux策略)

  2. 无法启动服务: 检查/etc/named.conf的语法错误 解决方法:用named-checkconf命令检查配置

  3. 解析超时: 发现是防火墙阻止了53端口 解决方法:firewall-cmd --add-port=53/tcp --add-port=53/udp --permanent

进阶配置

等基础功能跑通后,还可以玩这些:

  1. 负载均衡

    www IN  A   192.168.1.10
    www IN  A   192.168.1.11

    这样访问www.local会随机返回两个IP

  2. 泛域名解析

     .test IN  A   192.168.1.200

    所有 .test的域名都解析到192.168.1.200

  3. 反向解析: 在named.rfc1912.zones里添加:

    zone "1.168.192.in-addr.arpa" IN {
     type master;
     file "1.168.192.rev";
    };

    然后创建168.192.rev文件:

    $TTL 86400
    @   IN  SOA ns.local. admin.local. (
         2023100101  ; Serial
         3600        ; Refresh
         1800        ; Retry
         604800      ; Expire
         86400 )     ; Minimum TTL

@ IN NS ns.local. 100 IN PTR ns.local. 10 IN PTR www.local.


### 十、
搭完这个本地DNS服务器后,公司内部系统访问速度明显提升,再也不用等那3秒的解析时间了,而且管理起来特别方便,想改哪个域名解析直接改配置文件就行。
建议大家先在虚拟机里测试,等熟练了再部署到生产环境,记得定期备份配置文件,万一出问题能快速恢复。
最后提醒下,BIND的配置文件对格式要求很严格,每个分号、空格都不能错,建议用文本编辑器(如VSCode)的语法高亮功能,能避免很多低级错误。
希望这篇教程能帮到大家,如果有任何问题欢迎留言交流!下次我准备分享如何用CentOS搭建邮件服务器,感兴趣的朋友记得关注哦!
CentOS DNS服务器配置的用户培训该如何开展?
« 上一篇 2025-08-19
CentOS上安装Postfix能实现哪些产品功能?
下一篇 » 2025-08-19

文章评论