在 CentOS 7 系统中,域名系统(DNS)扮演着至关重要的角色,它负责将我们易于记忆的域名(如 www.google.com)解析为机器能够识别的 IP 地址,无论是进行日常的网络访问、配置服务器服务,还是进行网络故障排查,了解如何查看和验证当前的 DNS 设置都是一项基本且必备的技能,本文将系统性地介绍在 CentOS 7 中查看 DNS 配置的多种方法,从核心配置文件到现代化的网络管理工具,再到实用的诊断命令,旨在为您提供一份全面而清晰的指南。
查看核心配置文件:/etc/resolv.conf
在绝大多数 Linux 发行版中,/etc/resolv.conf
文件是系统用来存储 DNS 解析器配置的核心文件,当系统需要解析一个域名时,它会首先查阅这个文件来获取 DNS 服务器的地址。
您可以使用任何文本查看命令来打开它,最常用的是 cat
:
cat /etc/resolv.conf
一个典型的 /etc/resolv.conf
文件内容可能如下所示:
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
search mydomain.local
options timeout:2 attempts:3 rotate single-request
关键字段解析:
nameserver
:这是最重要的指令,它指定了 DNS 服务器的 IP 地址,系统会按照从上到下的顺序依次尝试查询,您可以配置多个nameserver
作为备用,在上面的例子中,系统会首先查询168.1.1
(通常是路由器或本地网关),如果失败,则会查询公共 DNS8.8.8
(Google DNS)。search
:此指令定义了一个域名列表,当您尝试访问一个主机名(server1
)而不是完整域名(FQDN)时,系统会自动将search
列表中的域名依次附加到主机名后面进行尝试查询,查询server1
会依次尝试server1.mydomain.local
。options
:用于调整解析器的行为,常见的选项包括:-
timeout
:设置等待 DNS 服务器响应的超时时间(秒)。 -
attempts
:设置重试查询的次数。 -
rotate
:在多个nameserver
之间轮询查询,以实现负载均衡。 -
single-request
:在某些网络环境下(如 VPN),可以防止因同时发送 A 和 AAAA 记录请求而导致的超时问题。
-
重要提示:在 CentOS 7 中,直接手动编辑 /etc/resolv.conf
文件通常只是临时生效,因为系统默认使用 NetworkManager
服务来管理网络,当网络服务重启或系统重启后,NetworkManager
可能会根据其自身的配置覆盖您手动修改的内容。
使用 NetworkManager 工具查看
为了获得更稳定和持久的配置信息,推荐使用 NetworkManager
提供的命令行工具 nmcli
。nmcli
可以显示每个网络连接的详细配置,包括 DNS 设置。
您可以使用以下命令查看系统中的网络接口状态:
nmcli dev status
输出会列出所有网络设备,如 eth0
、ens33
等,以及它们的连接名称。
使用 nmcli dev show
命令后跟具体的接口名或连接名来查看详细信息:
# 使用接口名 nmcli dev show ens33 # 或者使用连接名(通常与接口名相同) nmcli connection show ens33
在命令的输出中,找到与 DNS 相关的行:
...
IP4.DNS[1]: 192.168.1.1
IP4.DNS[2]: 8.8.8.8
...
这里 IP4.DNS
字段明确显示了为该连接配置的 DNS 服务器地址,通过 nmcli
查看到的配置是 NetworkManager
管理的“真实”配置,也是系统重启后会保持的配置。
使用诊断工具测试 DNS 解析
仅仅查看配置是不够的,我们还需要验证 DNS 服务器是否正常工作,以下是三个常用的命令行工具。
nslookup
(name server lookup)
nslookup
是一个经典且易于使用的 DNS 查询工具。
nslookup www.google.com
输出会显示查询的 DNS 服务器以及解析到的 IP 地址。
您还可以指定使用特定的 DNS 服务器进行查询,这对于排查问题非常有用:
nslookup www.baidu.com 8.8.8.8
这条命令会强制使用 Google 的 DNS 服务器(8.8.8.8)来查询 www.baidu.com
的 IP。
dig
(domain information groper)
dig
是一个功能更强大、信息更详细的 DNS 查询工具,深受网络管理员的喜爱。
dig www.google.com
dig
的输出非常详尽,包含了 QUESTION SECTION(查询部分)、ANSWER SECTION(回答部分)、AUTHORITY SECTION(授权部分)和 ADDITIONAL SECTION(附加部分)等,如果您只想要 IP 地址,可以使用 +short
选项:
dig +short www.google.com
host
host
命令是 dig
和 nslookup
的一个简化版本,输出相对简洁。
host www.google.com
它会直接显示域名对应的 IP 地址,以及所使用的 DNS 服务器。
方法对比与小编总结
为了方便您快速选择合适的方法,下表小编总结了上述几种查看 DNS 的途径。
方法 | 命令示例 | 描述 | 使用场景 |
---|---|---|---|
配置文件 | cat /etc/resolv.conf | 查看系统当前正在使用的 DNS 解析器配置。 | 快速、直接地了解当前生效的 DNS 服务器。 |
NetworkManager | nmcli dev show <interface> | 查看 NetworkManager 管理的特定网络连接的 DNS 配置。 | 获取持久化、正确的配置,是修改配置的参考依据。 |
诊断工具 | nslookup , dig , host | 实际测试 DNS 解析是否工作正常。 | 验证 DNS 服务器连通性、排查解析故障。 |
相关问答 (FAQs)
问题 1:我修改了 /etc/resolv.conf
文件,添加了一个新的 DNS 服务器,但重启网络服务后配置又恢复了,这是为什么?
解答:这个问题的根本原因在于 CentOS 7 默认使用 NetworkManager
来管理网络配置。NetworkManager
在启动或网络状态变化时,会根据其内部存储的连接配置(位于 /etc/sysconfig/network-scripts/
目录下)来重新生成 /etc/resolv.conf
文件,从而覆盖您的手动修改,要永久修改 DNS 设置,您应该使用 nmcli
命令(nmcli con mod <连接名> ipv4.dns "8.8.8.8 8.8.4.4"
)或者直接编辑对应的网络脚本文件(如 ifcfg-ens33
),在其中添加或修改 DNS1
和 DNS2
参数,然后重启网络服务。
问题 2:nslookup
和 dig
命令提示 “command not found”,我该如何安装它们?
解答:在最小化安装的 CentOS 7 系统中,这些网络诊断工具可能默认没有被安装,它们通常包含在 bind-utils
软件包中,您可以使用 yum
或 dnf
(取决于您的系统版本)来轻松安装它,请以 root 用户或使用 sudo
执行以下命令:
sudo yum install bind-utils
安装完成后,您就可以正常使用 nslookup
、dig
和 host
等强大的 DNS 查询工具了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复