如何在Linux上设置DNS服务器

来源:语言推理作者:头衔:全栈工程师
导读:本期聚焦于小伙伴创作的《如何在Linux上设置DNS服务器》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置DNS服务器》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中搭建DNS服务器可以满足局域网内自定义域名解析的需求,也可以作为公共DNS服务对外提供解析能力,其中BIND是最常用的DNS服务软件,兼容性高且功能完善。本文将基于CentOS系统演示完整的搭建流程。

如何在Linux上设置DNS服务器

环境准备与软件安装

首先确保Linux系统已经联网,并且拥有root权限,然后安装BIND相关软件包,执行以下命令:

# 安装BIND服务及工具包
yum install -y bind bind-utils
# 查看BIND服务状态
systemctl status named

安装完成后,BIND的主配置文件位于/etc/named.conf,区域文件默认存放在/var/named/目录下。

修改主配置文件

打开/etc/named.conf文件,修改监听地址和允许查询的客户端范围,原始配置如下:

options {
    listen-on port 53 { 127.0.0.1; };
    listen-on-v6 port 53 { ::1; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { localhost; };
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

将监听地址改为any,允许查询的客户端也改为any,修改后对应配置段如下:

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
    recursion yes;
    dnssec-enable yes;
    dnssec-validation yes;
    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

同时在配置文件末尾添加自定义区域,示例区域为test.local,配置如下:

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

创建区域解析文件

/var/named/目录下创建test.local.zone文件,内容如下:

$TTL 86400
@   IN  SOA ns.test.local. admin.test.local. (
        2024010101  ; 序列号
        3600        ; 刷新时间
        1800        ; 重试时间
        604800      ; 过期时间
        86400       ; 最小TTL
)
@   IN  NS  ns.test.local.
ns  IN  A   192.168.0.100
www IN  A   192.168.0.101
api IN  A   192.168.0.102

修改区域文件的属主和权限,确保named服务可以读取:

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

启动服务与验证解析

先检查配置文件语法是否正确:

named-checkconf /etc/named.conf
named-checkzone test.local /var/named/test.local.zone

如果语法检查没有报错,启动并设置开机自启BIND服务:

systemctl start named
systemctl enable named

使用nslookup命令验证解析是否生效,执行以下命令:

nslookup www.test.local 192.168.0.100

如果返回192.168.0.101的IP地址,说明DNS服务器设置成功,局域网内其他设备将DNS地址设置为192.168.0.100即可使用该自定义解析服务。

常见问题排查

  • 如果服务启动失败,查看/var/log/messages日志文件,确认配置文件语法或权限问题
  • 解析失败时可以暂时关闭防火墙或者开放53端口,命令为firewall-cmd --add-port=53/udp --permanent && firewall-cmd --reload
  • 确保区域文件的序列号每次修改后递增,否则从服务器无法同步更新

LinuxDNS_serverBIND域名解析网络配置修改时间:2026-06-19 07:27:13

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。