在linux中部署权威dns服务器需安装bind并配置:一、用yum/dnf/apt安装bind;二、修改/etc/named.conf监听any、allow-query any并启用区域包含;三、创建/var/named/example.com.zone正向解析文件并设权限;四、在named.rfc1912.zones中声明master区域;五、检查语法、启动服务、dig验证。

如果您希望在Linux系统中部署一个权威DNS服务器来解析自定义域名,则需要安装并配置Bind服务。以下是完成此任务的具体步骤:
一、使用包管理器安装Bind
Bind是Linux下最常用的DNS服务器软件,主流发行版均提供预编译包,可通过系统默认包管理器直接安装,避免手动编译带来的依赖和权限问题。
1、对于基于RHEL/CentOS/Rocky Linux/AlmaLinux的系统,执行以下命令:
sudo yum install -y bind bind-utils
2、对于使用dnf作为包管理器的较新版本(如CentOS Stream 9、Rocky Linux 9),运行:
sudo dnf install -y bind bind-utils
3、对于Debian或Ubuntu系统,运行:
sudo apt update && sudo apt install -y bind9 bind9utils
二、配置Bind主配置文件named.conf
Bind的核心行为由/etc/named.conf(RHEL系)或/etc/bind/named.conf(Debian系)控制,需修改监听地址、允许查询范围及区域定义路径,确保服务按预期响应请求。
1、备份原始配置文件:
sudo cp /etc/named.conf /etc/named.conf.backup
2、编辑主配置文件:
sudo vi /etc/named.conf
3、定位options {}块,将listen-on语句修改为监听本机所有IPv4地址:
listen-on { any; };
4、在同一options块中,将allow-query语句设为允许来自任意客户端的查询请求:
allow-query { any; };
5、确认include "/etc/named.rfc1912.zones";行未被注释,该行加载区域定义文件。
三、创建正向解析区域文件
正向解析用于将域名转换为IP地址,需在/var/named/目录下新建对应zone文件,并在named.rfc1912.zones中注册该区域。
1、在/var/named/目录下创建example.com.zone文件:
sudo vi /var/named/example.com.zone
2、写入如下SOA、NS、A记录内容(替换example.com和192.168.10.10为实际域名与DNS服务器IP):
$TTL 86400\n@ IN SOA ns1.example.com. admin.example.com. (\n 2024010101 ; serial\n 3600 ; refresh\n 1800 ; retry\n 604800 ; expire\n 86400 ; minimum\n)\n@ IN NS ns1.example.com.\nns1 IN A 192.168.10.10\nwww IN A 192.168.10.20
3、设置文件属主与权限:
sudo chown root:named /var/named/example.com.zone && sudo chmod 640 /var/named/example.com.zone
四、在named.rfc1912.zones中声明区域
Bind仅加载在主配置中显式声明的区域,必须将新建的example.com区域添加至区域定义文件,否则服务启动时将忽略该zone。
1、编辑区域定义文件:
sudo vi /etc/named.rfc1912.zones
2、在文件末尾追加以下区域声明块(注意分号与大括号闭合):
zone "example.com" IN {\n type master;\n file "example.com.zone";\n allow-update { none; };\n};
五、启动并验证Bind服务
完成配置后,需检查语法正确性、启动服务并测试解析是否生效。任何语法错误都会导致named进程无法启动。
1、检查named.conf及其包含文件的语法:
sudo named-checkconf
2、检查example.com.zone区域文件语法是否合法:
sudo named-checkzone example.com /var/named/example.com.zone
3、启动named服务并设置开机自启:
sudo systemctl start named && sudo systemctl enable named
4、使用dig命令向本地DNS服务器发起查询,验证www.example.com是否返回192.168.10.20:
dig @127.0.0.1 www.example.com A +short










