CentOS 7 怎么安装 DNS 服务器?

HCRM技术_小炮 DNS 2026-05-19 1 0

在 CentOS 7 上安装 DNS 服务器通常是指安装BIND (Berkeley Internet Name Domain),即named 服务,以下是完整步骤:

更新系统并安装 BIND

sudo yum update -y
sudo yum install -y bind bind-utils

bind:主程序包

bind-utils:提供dignslookup 等测试工具

可选安装bind-chroot 以增强安全性:

sudo yum install -y bind-chroot

若使用 chroot,配置文件路径会变为/var/named/chroot/etc/named.conf 等。

2. 配置主配置文件/etc/named.conf

备份原文件,然后编辑:

sudo cp /etc/named.conf /etc/named.conf.bak
sudo vi /etc/named.conf

一个基本示例(仅监听本地局域网,允许局域网查询):

options {
    listen-on port 53 { 127.0.0.1; 192.168.1.0/24; };   # 监听本机IP
    listen-on-v6 port 53 { ::1; };
    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     { 127.0.0.1; 192.168.1.0/24; };     # 允许查询的网段
    recursion yes;
};
zone "." IN {
    type hint;
    file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

配置正向和反向区域(示例)

/etc/named.rfc1912.zones 中新增区域声明,或直接写入named.conf

添加一个正向区域example.com

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

创建区域文件/var/named/example.com.zone

sudo vi /var/named/example.com.zone
示例:

$TTL 86400
@   IN  SOA ns1.example.com. admin.example.com. (
        2025010101   ; serial
        3600         ; refresh
        1800         ; retry
        604800       ; expire
        86400 )      ; minimum
@       IN  NS  ns1.example.com.
ns1     IN  A   192.168.1.10
www     IN  A   192.168.1.20

修改属组:

sudo chgrp named /var/named/example.com.zone

启动并设置开机自启

sudo systemctl start named
sudo systemctl enable named

配置防火墙

放行 DNS 端口(TCP/UDP 53):

sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --reload

测试解析

在本地或客户端使用dig 测试:

dig @127.0.0.1 www.example.com
dig -x 192.168.1.10   # 反向查询

7. 调整 SELinux(如遇到权限问题)

若区域文件无法读取,检查 SELinux 上下文:

sudo restorecon -Rv /var/named

或临时关闭 SELinux(不推荐生产环境):

sudo setenforce 0

常见问题

端口被占用:检查是否有其他 DNS 服务(如 dnsmasq)运行:sudo netstat -tulnp | grep :53

日志查看journalctl -u named -f/var/log/messages

chroot 环境:若安装了bind-chroot,所有路径需对应/var/named/chroot/ 下。

完成后,你的 CentOS 7 就拥有了基本的 DNS 服务器,根据需要进一步配置主从复制、DDNS 等功能。

文章摘自:https://idc.huochengrm.cn/dns/25799.html

评论