首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >手把手教学 | 在Debian 12上搭建企业级 BIND DNS服务器,内网解析不求人!

手把手教学 | 在Debian 12上搭建企业级 BIND DNS服务器,内网解析不求人!

作者头像
一根头发丝的宽度
发布2026-05-06 18:33:56
发布2026-05-06 18:33:56
1990
举报

在本文中,我将通过实践演示如何在 Debian 12 上设置 BIND DNS 服务器。对于网络管理员和开发人员来说,设置域名系统(DNS)服务器是一项至关重要的任务。BIND(伯克利互联网域名)是使用最广泛的 DNS 软件解决方案之一,以其可靠性和灵活性著称。


前置条件

在开始安装过程之前,请确保您具备以下条件:

  • 具有 root 或 sudo 访问权限的 Debian 12 系统(点击这里访问安装Debian系统)
  • 对网络概念和 Linux 命令行操作有基本了解
  • 稳定的网络连接
  • 充足的系统资源(至少 1GB 内存和 10GB 存储空间)

第1步:安装 BIND

首先,在 Debian 12 系统上安装 BIND 及其相关实用程序。

碎步1:更新软件包列表

首先,更新系统的软件包列表,确保安装的是最新版本:

代码语言:javascript
复制
sudo apt update
碎步2:安装 BIND 软件包

使用以下命令安装 BIND 软件和相关工具:

代码语言:javascript
复制
sudo apt install bind9 bind9utils dnsutils

该命令安装 BIND DNS 服务器、实用程序和 DNS 查找工具。

碎步3:验证安装情况

安装完成后,验证 BIND 版本:

代码语言:javascript
复制
sudo named -v

将看到显示已安装 BIND 版本的输出。

BIND 版本输出


第2步:了解 BIND 配置文件

BIND 使用位于 /etc/bind/ 目录下的多个配置文件。让我们来看看这些关键文件:

bind目录文件

named.conf: 这是主配置文件,你会看到最后几行包含其他配置文件的语句。如下:

代码语言:javascript
复制
oneh@ns-01:~$ cat /etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

named.conf.options: 该文件包含 DNS 服务器的全局选项:

代码语言:javascript
复制
oneh@ns-01:~$ cat /etc/bind/named.conf.options
options {
        directory "/var/cache/bind";

        // ...
        // 省略中间的注释
        dnssec-validation auto;

        listen-on-v6 { any; };
};

named.conf.local: 在这里,可以定义本地区域文件:

代码语言:javascript
复制
oneh@ns-01:~$ cat /etc/bind/named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

第3步:配置 BIND 服务器选项

配置 BIND 服务器的主要选项。

碎步1:配置转发器

使用任意编辑器打开并编辑 named.conf.options 文件,添加以下配置:

代码语言:javascript
复制
options {
        directory "/var/cache/bind";  //工作目录

        recursion yes;  // 开启递归查询
        allow-recursion { trusted; };
        listen-on { 192.168.2.201; };
        allow-transfer { none; };
        forwarders {
            223.5.5.5;
            223.6.6.6;
        };  // 转发查询到公共DNS

        dnssec-validation auto;

        auth-nxdomain no;
        listen-on-v6 { any; };  // 监听所有IPv6地址
};

该配置设置了转发器(使用 阿里云 服务器),启用了受信任客户端的递归,并配置了监听接口。

碎步2:定义访问控制列表(ACLs)

要限制对受信任网络的查询,请在 named.conf.options 文件开头添加 ACL:

代码语言:javascript
复制
acl "trusted" {
    192.168.2.0/24;
    localhost;
    localnets;
};

第4步:设置区域

为域名设置正向和反向区域。

碎步1:配置正向区域

编辑named.conf.local文件,添加如下定义:

代码语言:javascript
复制
zone "oneh.com" {
    type master;  // 主服务器
    file "/etc/bind/zones/cluster.oneh.com";  // 区域文件路径
    allow-transfer { none; };
};
碎步2:创建正向区域文件

为区域文件创建一个新目录:

代码语言:javascript
复制
sudo mkdir /etc/bind/zones

创建并编辑区域文件添加如下内容:

代码语言:javascript
复制
oneh@ns-01:/etc/bind$ sudo vi /etc/bind/zones/cluster.oneh.com
oneh@ns-01:/etc/bind$ cat /etc/bind/zones/cluster.oneh.com
$TTL    604800
@       IN      SOA     ns-01.oneh.com. admin.oneh.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns-01.oneh.com.
@       IN      A       192.168.2.201
ns-01   IN      A       192.168.2.201
www     IN      A       192.168.2.201
碎步3:配置反向区域

