HCRM博客

如何在CentOS 7上配置DNS服务?

CentOS 7 配置 DNS

CentOS 7是一款广泛使用的Linux发行版,它的稳定性和灵活性使得它在企业和个人用户中都很受欢迎,在络环境中,DNS(Domain Name System)扮演着至关重要的角色,负责将域名解析为IP地址,使用户能够通过易于记忆的域名访问互联网资源,本文将详细介绍如何在CentOS 7上安装和配置BIND(Berkeley Internet Name Domain)服务,以实现DNS服务器的功能。

如何在CentOS 7上配置DNS服务?-图1
(图片来源网络,侵权删除)

一、安装与配置DNS

1. 安装 BIND

需要安装 BIND,这是最常用的开源 DNS 服务器软件包,使用以下命令进行安装:

sudo yum install bind bindutils y

bind 是 DNS 服务器的主程序,而bindutils 包含了用于 DNS 查询的工具,如dignslookup

2. 修改主配置文件

BIND 的主配置文件位于/etc/named.conf,使用文本编辑器打开该文件:

sudo vi /etc/named.conf

在该文件中,找到类似如下的配置项:

如何在CentOS 7上配置DNS服务?-图2
(图片来源网络,侵权删除)
options {
    listenon port 53 { any; };
    allowquery { any; };
    recursion yes;
    dnssecenable yes;
    dnssecvalidation yes;
    bindkeysfile "/etc/named.iscdlv.key";
    managedkeysdirectory "/var/named/dynamic";
    pidfile "/run/named/named.pid";
    sessionkeyfile "/run/named/session.key";
};

这些配置项的含义如下:

listenon port 53 { any; }:允许 BIND 在所有接口的 53 端口监听 DNS 请求。

allowquery { any; }:允许任何主机查询。

recursion yes;:启用递归查询。

dnssecenable yes; 和 dnssecvalidation yes;:启用 DNSSEC(DNS Security Extensions)。

bindkeysfilemanagedkeysdirectory:指定密钥文件和动态管理目录。

如何在CentOS 7上配置DNS服务?-图3
(图片来源网络,侵权删除)

pidfilesessionkeyfile:指定进程 ID 文件和会话密钥文件。

3. 配置正向解析区域文件

正向解析的作用是根据主机名(域名)查找到对应的 IP 地址,编辑区域配置文件/etc/named.rfc1912.zones,添加以下内容:

zone "example.com" IN {
    type master;
    file "forward.example.com";
    allowupdate { none; };
};

创建对应的区域数据文件/var/named/forward.example.com

sudo vi /var/named/forward.example.com

添加以下内容:

$TTL 86400
@   IN  SOA     ns1.example.com. admin.example.com. (
            2023101001  ; Serial
            3600        ; Refresh
            1800        ; Retry
            604800      ; Expire
            86400       ; Minimum 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.100

这些记录的含义如下:

$TTL 86400:生存周期为 1 天。

@ IN SOA ...:起始授权记录,包含主域名服务器和域管理员的电子邮件。

IN NS ns1.example.com.:指定域名服务器。

IN A 192.168.1.100:将域名映射到 IP 地址。

4. 配置反向解析区域文件

反向解析的作用是根据 IP 地址查找到对应的主机名(域名),编辑区域配置文件/etc/named.rfc1912.zones,添加以下内容:

zone "1.168.192.inaddr.arpa" IN {
    type master;
    file "reverse.example.com";
    allowupdate { none; };
};

创建对应的区域数据文件/var/named/reverse.example.com

sudo vi /var/named/reverse.example.com

添加以下内容:

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

这些记录的含义如下:

$TTL 86400:生存周期为 1 天。

@ IN SOA ...:起始授权记录,包含主域名服务器和域管理员的电子邮件。

IN NS ns1.example.com.:指定域名服务器。

IN PTR ns1.example.com.:将 IP 地址映射回域名。

5. 启动 BIND 服务

确保所有的配置都正确无误后,启动 BIND 服务:

sudo systemctl enable named
sudo systemctl start named

检查 BIND 服务的状态:

sudo systemctl status named

这将显示 BIND 服务的当前状态,确保它是活跃的(running)。

6. 测试 DNS 解析

使用dig 命令来测试正向和反向解析是否配置成功:

dig @localhost www.example.com
dig x @localhost 192.168.1.100

如果配置正确,你应该能够看到相应的解析结果。

二、常见问题解答(FAQs)

Q1:如何更改 BIND 监听的端口号?

A1:可以通过修改 BIND 的主配置文件/etc/named.conf,找到类似如下的配置项:

options {
    listenon port 53 { any; };
    ...
};

port 53 改为你想要的端口号,例如port 53535,然后重新启动 BIND 服务即可。

Q2:如何配置 BIND 只对特定 IP 地址或子网进行响应?

A2:可以通过修改 BIND 的主配置文件/etc/named.conf,找到类似如下的配置项:

options {
    allowquery { any; };
    ...
};

any 改为特定的 IP 地址或子网,例如192.168.1.0/24,然后重新启动 BIND 服务即可,这样,BIND 只会对来自该子网的查询进行响应。

分享:
扫描分享到社交APP
上一篇
下一篇