CentOS DNS 配置详解

一、
CentOS 是一个流行的 Linux 发行版,广泛用于服务器环境,DNS(域名系统)在网络中起着至关重要的作用,将域名解析为 IP 地址,使得用户能够通过人类可读的域名访问网络资源,本文将详细介绍如何在 CentOS 上配置 DNS,包括 DNS 服务器和客户端的配置。
二、DNS 基础知识
DNS 作用
DNS 将域名(如 example.com)解析为 IP 地址(如 93.184.216.34),便于人类记忆和使用。
常见的 DNS 记录类型
A 记录:将域名解析为 IPv4 地址。
AAAA 记录:将域名解析为 IPv6 地址。
CNAME 记录:将域名解析为另一个域名。

MX 记录:指定邮件服务器。
PTR 记录:反向解析,将 IP 地址解析为域名。
三、安装和配置 BIND
BIND(Berkeley Internet Name Domain)是广泛使用的开源 DNS 服务器软件。
安装 BIND
sudo yum install bind bindutils bindlibs bindchroot
主要配置文件
/etc/named.conf
主配置文件,定义全局设置和区域文件。
options {
listenon port 53 { any; };
directory "/var/named";
dumpfile "/var/named/data/cache_dump.db";
statisticsfile "/var/named/data/named_stats.txt";
memstatisticsfile "/var/named/data/named_mem_stats.txt";
allowquery { any; };
recursion yes;
dnssecenable yes;
dnssecvalidation yes;
bindkeysfile "/etc/named.iscd.key";
managedkeysdirectory "/var/named/dynamic";
};
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";
/etc/named.rfc1912.zones

包含正向和反向解析区域文件。
/var/named/named.localhost
本地 localhost 区域文件。
$TTL 604800
@ IN SOA localhost. root.localhost. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 127.0.0.1
@ IN A ::1
区域文件示例
/var/named/test.com.zone
$TTL 86400
@ IN SOA test.com. admin.test.com. (
2023101001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS dns.test.com.
;
dns IN A 192.168.1.100
www IN A 192.168.1.100
/var/named/test.com.reverse
$TTL 86400
@ IN SOA test.com. admin.test.com. (
2023101001 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
IN NS dns.test.com.
;
100 IN PTR dns.test.com.
启动和启用 BIND 服务
sudo systemctl enable named sudo systemctl start named
检查配置文件语法
sudo namedcheckconf z /etc/named.conf
防火墙配置
确保防火墙允许 DNS 流量。
sudo firewallcmd permanent addservice=dns sudo firewallcmd reload
SELinux 配置(可选)
SELinux 启用,需要允许 BIND 读写其配置文件和区域文件。
sudo setsebool P named_write_enabled 1
四、配置 DNS 客户端
CentOS 作为 DNS 客户端时,可以通过修改/etc/resolv.conf 文件来配置使用的 DNS 服务器。
1. 编辑 /etc/resolv.conf
nameserver 8.8.8.8 nameserver 8.8.4.4
2. 使用 NetworkManager 配置 DNS(可选)
可以使用nmcli 命令行工具配置网络接口的 DNS。
nmcli con show # 列出连接名称 nmcli con mod <连接名称> ipv4.dns "8.8.8.8 8.8.4.4" nmcli con up <连接名称> # 应用更改
五、常见问题与解答
问题1:如何更改 CentOS 的 DNS 服务器?
答:可以通过修改/etc/resolv.conf 文件或使用 NetworkManager(nmcli)来更改 CentOS 的 DNS 服务器,编辑/etc/resolv.conf 文件,添加或修改nameserver 条目:
nameserver 8.8.8.8 nameserver 8.8.4.4
保存文件后,可以使用以下命令使其立即生效:
sudo systemctl restart NetworkManager
或者重启系统。
问题2:如何排除 DNS 解析故障?
答:首先确认网络连接正常,然后检查以下几项:
1、检查/etc/resolv.conf 文件:确保文件中的nameserver 指向正确的 DNS 服务器。
2、测试 DNS 服务器:使用nslookup 或dig 命令测试是否能解析域名。
nslookup www.example.com
3、检查日志文件:查看/var/log/messages 或/var/named/data/named.run(对于 BIND)以获取更多错误信息。
4、检查防火墙设置:确保防火墙没有阻止 DNS 流量(端口 53)。
5、重启网络服务:有时简单地重启网络服务可以解决问题。
sudo systemctl restart NetworkManager
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/81833.html