Linux系统如何一步步架设DNS服务器的详细步骤?

在Linux系统中架设DNS(域名系统)服务器,通常使用BIND(Berkeley Internet Name Domain)软件,它是目前最广泛使用的DNS服务器软件之一,以下以Ubuntu/Debian和CentOS/RHEL系统为例,详细说明DNS架设的完整步骤。

linux如何架设dns

环境准备

  1. 系统要求

    • 推荐使用稳定版的Linux发行版(如Ubuntu 20.04+、CentOS 8+)。
    • 服务器需配置静态IP地址(192.168.1.100),确保网络连通性。
    • 关闭防火墙或开放DNS相关端口(TCP/UDP 53),若使用firewalld(CentOS)执行:
      firewall-cmd --permanent --add-service=dns
      firewall-cmd --reload

      若使用ufw(Ubuntu)执行:

      ufw allow 53/tcp
      ufw allow 53/udp
  2. 安装工具
    安装bind9(Ubuntu/Debian)或bind(CentOS/RHEL)及管理工具:

    • Ubuntu/Debian
      apt update && apt install -y bind9 bind9utils bind9-doc
    • CentOS/RHEL
      yum install -y bind bind-utils

BIND核心配置文件

BIND的主要配置文件位于/etc/bind/(Ubuntu)或/etc/named/(CentOS),核心文件包括:

  • named.conf:主配置文件,定义全局参数和区域引用。
  • 区域文件:存储具体域名解析记录(如正向区域、反向区域)。

编辑主配置文件named.conf

备份原文件后编辑:

cp /etc/bind/named.conf /etc/bind/named.conf.bak
vim /etc/bind/named.conf

关键配置如下:

    directory "/var/cache/bind";  # 区域文件存放目录
    allow-query { any; };         # 允许查询的客户端(any表示允许所有,可限制为内网IP,如192.168.1.0/24)
    recursion yes;                # 允许递归查询
    forwarders { 8.8.8.8; 1.1.1.1; }; # 上游DNS服务器(可选,用于转发无法解析的请求)
};
# 定义正向区域(示例:example.com)
zone "example.com" {
    type master;                  # 主DNS服务器
    file "/etc/bind/db.example.com"; # 区域文件路径
    allow-update { none; };       # 禁止动态更新(安全考虑)
};
# 定义反向区域(示例:192.168.1.0/24)
zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.1";
};```
#### **2. 创建区域文件**
**正向区域文件**(`/etc/bind/db.example.com`):  
```bash
cp /etc/bind/db.local /etc/bind/db.example.com
vim /etc/bind/db.example.com
```  示例:  
```;
; BIND data file for example.com
;
$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.com.
@       IN      A       192.168.1.100
ns1     IN      A       192.168.1.100
www     IN      A       192.168.1.101
mail    IN      A       192.168.1.102

说明

linux如何架设dns

  • SOA记录:起始授权机构,包含序列号(Serial,修改后需递增)、刷新时间等。
  • NS记录:域名服务器记录,指向ns1.example.com。
  • A记录:正向解析,将域名映射到IP地址。

反向区域文件/etc/bind/db.192.168.1):

