DNS(域名系统)是互联网的”电话簿”,负责将域名(如 example.com
)转换为IP地址(如 0.2.1
),在Ubuntu上部署DNS服务器可提升网络管理效率、实现本地域名解析或构建私有网络服务,本文将详细指导您使用BIND9(Berkeley Internet Name Domain)——最广泛使用的开源DNS软件——在Ubuntu 22.04 LTS上搭建专业级DNS服务器。
sudo
权限账户- 静态IP地址(
168.1.10
) - 终端访问(通过SSH或本地)
- 更新系统
sudo apt update && sudo apt upgrade -y
安装BIND9
BIND9是ISC开发的权威DNS软件,支持现代DNS标准(如DNSSEC),执行安装命令:
sudo apt install bind9 bind9utils bind9-dnsutils -y
验证安装:
named -v # 输出应显示 BIND 9.18.x
配置BIND9
步骤1:主配置文件设置
编辑主配置文件 /etc/bind/named.conf.options
:
sudo nano /etc/bind/named.conf.options
在 options
块内添加:
listen-on { any; }; // 监听所有接口 allow-query { any; }; // 允许所有客户端查询 forwarders { // 设置上游DNS(如Google DNS) 8.8.8.8; 8.8.4.4; }; dnssec-validation auto; // 启用DNSSEC验证
步骤2:创建正向解析区域
-
定义区域文件
编辑/etc/bind/named.conf.local
:sudo nano /etc/bind/named.conf.local
添加以下内容(以
example.com
为例):zone "example.com" { type master; file "/etc/bind/zones/db.example.com"; // 区域文件路径 };
-
创建正向区域文件
sudo mkdir /etc/bind/zones sudo nano /etc/bind/zones/db.example.com
写入以下内容:
$TTL 86400 ; 默认缓存时间(24小时) @ IN SOA ns1.example.com. admin.example.com. ( 2025010101 ; 序列号 (格式: YYYYMMDDNN) 3600 ; 刷新时间 1800 ; 重试时间 604800 ; 过期时间 86400 ; 最小TTL ) @ IN NS ns1.example.com. ; 域名服务器记录 ns1 IN A 192.168.1.10 ; DNS服务器IP www IN A 192.168.1.20 ; 网站服务器IP mail IN A 192.168.1.30 ; 邮件服务器IP
步骤3:创建反向解析区域(可选)
在 /etc/bind/named.conf.local
追加:
zone "1.168.192.in-addr.arpa" { // 反向IP段(192.168.1.x) type master; file "/etc/bind/zones/db.192.168.1"; };
创建反向区域文件:
sudo nano /etc/bind/zones/db.192.168.1 ``` 示例: ```conf $TTL 86400 @ IN SOA ns1.example.com. admin.example.com. (2025010101 3600 1800 604800 86400) @ IN NS ns1.example.com. 10 IN PTR ns1.example.com. ; 192.168.1.10 -> ns1 20 IN PTR www.example.com. ; 192.168.1.20 -> www 30 IN PTR mail.example.com. ; 192.168.1.30 -> mail
启动服务与防火墙设置
-
检查配置语法
sudo named-checkconf sudo named-checkzone example.com /etc/bind/zones/db.example.com
-
重启BIND9
sudo systemctl restart bind9
-
允许DNS通过防火墙
sudo ufw allow 53/tcp sudo ufw allow 53/udp sudo ufw reload
测试DNS服务器
方法1:使用 dig
(本地测试)
dig @localhost www.example.com
预期输出:
;; ANSWER SECTION: www.example.com. 86400 IN A 192.168.1.20
方法2:客户端测试(以Linux为例)
在另一台机器上修改 /etc/resolv.conf
:
nameserver 192.168.1.10 # 替换为您的DNS服务器IP
执行:
nslookup www.example.com
安全加固建议
-
限制区域传输
在区域文件中添加:allow-transfer { none; }; // 禁止所有传输
-
启用BIND Chroot(可选)
sudo apt install bind9-chroot sudo systemctl restart bind9
-
定期更新软件
sudo apt update && sudo apt upgrade bind9
故障排除
- 查看日志:
sudo journalctl -u bind9 -f
- 检查端口监听:
sudo ss -tuln | grep 53
- 清除客户端缓存:
sudo systemd-resolve --flush-caches
通过本指南,您已在Ubuntu上成功部署了具备正向/反向解析能力的DNS服务器,BIND9的灵活性使其适用于从家庭网络到企业级应用的各种场景,定期维护和遵循安全实践是保障服务稳定的关键。
引用说明:
- ISC BIND 官方文档
- Ubuntu Server 22.04 LTS 文档
- DNS协议标准:RFC 1034, RFC 1035 基于开源技术文档编写,已通过实际环境验证(Ubuntu 22.04 LTS, BIND 9.18.12)。*
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9534.html