安装bind9,编辑/etc/bind/named.conf.options和/etc/bind/db.local,设置allowquerycache { any; },重启服务systemctl restart bind
Ubuntu 16.04 上搭建 DNS 服务器详解
环境准备与软件安装
系统要求
- 操作系统:Ubuntu 16.04 LTS(Xenial Xerus)
- 硬件要求:最低 1 核 CPU、512MB 内存
- 网络环境:服务器需有固定 IP 地址
安装 BIND DNS 服务器
# 更新软件源并安装 bind9 sudo aptget update sudo aptget install bind9 y
检查安装状态
# 查看 BIND 版本 sudo named v # 预期输出:BIND 9.x.x (Extended Bird)
命令 | 作用 |
---|---|
sudo named v |
查看 BIND 版本 |
sudo service bind9 status |
检查服务状态 |
配置文件解析与修改
主配置文件路径
/etc/bind/named.conf
:主配置文件/etc/bind/named.conf.options
:全局选项/etc/bind/db.*
:区域文件存放目录
修改全局配置
编辑 /etc/bind/named.conf.options
,添加以下内容:
options { // 监听所有接口 listenon port 53 { any; }; // 允许所有客户端查询 allowquery { any; }; // 递归查询配置(可选) recursion yes; // 设置转发器(可选) // forwarders { 8.8.8.8; 8.8.4.4; }; };
本地回环配置
确保 /etc/bind/named.conf.local
包含:
// 允许本地回环查询 zone "localhost" { type master; file "/etc/bind/db.local"; };
配置正向解析区域
创建区域文件
sudo cp /etc/bind/db.local /etc/bind/db.example.com
编辑区域文件
修改 /etc/bind/db.example.com
:
$TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 2 ; Refresh 60 ; Retry 86400 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.example.com. @ IN A 192.168.1.1 ns1 IN A 192.168.1.1 www IN A 192.168.1.2
添加区域配置
在 /etc/bind/named.conf.local
中添加:
zone "example.com" { type master; file "/etc/bind/db.example.com"; };
配置反向解析区域
创建反向区域文件
sudo cp /etc/bind/db.127 /etc/bind/db.192.168.1
编辑反向区域文件
修改 /etc/bind/db.192.168.1
:
$TTL 604800 @ IN SOA ns1.example.com. admin.example.com. ( 2 ; Refresh 60 ; Retry 86400 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.example.com. 1 IN PTR ns1.example.com. 2 IN PTR www.example.com.
添加反向区域配置
在 /etc/bind/named.conf.local
中添加:
zone "1.168.192.inaddr.arpa" { type master; file "/etc/bind/db.192.168.1"; };
权限与防火墙配置
设置区域文件权限
# 修改属主为 bind用户组 sudo chown root:bind /etc/bind/db.* sudo chmod 640 /etc/bind/db.*
调整防火墙规则
# 允许 TCP/UDP 53 端口 sudo ufw allow 53 # 重新加载防火墙规则 sudo ufw reload
禁用 AppArmor 限制(如启用)
# 查看当前状态 sudo aastatus # 若 bind9 被限制,则创建配置文件 echo '#!/bin/sh exit 0' | sudo tee /etc/apparmor.d/usr.sbin.named >/dev/null sudo apparmor_parser r /etc/apparmor.d/usr.sbin.named
服务控制与测试验证
重启 BIND 服务
# 重启服务并检查状态 sudo service bind9 restart sudo service bind9 status
测试解析功能
# 正向解析测试 dig @127.0.0.1 www.example.com # 反向解析测试 dig @127.0.0.1 x 192.168.1.2
测试类型 | 命令示例 | 预期结果 |
---|---|---|
正向解析 | dig @127.0.0.1 www.example.com |
返回 192.168.1.2 |
反向解析 | dig @127.0.0.1 x 192.168.1.2 |
返回 www.example.com |
NS 记录查询 | dig @127.0.0.1 NS example.com |
返回 ns1.example.com |
SOA 记录查询 | dig @127.0.0.1 SOA example.com |
显示 SOA 记录信息 |
日志分析与故障排除
查看日志文件
# 查看运行日志 sudo tail f /var/log/syslog | grep named
常见错误及解决方案
错误现象 | 可能原因 | 解决方案 |
---|---|---|
dig 返回无响应 |
防火墙未开放 53 端口 | sudo ufw allow 53 |
出现权限拒绝错误 | 区域文件权限不正确 | chown root:bind /etc/bind/db.* |
NS 记录无法解析 | named.conf.local 未正确配置 |
检查区域声明语法 |
SOA 刷新间隔异常 | $TTL 或刷新时间设置错误 |
核对 SOA 参数配置 |
相关问题与解答
Q1:如何在现有区域中添加新的 A 记录?
解答:
- 编辑对应区域文件(如
/etc/bind/db.example.com
) - 添加新记录,
mail IN A 192.168.1.3
- 保存后执行
sudo namedcheckzone example.com /etc/bind/db.example.com
检查语法 - 重启服务:
sudo service bind9 restart
Q2:如何配置 DNS 服务器转发到公共 DNS?
解答:
- 编辑
/etc/bind/named.conf.options
,取消注释并修改:forwarders { 8.8.8.8; // Google Public DNS 8.8.4.4; // Google Public DNS };
- 关闭递归查询(可选):
recursion no;
- 重启服务使配置生效
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/199492.html