cp /etc/bind/db.127 /etc/bind/db.192.168.1
vim /etc/bind/db.192.168.1
```  示例:  
```;
; BIND reverse data file for 192.168.1.0/24
;
$TTL    604800
@       IN      SOA     ns1.example.com. admin.example.com. (
                              2         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.com.
100     IN      PTR     ns1.example.com.
101     IN      PTR     www.example.com.
102     IN      PTR     mail.example.com.

说明

  • 反向区域文件名需符合in-addr.arpa格式,此处为168.192.in-addr.arpa,简化为db.192.168.1
  • PTR记录:反向解析,将IP地址映射到域名。

启动与测试服务

  1. 启动DNS服务

    • Ubuntu/Debian
      systemctl start bind9
      systemctl enable bind9  # 开机自启
    • CentOS/RHEL
      systemctl start named
      systemctl enable named
  2. 检查服务状态

    systemctl status bind9  # 或 named

    若启动失败,查看日志:/var/log/syslog(Ubuntu)或/var/log/messages(CentOS)。

  3. 测试解析
    使用nslookupdighost工具测试:

    • 正向解析测试
      nslookup www.example.com 192.168.1.100

      预期输出:www.example.com A 192.168.1.101

      linux如何架设dns

    • 反向解析测试
      nslookup 192.168.1.101 192.168.1.100

      预期输出:1.168.192.in-addr.arpa PTR www.example.com

常见配置优化

  1. 限制查询范围
    出于安全考虑,建议将allow-query限制为内网IP,避免公网随意查询:

        allow-query { 192.168.1.0/24; localhost; };
    };```  
  2. 启用DNSSEC(可选)
    DNSSEC(域名系统安全扩展)可防止DNS欺骗,配置较复杂,需生成密钥对并添加区域记录,此处略(可参考BIND官方文档)。

  3. 日志配置
    named.conf中添加日志条目,记录查询和错误信息:

        channel default_log {
            file "/var/log/named/named.log" versions 3 size 10m;
            severity info;
            print-time yes;
        };
        category default { default_log; };
    };```  
    创建日志目录并授权:  
    ```bash
    mkdir -p /var/log/named && chown bind:bind /var/log/named

DNS记录类型说明

记录类型 作用 示例
A 将域名映射到IPv4地址 www IN A 192.168.1.101
AAAA 将域名映射到IPv6地址 ipv6 IN AAAA 2408:8207:8f3f::1
CNAME 别名记录,指向另一个域名 blog IN CNAME www.example.com
MX 邮件交换记录,指定邮件服务器 mail IN MX 10 mail.example.com
NS 域名服务器记录,指定权威DNS服务器 example.com IN NS ns1.example.com
PTR 反向解析记录,IP映射到域名 101 IN PTR www.example.com
SOA 起始授权机构,区域核心记录 包含序列号、管理员邮箱等

相关问答FAQs

问题1:如何排查DNS服务无法解析的问题?
解答

  1. 检查服务状态:systemctl status bind9,确认服务正常运行。
  2. 检查配置文件语法:named-checkconf /etc/bind/named.conf,若有错误会提示具体行号。
  3. 检查区域文件语法:named-checkzone example.com /etc/bind/db.example.com,验证记录格式是否正确。
  4. 查看日志:tail -f /var/log/syslog(Ubuntu)或tail -f /var/log/messages(CentOS),定位错误原因(如权限不足、端口冲突等)。
  5. 测试网络连通性:ping 192.168.1.100,确认客户端与DNS服务器通信正常。

问题2:如何配置DNS转发,将无法解析的请求转发到上游DNS?
解答
named.confoptions段中添加forwarders选项,指定上游DNS服务器(如运营商DNS或公共DNS):

    directory "/var/cache/bind";
    allow-query { any; };
    recursion yes;
    forwarders { 114.114.114.114; 8.8.8.8; }; # 上游DNS服务器
    forward first; # 优先转发,转发失败则自行查询(可选,默认为first)
};```  
配置完成后重启服务:`systemctl restart bind9`,测试解析外部域名(如`www.baidu.com`),确认请求是否被正确转发。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31170.html

(0)
酷番叔酷番叔
上一篇 2025年9月27日 07:28
下一篇 2025年9月27日 07:43

相关推荐

  • 在Linux操作系统中,如何使用命令将文件压缩为zip格式?

    在Linux系统中,压缩文件是日常管理和数据传输中的常见需求,而zip格式因其跨平台兼容性(Windows、macOS、Linux等系统均支持)成为广泛使用的压缩格式,Linux系统下主要通过zip命令实现zip文件的压缩,本文将详细介绍zip命令的基础用法、常用选项、高级技巧及常见问题排查,帮助用户高效完成文……

    2025年9月15日
    7800
  • Linux中如何按时间对文件进行排序?

    在Linux系统中,按时间排序是日常管理和运维中常见的操作,无论是查看文件修改时间、分析日志还是排查问题,准确的时间排序都能提升效率,Linux中的时间排序主要涉及文件的三种时间属性:修改时间(mtime,内容最后一次修改的时间)、状态时间(ctime,文件状态如权限、所有者最后一次改变的时间)和访问时间(at……

    2025年9月24日
    6800
  • linux如何安装32位库

    Linux 中,可通过包管理器安装 32 位库,如 Ubuntu 用 a

    2025年8月16日
    8900
  • Linux系统如何修改DNS服务器配置名称及地址?

    在Linux系统中,DNS(域名系统)配置用于将域名解析为IP地址,正确配置DNS对于网络访问至关重要,本文将详细介绍Linux系统中修改DNS配置的多种方法,涵盖不同发行版和场景,并说明注意事项及验证方式,直接编辑/etc/resolv.conf文件/etc/resolv.conf是Linux系统中传统的DN……

    2025年10月2日
    5300
  • Linux中,如何查看文件的详细属性信息?

    在Linux系统中,文件属性是理解文件管理、权限控制和系统安全的基础,文件属性不仅包括我们熟知的权限(读、写、执行)、所有者和所属组,还包含时间戳、inode号、文件大小、硬链接数等元数据信息,掌握如何查看这些属性,对于日常运维、故障排查和安全管理至关重要,本文将详细介绍Linux中查看文件属性的多种方法,包括……

    2025年9月8日
    8800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信