CentOs系统部署DNS服务

1. 安装 Bind 软件包

首先需要安装bind以及相关的工具包,在终端中执行以下命令:

bash

复制代码
sudo yum install bind bind-utils -y

2. 配置主配置文件

Bind 的主配置文件是/etc/named.conf,你可以使用文本编辑器(如vim)打开该文件进行配置:

bash

复制代码
sudo vim /etc/named.conf

下面是一个基本的配置示例:

plaintext

复制代码
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";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
    recursion yes;

    dnssec-enable yes;
    dnssec-validation yes;
    dnssec-lookaside auto;

    bindkeys-file "/etc/named.iscdlv.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
};

logging {
    channel default_debug {
        file "data/named.run";
        severity dynamic;
    };
};

zone "." IN {
    type hint;
    file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

上述配置中,listen-on指定了监听的 IP 地址和端口,allow-query指定了允许哪些 IP 地址进行 DNS 查询,这里配置为允许任何 IP 地址查询。

3. 创建正向和反向查找区域

正向查找区域

正向查找区域用于将域名解析为 IP 地址。首先需要在/etc/named.rfc1912.zones文件中添加区域配置:

bash

复制代码
sudo vim /etc/named.rfc1912.zones

添加如下内容(假设域名为example.com):

plaintext

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

然后在/var/named目录下创建区域文件example.com.zone

bash

复制代码
sudo vim /var/named/example.com.zone

文件内容示例如下:

plaintext

复制代码
$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                              2025040401 ; Serial
                         3600         ; Refresh
                          1800         ; Retry
                        604800         ; Expire
                         86400 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.com.
ns1     IN      A       192.168.1.100
www     IN      A       192.168.1.101
反向查找区域

反向查找区域用于将 IP 地址解析为域名。同样在/etc/named.rfc1912.zones文件中添加区域配置:

plaintext

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

/var/named目录下创建反向区域文件192.168.1.zone

bash

复制代码
sudo vim /var/named/192.168.1.zone

文件内容示例如下:

plaintext

复制代码
$TTL 86400
@       IN      SOA     ns1.example.com. admin.example.com. (
                              2025040401 ; Serial
                         3600         ; Refresh
                          1800         ; Retry
                        604800         ; Expire
                         86400 )       ; Negative Cache TTL
;
@       IN      NS      ns1.example.com.
100     IN      PTR     ns1.example.com.
101     IN      PTR     www.example.com.

4. 修改文件权限

确保/var/named目录下的区域文件权限正确,执行以下命令:

bash

复制代码
sudo chown named:named /var/named/example.com.zone
sudo chown named:named /var/named/192.168.1.zone

5. 启动并设置开机自启

完成配置后,启动named服务并设置为开机自启:

bash

复制代码
sudo systemctl start named
sudo systemctl enable named

6. 配置防火墙

如果防火墙开启,需要开放 DNS 服务使用的端口(UDP 和 TCP 的 53 端口):

bash

复制代码
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload

7. 测试 DNS 服务

你可以使用nslookupdig命令来测试 DNS 服务是否正常工作,例如:

bash

复制代码
nslookup www.example.com 192.168.1.100

以上步骤完成后,你就在 CentOS 系统上成功部署了 DNS 服务。

相关推荐
MATLAB代码顾问1 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
yaodong5181 小时前
不会Python也能数据分析:Gemini 3.1 Pro解决办公问题的SQL自动生成
python·sql·数据分析
BU摆烂会噶1 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
笨笨饿1 小时前
69_如何给自己手搓一个串口
linux·c语言·网络·单片机·嵌入式硬件·算法·个人开发
cn_lyg2 小时前
Linux的入门级常用操作命令
linux·运维·服务器
就叫飞六吧2 小时前
TOML vs YAML:为什么 Cargo 选择 TOML?
linux·运维·服务器
消失的旧时光-19432 小时前
统一并发模型:线程、Reactor、协程本质是一件事(从线程到协程 · 第6篇·终章)
java·python·算法
IMPYLH2 小时前
Linux 的 test 命令
linux·运维·服务器·chrome·bash
xrui583 小时前
2026实战:深度解析 Gemini 3.1 镜像站函数调用在自动化运维工单中的应用
linux·服务器·网络
HackTwoHub3 小时前
Linux 内核史诗级本地提权 全网深度复现、原理完整分析( CVE-2026-31431)
linux·运维·安全·web安全·网络安全·代码审计·安全架构