如何在Linux上安装DNS服务器

安装DNS服务(如BIND9):使用包管理器(如apt install bind9yum install bind),修改主配置文件(named.conf)和区域文件,定义域名解析规则,启动服务(systemctl start named)并设置开机启动(systemctl enable named),配置防火墙开放53端口,并测试解析。

Linux 安装 DNS 服务器(BIND9)完整指南

DNS(域名系统)是互联网的”电话簿”,负责将域名解析为 IP 地址,本指南详细介绍在 Linux 上安装并配置 BIND9 作为 DNS 服务器的专业流程,适用于 Ubuntu/CentOS 等主流发行版。

如何在Linux上安装DNS服务器

📦 一、安装前准备

更新系统

sudo apt update && sudo apt upgrade -y  # Debian/Ubuntu
sudo yum update -y                      # CentOS/RHEL

<div class="step">
    <h4>2. 安装 BIND9</h4>
    <pre><code>sudo apt install bind9 bind9-utils -y     # Debian/Ubuntu

sudo yum install bind bind-utils -y # CentOS/RHEL

关键组件说明:

  • bind9/bind:DNS 服务主程序
  • bind9-utils/bind-utils:包含 dig/nslookup 等诊断工具

⚙️ 二、配置主 DNS 服务器

主配置文件修改

sudo nano /etc/bind/named.conf.options

添加以下内容(根据需求调整):

options {
    directory "/var/cache/bind";
    recursion yes;                 # 允许递归查询
    allow-query { any; };          # 允许所有客户端查询
    forwarders {                   # 设置上游 DNS
        8.8.8.8; 
        8.8.4.4;
    };
    dnssec-validation auto;        # DNSSEC 验证
    listen-on { any; };            # 监听所有接口
};

<div class="step">
    <h4>2. 创建正向解析区域文件</h4>
    <pre><code>sudo nano /etc/bind/named.conf.local</code></pre>
    <p>添加域名声明(以 example.com 为例):</p>
    <pre><code>zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";

<div class="step">
    <h4>3. 创建区域数据文件</h4>
    <pre><code>sudo mkdir /etc/bind/zones

sudo nano /etc/bind/zones/db.example.com

添加以下基础记录:

如何在Linux上安装DNS服务器

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
    2025081501 ; Serial
    3600       ; Refresh
    1800       ; Retry
    604800     ; Expire
    86400      ; Minimum TTL
)

; 名称服务器记录@ IN NS ns1.example.com.ns1 IN A 192.168.1.10 ; 替换为您的服务器 IP

; A 记录(域名 → IP)@ IN A 192.168.1.10www IN A 192.168.1.20mail IN A 192.168.1.30

; CNAME 记录(别名)web IN CNAME www

🔍 三、反向 DNS 配置(可选)

sudo nano /etc/bind/named.conf.local

添加反向区域声明:

zone "1.168.192.in-addr.arpa" {    # 替换为您的网段反写
    type master;
    file "/etc/bind/zones/db.192.168.1";
};

创建反向区域文件:

sudo nano /etc/bind/zones/db.192.168.1
$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. ; IP 末尾数字对应主机20 IN PTR www.example.com.30 IN PTR mail.example.com.

如何在Linux上安装DNS服务器

🚀 四、启动与防火墙设置

检查配置语法

sudo named-checkconf
sudo named-checkzone example.com /etc/bind/zones/db.example.com

<div class="step">
    <h4>2. 启动 BIND 服务</h4>
    <pre><code>sudo systemctl start named   # CentOS

sudo systemctl start bind9 # Ubuntu

sudo systemctl enable named  # 设置开机自启

<div class="step">
    <h4>3. 防火墙放行 DNS</h4>
    <pre><code>sudo ufw allow 53/tcp        # Ubuntu

sudo ufw allow 53/udp
sudo firewall-cmd –permanent –add-service=dns # CentOS
sudo firewall-cmd –reload

✅ 五、验证 DNS 功能

本地解析测试

dig @localhost ns1.example.com

预期输出应包含 A 记录 IP

<div class="step">
    <h4>2. 反向解析测试</h4>
    <pre><code>dig -x 192.168.1.10 @localhost</code></pre>
    <p>应返回对应的 PTR 记录</p>
</div>
<div class="step">
    <h4>3. 客户端配置测试</h4>
    <p>将客户端的 DNS 服务器设置为您的服务器 IP,执行:</p>
    <pre><code>nslookup www.example.com</code></pre>
</div>

🔒 专业维护建议

安全加固措施

<div class="tip">
    <h4>日志监控</h4>
    <p>查看实时日志:</p>
    <pre><code>sudo tail -f /var/log/syslog | grep named   # Ubuntu

sudo journalctl -u named -f # CentOS

⚠️ 常见问题解决

通过本指南,您已成功部署了一个功能完整的 DNS 服务器,建议在生产环境中配置从服务器实现高可用,并使用 TSIG 密钥保障区域传输安全,定期审查日志和进行漏洞扫描可大幅提升安全性。

📚 引用说明

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

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月6日 12:29
下一篇 2025年6月6日 12:41

相关推荐

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN