linix安装DNS服务器

在Linux中安装DNS服务器需执行:更新包列表,安装BIND,编辑named.conf配置,定义正向/反向解析区域,检查配置文件后重启

Linux系统安装与配置DNS服务器(BIND9)完整指南

环境准备与软件安装

操作系统要求

项目 要求
操作系统 Ubuntu 20.04/CentOS 7+
内存建议 ≥512MB(生产环境建议≥2GB)
网络配置 固定IP地址(推荐192.168.x.x/24局域网段)

更新软件包索引

# Debian/Ubuntu系
sudo apt update && sudo apt upgrade y
# RedHat/CentOS系
sudo yum makecache && sudo yum update y

安装BIND DNS服务器

系统类型 安装命令
Ubuntu/Debian sudo apt install bind9 bind9utils bind9doc y
CentOS/RHEL sudo yum install bind bindutils y
Fedora sudo dnf install bind bindutils y

核心配置文件解析

主配置文件 /etc/bind/named.conf

// 基础配置示例
options {
    directory "/var/cache/bind";         // 缓存文件存放路径
    recursion yes;                      // 启用递归查询
    allowquery { any; }                // 允许所有客户端查询
    forwarders {                        // 上级DNS服务器
        8.8.8.8;
        8.8.4.4;
    };
    dnssecvalidation yes;              // 启用DNSSEC验证
    listenon port 53 { any; };         // 监听所有接口53端口
};

本地回环配置 /etc/bind/named.conf.local

// 本地网络配置示例
zone "localhost" {
    type master;
    file "/etc/bind/db.local";          // 对应区域文件路径
};
zone "127.inaddr.arpa" {
    type master;
    file "/etc/bind/db.127";           // 反向解析文件
};
zone "192.168.1.0/24" {               // 示例内网区域
    type master;
    file "/etc/bind/db.192.168.1";
};

区域文件配置规范

正向解析区域文件示例 (/etc/bind/db.example.com)

$TTL    86400       ; 默认生存时间(1天)
@       IN          SOA     ns1.example.com. admin.example.com. (
                                   2023100101 ; 序列号
                                   3600       ; 刷新时间
                                   1800       ; 重试时间
                                   1209600    ; 过期时间
                                   86400 )    ; 最小TTL
        IN          NS      ns1.example.com.
        IN          NS      ns2.example.com.
ns1     IN          A       192.168.1.100   ; 主DNS服务器IP
ns2     IN          A       192.168.1.101   ; 辅助DNS服务器IP
www     IN          A       192.168.1.102   ; 网站服务器IP
@       IN          A       192.168.1.100   ; 根域名指向

反向解析区域文件示例 (/etc/bind/db.192.168.1)

$TTL    86400
@       IN          SOA     ns1.example.com. admin.example.com. (
                                   2023100101 ; 序列号
                                   3600       ; 刷新时间
                                   1800       ; 重试时间
                                   1209600    ; 过期时间
                                   86400 )    ; 最小TTL
        IN          NS      ns1.example.com.
        IN          NS      ns2.example.com.
100     IN          PTR     ns1.example.com.
101     IN          PTR     ns2.example.com.
102     IN          PTR     www.example.com.

服务控制与状态检查

启动/重启服务

# systemd系统通用命令
sudo systemctl start named             # 启动服务
sudo systemctl enable named            # 设置开机自启
sudo systemctl restart named           # 重启服务
# 传统init系统命令(旧版CentOS)
sudo service named start
sudo chkconfig named on

配置验证工具

命令 用途说明
namedcheckconf 检查主配置文件语法错误
namedcheckzone 验证区域文件正确性(例:namedcheckzone example.com /etc/bind/db.example.com
dig @localhost 测试DNS解析(例:dig www.example.com
rndc reload 重新加载配置文件(需配置密钥认证)

安全加固措施

访问控制配置

// 修改named.conf中的allowquery设置
allowquery {
    192.168.1.0/24;    // 仅允许内网访问
    !192.168.1.254;    // 排除特定IP
};

限制递归查询

options {
    recursion no;                  // 禁用递归查询(仅转发)
    allowrecursion { 192.168.1.0/24; } // 指定允许递归的网段
};

TSIG密钥配置(示例)

// 在named.conf中添加密钥配置
key "example_tsig" {
    algorithm hmacmd5;
    secret "base64_encoded_secret_key";
};
// 区域配置中应用密钥
zone "example.com" {
    type master;
    file "/etc/bind/db.example.com";
    allowupdate { key "example_tsig"; };
};

常见问题排错指南

服务启动失败处理流程

步骤 操作命令 说明
1 journalctl xe 查看系统日志错误信息
2 namedcheckconf 检查配置文件语法
3 namedcheckzone example.com /etc/bind/db.example.com 验证区域文件
4 sudo lsof i :53 检查端口占用情况
5 sudo firewallcmd addservice=dns 开放防火墙端口(CentOS)

无法解析的常见原因

  • 区域文件未包含查询的域名记录
  • SOA记录中的序列号未更新(需递增)
  • 防火墙阻止UDP/TCP 53端口
  • BIND配置中的forwarders设置错误
  • SELinux策略限制(CentOS需执行sudo setsebool P named_write_master_zones on

扩展功能配置示例

配置转发器(Forwarder)

// 在options块中添加转发器配置
forwarders { 8.8.8.8; 8.8.4.4; }    // Google公共DNS
forward only;                       // 仅转发不递归

配置循环DNS(Round Robin)

// 在区域文件中定义多个A记录
www     IN      A       192.168.1.102
www     IN      A       192.168.1.103
www     IN      A       192.168.1.104

Q&A问答专栏

Q1:如何在BIND中配置允许外部网络访问DNS服务?

A:需修改两个配置项:

  1. named.confoptions块中设置:
    listenon port 53 { any; };      # 监听所有网络接口
  2. 调整allowquery设置:
    allowquery { any; };             # 允许所有客户端查询

    注意:生产环境建议结合allowquery进行IP白名单控制,并通过防火墙限制访问来源。

    linix安装DNS服务器


Q2:添加新域名记录后为什么不生效?

A:可能原因及解决方案:

  1. 区域文件未更新:需重新加载配置(sudo systemctl reload named

    linix安装DNS服务器

  2. TTL缓存影响:客户端可能缓存旧记录,可清除本地DNS缓存:

    # Windows命令提示符
    ipconfig /flushdns
    # Linux终端
    sudo systemdresolve flushcaches
  3. 区域文件语法错误:使用namedcheckzone命令验证文件正确性

  4. SOA序列号未更新:修改SOA记录中的序列号(如从2023100101改为2023100201)以触发更新

    linix安装DNS服务器

  5. 权限问题:确保区域文件权限为644且属主为bind用户

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

Like (0)
小编小编
Previous 2025年5月8日 01:50
Next 2025年5月8日 02:43

相关推荐

发表回复

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