ubuntu1604上搭建dns

安装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

ubuntu1604上搭建dns

$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

ubuntu1604上搭建dns

$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 记录?

解答

ubuntu1604上搭建dns

  1. 编辑对应区域文件(如 /etc/bind/db.example.com
  2. 添加新记录,
    mail    IN      A       192.168.1.3
  3. 保存后执行 sudo namedcheckzone example.com /etc/bind/db.example.com 检查语法
  4. 重启服务:sudo service bind9 restart

Q2:如何配置 DNS 服务器转发到公共 DNS?

解答

  1. 编辑 /etc/bind/named.conf.options,取消注释并修改:
    forwarders {
        8.8.8.8;   // Google Public DNS
        8.8.4.4;   // Google Public DNS
    };
  2. 关闭递归查询(可选):
    recursion no;
  3. 重启服务使配置生效

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/199492.html

Like (0)
小编小编
Previous 2025年5月5日 19:28
Next 2025年5月5日 19:35

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注