凌峰创科服务平台

Linux下DNS服务器配置怎么操作?

在Linux系统中配置DNS服务器通常使用BIND(Berkeley Internet Name Domain)软件,它是目前最广泛使用的DNS服务器软件之一,下面将详细介绍在Linux环境下配置DNS服务器的步骤,包括安装、配置文件解析、区域文件创建、服务启动及测试等全过程。

Linux下DNS服务器配置怎么操作?-图1
(图片来源网络,侵删)

安装BIND软件

首先需要确保系统已安装BIND相关软件包,以CentOS/RHEL为例,使用yum命令进行安装:

sudo yum install bind bind-utils -y

对于Ubuntu/Debian系统,则使用apt命令:

sudo apt install bind9 bind9utils -y

安装完成后,检查BIND服务状态:

sudo systemctl status named

若未启动,可使用sudo systemctl start named命令启动,并通过sudo systemctl enable named设置开机自启。

Linux下DNS服务器配置怎么操作?-图2
(图片来源网络,侵删)

主配置文件解析

BIND的主配置文件为/etc/named.conf,该文件定义了服务器的全局参数、区域声明及访问控制等,以下是关键配置项说明:

  1. 全局选项:位于options语句块中,定义服务器的基本行为,如监听地址、转发配置等。

    options {
        listen-on port 53 { any; };  // 监听所有接口的53端口
        directory       "/var/named"; // 区域文件存放目录
        allow-query     { any; };     // 允许所有客户端查询
        recursion yes;               // 启用递归查询
    };
  2. 区域声明:用于定义DNS服务器 authoritative 的区域,添加一个正向区域example.com和反向区域168.192.in-addr.arpa(假设内网网段为192.168.1.0/24):

    zone "example.com" IN {
        type master;        // 主DNS服务器
        file "example.com.zone"; // 区域文件名
        allow-update { none; }; // 禁止动态更新
    };
    zone "1.168.192.in-addr.arpa" IN {
        type master;
        file "192.168.1.db";
    };

创建区域文件

区域文件存储在/var/named目录下,需根据named.conf中定义的文件名创建,正向区域文件example.com.zone内容如下:

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2025081501  ; 序列号,需修改
                        3600        ; 刷新间隔
                        1800        ; 重试间隔
                        604800      ; 过期时间
                        86400       ) ; 最小TTL
        IN      NS      ns1.example.com.
        IN      MX      10 mail.example.com.
ns1     IN      A       192.168.1.10
mail    IN      A       192.168.1.20
www     IN      A       192.168.1.30

反向区域文件168.1.db内容如下:

$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                        2025081501
                        3600
                        1800
                        604800
                        86400       )
        IN      NS      ns1.example.com.
10      IN      PTR     ns1.example.com.
20      IN      PTR     mail.example.com.
30      IN      PTR     www.example.com.

注意:区域文件的权限需设置为named用户可读,可通过sudo chown named:named /var/named/*.zone调整。

配置日志与安全

为增强安全性,可在named.conf中添加访问控制列表(ACL)和日志配置:

acl "trusted" {
    192.168.1.0/24;   // 信任的内网网段
};
options {
    allow-query { trusted; }; // 仅允许信任网段查询
    logging {
        channel "default_log" {
            file "/var/log/named/named.log" versions 3 size 1m;
            severity info;
            print-time yes;
        };
        category default { default_log; };
    };
};

创建日志目录并设置权限:

sudo mkdir -p /var/log/named
sudo chown named:named /var/log/named

启动服务与测试

  1. 检查配置文件语法

    sudo named-checkconf
    sudo named-checkzone example.com /var/named/example.com.zone
    sudo named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.db

    若无输出则表示语法正确。

  2. 重启服务

    sudo systemctl restart named
  3. 测试DNS解析

    • 使用dignslookup命令测试正向解析:
      dig @192.168.1.10 www.example.com
      nslookup 192.168.1.10
    • 检查日志文件确认查询记录:
      tail -f /var/log/named/named.log

常见问题排查

  1. 权限问题:确保区域文件所有者为named,且权限为640。
  2. 端口占用:若53端口被占用,可通过netstat -tuln | grep 53检查,并修改named.conf中的listen-on端口。
  3. 序列号错误:区域文件中序列号未递增会导致区域传输失败。

相关问答FAQs

问题1:如何配置DNS转发器?
答:在named.confoptions语句块中添加forwarders参数,

options {
    forwarders { 8.8.8.8; 114.114.114.114; }; // 转发至公共DNS
    forward only; // 强制转发,不进行递归查询
};

修改后重启服务即可生效。

问题2:如何实现DNS动态更新?
答:需在区域声明中允许特定客户端动态更新,并配置TSIG密钥认证。

  1. 生成TSIG密钥:

    sudo dnssec-keygen -a HMAC-MD5 -b 128 -n HOST update-client.example.com
  2. 提取密钥并添加至named.confkeyzone语句块:

    key "update-key" {
        algorithm HMAC-MD5;
        secret "生成的密钥字符串";
    };
    zone "example.com" IN {
        type master;
        file "example.com.zone";
        allow-update { key update-key; };
    };
  3. 在客户端使用nsupdate命令动态更新记录。

分享:
扫描分享到社交APP
上一篇
下一篇