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

环境准备与软件安装
首先确保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