插件窝 干货文章 如何配置和管理Linux上的DNS服务

如何配置和管理Linux上的DNS服务

named example 配置 文件 482    来源:    2025-04-10

Linux DNS服务配置与管理指南

1. DNS服务简介

DNS(Domain Name System)是将域名转换为IP地址的服务,是互联网基础设施的重要组成部分。在Linux上,最常用的DNS服务器软件是BIND(Berkeley Internet Name Domain)。

2. 安装BIND DNS服务器

Ubuntu/Debian系统

sudo apt update
sudo apt install bind9 bind9utils bind9-doc

CentOS/RHEL系统

sudo yum install bind bind-utils

启动服务

sudo systemctl start named   # CentOS/RHEL
sudo systemctl start bind9   # Ubuntu/Debian

sudo systemctl enable named  # 设置开机自启
sudo systemctl enable bind9

3. 主要配置文件

BIND的主要配置文件位于: - /etc/named.conf - 主配置文件 - /etc/bind/named.conf - Ubuntu/Debian上的主配置文件 - /var/named/ - 区域文件目录(CentOS/RHEL) - /etc/bind/ - 区域文件目录(Ubuntu/Debian)

4. 配置主DNS服务器

编辑主配置文件

sudo nano /etc/named.conf

添加或修改以下内容:

options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { any; };
    directory       "/var/named";
    dump-file       "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    allow-query     { any; };
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;

    /* Path to ISC DLV key */
    bindkeys-file "/etc/named.iscdlv.key";

    managed-keys-directory "/var/named/dynamic";
};

创建正向解析区域

named.conf中添加:

zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-update { none; };
};

创建反向解析区域

zone "1.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.1.zone";
    allow-update { none; };
};

创建区域文件

创建正向解析文件/var/named/example.com.zone

$TTL 86400
@   IN  SOA     ns1.example.com. admin.example.com. (
        2021071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS      ns1.example.com.
@       IN  A       192.168.1.10
ns1     IN  A       192.168.1.10
www     IN  A       192.168.1.10
mail    IN  A       192.168.1.20

创建反向解析文件/var/named/192.168.1.zone

$TTL 86400
@   IN  SOA     ns1.example.com. admin.example.com. (
        2021071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS      ns1.example.com.
10      IN  PTR     ns1.example.com.
10      IN  PTR     www.example.com.
20      IN  PTR     mail.example.com.

检查配置文件语法

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.zone

重启服务

sudo systemctl restart named

5. 配置从DNS服务器

在主DNS服务器的named.conf中添加:

zone "example.com" IN {
    type master;
    file "example.com.zone";
    allow-transfer { 192.168.1.20; };  # 从服务器IP
};

在从服务器上配置:

zone "example.com" IN {
    type slave;
    file "slaves/example.com.zone";
    masters { 192.168.1.10; };  # 主服务器IP
};

6. DNS记录类型

  • A记录: 将域名指向IPv4地址
  • AAAA记录: 将域名指向IPv6地址
  • CNAME记录: 域名别名
  • MX记录: 邮件交换记录
  • NS记录: 域名服务器记录
  • PTR记录: 反向解析记录
  • TXT记录: 文本记录

7. 常用管理命令

检查DNS解析

nslookup example.com
dig example.com
host example.com

查看DNS服务状态

sudo systemctl status named
sudo rndc status

重新加载配置

sudo rndc reload

清空DNS缓存

sudo rndc flush

8. 安全配置建议

  1. 限制查询:在options中设置allow-queryallow-recursion
  2. 禁用区域传输:除非必要,否则设置allow-transfer为none
  3. 使用TSIG密钥:用于服务器间安全通信
  4. 启用DNSSEC:提供DNS数据验证
  5. 定期更新:保持BIND软件最新版本

9. 日志管理

BIND日志默认记录在系统日志中(/var/log/messages/var/log/syslog),可以通过配置named.conf中的logging部分来定制日志:

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
    channel query_log {
        file "/var/log/named/query.log";
        severity info;
    };
    category queries { query_log; };
};

10. 故障排除

  1. 检查服务状态systemctl status named
  2. 检查配置文件语法named-checkconf
  3. 检查区域文件语法named-checkzone
  4. 查看日志journalctl -u named或检查/var/log/messages
  5. 测试解析:使用dignslookuphost命令

通过以上配置和管理方法,您可以在Linux系统上建立和维护一个功能完善的DNS服务器。