Ubuntu 26.04部署 DNS 服务器 1. 概述本文档介绍在 Ubuntu 26.04 上使用 BIND9 部署私有 DNS 服务器的完整步骤。通过配置正向解析域名 → IP和反向解析IP → 域名为内网提供域名解析服务。示例环境项目值DNS 服务器 IP192.168.100.6域名ns1.zycgl.com允许查询网段192.168.100.0/24上游转发器223.5.5.5,223.6.6.6阿里云 DNS2. 环境准备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配置内容zonezycgl.com{typemaster;file/etc/bind/db.zycgl.com;};zone100.168.192.in-addr.arpa{typemaster;file/etc/bind/db.192.168.100;};6. 配置正向解析区域文件创建并编辑正向解析区域文件/etc/bind/db.zycgl.comsudovim/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记录说明记录类型解析目标说明NSns1.zycgl.com.域名服务器记录A192.168.100.6根域名指向 DNS 服务器本身web01A192.168.100.7Web 服务器 01mysql01A192.168.100.8MySQL 数据库服务器7. 配置反向解析区域文件创建并编辑反向解析区域文件/etc/bind/db.192.168.100sudovim/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 记录对应域名6ns1.zycgl.com.根域名7web01.zycgl.com.Web 服务器 018mysql01.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 服务器本机执行# 测试正向解析dig127.0.0.1 web01.zycgl.com# 测试反向解析dig127.0.0.1-x192.168.100.8# 测试外网域名验证转发器dig127.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/bindBIND 工作缓存目录常用命令命令作用named-checkconf检查主配置文件语法named-checkzone zone file检查区域文件语法rndc reload热重载配置rndc status查看服务器状态systemctl restart named重启 BIND 服务