将反向区域添加到 named.conf.local

代码语言:javascript
复制
// 反向区域
zone "2.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/cluster.192.168.2";
    allow-transfer { none; };
};
碎步4:创建反向区域文件

创建并编辑区域文件添加如下内容:

代码语言:javascript
复制
oneh@ns-01:/etc/bind$ sudo vi /etc/bind/zones/cluster.192.168.2
oneh@ns-01:/etc/bind$ cat /etc/bind/zones/cluster.192.168.2
$TTL    604800
@       IN      SOA     ns-01.oneh.com. admin.oneh.com. (
                  3     ; Serial
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
@       IN      NS      ns-01.oneh.com.
201     IN      PTR     ns-01.oneh.com.
201     IN      PTR     www.oneh.com.

第5步:测试配置

在重新启动 BIND 服务之前,检查是否存在任何配置错误至关重要。

碎步1:语法检查

运行命令 sudo named-checkconf 检查配置文件的语法是否正确。如果正确将没有任何输出,否则将予以提示错误语法的文件以及出错的位置。

碎步2:区域文件验证

使用如下命令验证区域文件:

代码语言:javascript
复制
sudo named-checkzone oneh.com /etc/bind/zones/cluster.oneh.com
sudo named-checkzone 2.168.192.in-addr.arpa /etc/bind/zones/cluster.192.168.2

如果区域文件格式正确,这些命令应返回 “OK”,如下图:


第6步:启动 BIND 并加入开机启动

现在已经配置好 BIND,启动服务并使其在开机时启动。

注意下面的命令如果提示报错找不到 bind9 服务,请使用 named。

  • 启动 BIND 服务:sudo systemctl start bind9
  • 加入开机启动:sudo systemctl enable bind9
  • 查看运行情况:sudo systemctl status bind9
第7步:测试DNS解析

测试 BIND 服务器,确保它能正确解析名称。

碎步1:使用 dig 命令

测试正向查找:

代码语言:javascript
复制
dig @192.168.2.201 www.oneh.com

测试反向查找:

代码语言:javascript
复制
dig @192.168.2.201 -x 192.168.2.201
碎步2:使用 nslookup 命令

测试正向查找:

代码语言:javascript
复制
nslookup www.oneh.com 192.168.2.201

测试反向解析:

代码语言:javascript
复制
nslookup 192.168.2.201 192.168.2.201
碎步3:添加其他域名解析

在正向区域文件添加两条记录,重启 bind9 服务后测试:

代码语言:javascript
复制
esxi-01 IN A 192.168.2.200
vcenter IN A 192.168.2.202

在反向区域添加两条记录,重启 bind9 服务后在局域网内其他设备添加DNS服务器地址后测试:


常见问题

即使进行了细心配置,也可能会遇到一些问题。

碎步1:BIND 服务无法启动

使用命令sudo journalctl -u named查找可能显示配置问题的错误信息。

碎步2:域名解析失败

如果域名解析没用,请:

  • 验证客户端是否使用了正确的 DNS 服务器。
  • 检查防火墙设置,确保 53 端口(TCP 和 UDP)是开放的。
  • 检查区域文件是否有错别字或不正确的 IP 地址。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一根头发丝的宽度 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置条件
  • 第1步:安装 BIND
    • 碎步1:更新软件包列表
    • 碎步2:安装 BIND 软件包
    • 碎步3:验证安装情况
  • 第2步:了解 BIND 配置文件
  • 第3步:配置 BIND 服务器选项
    • 碎步1:配置转发器
    • 碎步2:定义访问控制列表(ACLs)
  • 第4步:设置区域
    • 碎步1:配置正向区域
    • 碎步2:创建正向区域文件
    • 碎步3:配置反向区域
    • 碎步4:创建反向区域文件
  • 第5步:测试配置
    • 碎步1:语法检查
    • 碎步2:区域文件验证
  • 第6步:启动 BIND 并加入开机启动
  • 第7步:测试DNS解析
    • 碎步1:使用 dig 命令
    • 碎步2:使用 nslookup 命令
    • 碎步3:添加其他域名解析
  • 常见问题
    • 碎步1:BIND 服务无法启动
    • 碎步2:域名解析失败
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档