Ubuntu 26.04部署 DNS 服务器
1. 概述
本文档介绍在 Ubuntu 26.04 上使用 BIND9 部署私有 DNS 服务器的完整步骤。通过配置正向解析(域名 → IP)和反向解析(IP → 域名),为内网提供域名解析服务。
示例环境:
| 项目 | 值 |
|---|---|
| DNS 服务器 IP | 192.168.100.6 |
| 域名 | ns1.zycgl.com |
| 允许查询网段 | 192.168.100.0/24 |
| 上游转发器 | 223.5.5.5,223.6.6.6(阿里云 DNS) |
2. 环境准备
2.1 设置时区
sudotimedatectl set-timezone Asia/Shanghai2.2 更新软件包列表
sudoaptupdate3. 安装 BIND9
安装 BIND9 主程序及配套工具:
sudoaptinstallbind9 bind9-utils bind9-doc-y安装完成后,BIND9 服务会自动启动。可通过以下命令检查状态:
sudosystemctl status named4. 配置全局选项
编辑/etc/bind/named.conf.options,配置监听地址、查询权限和上游转发器。
sudovim/etc/bind/named.conf.options完整配置内容:
options{directory"/var/cache/bind";listen-on port53{any;};listen-on-v6 port53{any;};allow-query{127.0.0.1;192.168.100.0/24;};allow-transfer{none;};forwarders{223.5.5.5;223.6.6.6;};forward first;dnssec-validation auto;auth-nxdomain no;recursionyes;};参数说明
| 参数 | 说明 |
|---|---|
listen-on port 53 { any; } | 监听所有 IPv4 地址的 53 端口 |
allow-query | 允许发起查询的地址范围 |
allow-transfer { none; } | 禁止区域传输,防止 DNS 信息泄露 |
forwarders | 上游 DNS 转发地址 |
forward first | 优先使用转发器,失败时尝试递归解析 |
recursion yes | 允许递归查询 |
校验配置
sudonamed-checkconf无输出表示配置语法正确。
5. 配置解析区域
编辑/etc/bind/named.conf.local,添加正向解析和反向解析区域。
sudovim/etc/bind/named.conf.local配置内容:
zone"zycgl.com"{typemaster;file"/etc/bind/db.zycgl.com";};zone"100.168.192.in-addr.arpa"{typemaster;file"/etc/bind/db.192.168.100";};6. 配置正向解析区域文件
创建并编辑正向解析区域文件/etc/bind/db.zycgl.com:
sudovim/etc/bind/db.zycgl.com完整内容:
$TTL604800@ IN SOA ns1.zycgl.com. root.zycgl.com.(2026062801;Serial604800;Refresh86400;Retry2419200;Expire604800);Negative Cache TTL @ IN NS ns1.zycgl.com. @ IN A192.168.100.6 ns1 IN A192.168.100.6 web01 IN A192.168.100.7 mysql01 IN A192.168.100.8记录说明
| 记录 | 类型 | 解析目标 | 说明 |
|---|---|---|---|
@ | NS | ns1.zycgl.com. | 域名服务器记录 |
@ | A | 192.168.100.6 | 根域名指向 DNS 服务器本身 |
web01 | A | 192.168.100.7 | Web 服务器 01 |
mysql01 | A | 192.168.100.8 | MySQL 数据库服务器 |
7. 配置反向解析区域文件
创建并编辑反向解析区域文件/etc/bind/db.192.168.100:
sudovim/etc/bind/db.192.168.100完整内容:
$TTL604800@ IN SOA ns1.zycgl.com. root.zycgl.com.(2026062801;Serial604800;Refresh86400;Retry2419200;Expire604800);Negative Cache TTL @ IN NS ns1.zycgl.com.6IN PTR ns1.zycgl.com.7IN PTR web01.zycgl.com.8IN PTR mysql01.zycgl.com.记录说明
| IP 末尾 | PTR 记录 | 对应域名 |
|---|---|---|
6 | ns1.zycgl.com. | 根域名 |
7 | web01.zycgl.com. | Web 服务器 01 |
8 | mysql01.zycgl.com. | MySQL 数据库服务器 |
设置文件权限
sudochownroot:bind /etc/bind/db.zycgl.com /etc/bind/db.192.168.100sudochmod640/etc/bind/db.zycgl.com /etc/bind/db.192.168.1008. 校验区域文件
在重启服务前,务必校验区域文件语法:
校验正向区域
sudonamed-checkzone zycgl.com /etc/bind/db.zycgl.com期望输出:
zone zycGL.com/IN: loaded serial 1 OK校验反向区域
sudonamed-checkzone100.168.192.in-addr.arpa /etc/bind/db.192.168.100期望输出:
zone 100.168.192.in-addr.arpa/IN: loaded serial 1 OK9. 重启并启用 BIND9 服务
sudosystemctl restart namedsudosystemctlenablenamed检查服务状态:
sudosystemctl status named10. 防火墙配置
如果启用了 UFW 防火墙,需放行 DNS 服务端口:
sudoufw allow53/tcpsudoufw allow53/udpsudoufw reload11. 测试验证
11.1 本地测试
在 DNS 服务器本机执行:
# 测试正向解析dig@127.0.0.1 web01.zycgl.com# 测试反向解析dig@127.0.0.1-x192.168.100.8# 测试外网域名(验证转发器)dig@127.0.0.1 www.baidu.com11.2 客户端测试
在局域网其他机器上,将 DNS 服务器地址设置为192.168.100.6,然后测试:
nslookupweb01.zycgl.com192.168.100.612. 维护与排错
查看日志
sudojournalctl-unamed-f重新加载配置(不中断服务)
sudorndc reload修改区域文件后递增 Serial
每次修改区域文件中的记录时,必须将Serial值加 1,否则从服务器和缓存不会同步更新。
13. 附录
文件清单
| 文件路径 | 用途 |
|---|---|
/etc/bind/named.conf.options | 全局选项配置 |
/etc/bind/named.conf.local | 本地区域声明 |
/etc/bind/db.zycgl.com | 正向解析区域数据 |
/etc/bind/db.192.168.100 | 反向解析区域数据 |
/var/cache/bind | BIND 工作缓存目录 |
常用命令
| 命令 | 作用 |
|---|---|
named-checkconf | 检查主配置文件语法 |
named-checkzone <zone> <file> | 检查区域文件语法 |
rndc reload | 热重载配置 |
rndc status | 查看服务器状态 |
systemctl restart named | 重启 BIND 服务 |
