Linux怎么查看DHCP分配的DNS?

HCRM技术_小炮 DNS 2025-09-21 2 1

Linux 环境下查看 DHCP 分配 DNS 的全面指南

在现代网络环境中,动态主机配置协议(DHCP)扮演着至关重要的角色,它自动为设备分配 IP 地址、子网掩码、默认网关以及 DNS 服务器等信息,对于 Linux 了解如何查看 DHCP 分配的 DNS 配置不仅是网络管理的基础,也是排查连接问题的重要技能,本文将详细介绍多种方法,帮助您轻松获取并验证 DHCP 分配的 DNS 信息。

为什么需要查看 DHCP 分配的 DNS?

DNS(域名系统)是将域名转换为 IP 地址的服务,是互联网访问的基石,DNS 配置不正确,可能会导致网络连接缓慢、网站无法访问等问题,通过 DHCP 自动获取 DNS 服务器地址可以简化网络配置,但有时您可能需要手动检查这些设置,

- 排查网络故障时验证 DNS 是否正确分配。

- 确认网络配置是否符合安全策略(如使用特定 DNS 服务器)。

- 调试脚本或应用程序时确保网络环境正确。

下面,我们将通过命令行工具、配置文件解析以及系统日志等多种方式,深入探讨如何在 Linux 中查看 DHCP 分配的 DNS。

方法一:使用nmcli 工具(NetworkManager 环境)

NetworkManager 是现代 Linux 发行版(如 Ubuntu、Fedora、CentOS)中常用的网络管理工具。nmcli 是其命令行接口,可以快速查看网络配置。

1、查看当前连接信息

运行以下命令列出所有连接:

   nmcli connection show

找到当前活动的连接(通常带有 “enp0s3” 或类似名称的以太网连接,或 “wlo1” 等无线连接)。

2、获取 DNS 配置

使用活动连接的名称(“Wired connection 1”)查看详细信息:

   nmcli connection show "Wired connection 1" | grep ipv4.dns

如果输出显示ipv4.dns: 的值为空,表示 DNS 是通过 DHCP 获取的,可以通过以下命令查看实际分配的 DNS:

   nmcli device show enp0s3 | grep DNS

这里的enp0s3 应替换为您的网络接口名称,输出将显示 DHCP 分配的 DNS 服务器地址。

示例输出

IP4.DNS[1]:                             192.168.1.1
IP4.DNS[2]:                             8.8.8.8

这种方法简单直接,适用于大多数桌面环境,但如果您的系统未使用 NetworkManager,可能需要其他方法。

方法二:解析/etc/resolv.conf 文件

/etc/resolv.conf 是 Linux 系统中存储 DNS 配置的传统文件,DHCP 客户端在获取配置后通常会更新该文件。

1、查看文件内容

使用catless 命令:

   cat /etc/resolv.conf

输出中,以nameserver 开头的行即为 DNS 服务器地址。

   nameserver 192.168.1.1
   nameserver 8.8.8.8

2、注意事项

- 如果系统使用 NetworkManager 或其他网络管理工具,/etc/resolv.conf 可能是符号链接(例如指向/run/systemd/resolve/stub-resolv.conf)。

- 在某些情况下,该文件可能被手动编辑或由其他服务(如systemd-resolved)管理,因此不一定完全反映 DHCP 分配的值,建议结合其他方法验证。

方法三:使用systemd-resolve 命令

对于使用systemd 的系统(如 Ubuntu 18.04+ 或 CentOS 8+),systemd-resolved 服务负责管理 DNS 配置。

1、查看全局 DNS 状态

运行以下命令:

   systemd-resolve --status

输出将详细显示每个网络接口的 DNS 配置,包括从 DHCP 获取的服务器地址。

2、过滤特定接口的信息

如果输出内容较多,可以结合grep 命令:

   systemd-resolve --status | grep -A5 "DNS Servers"

这将显示 DNS 服务器列表及其对应的接口。

示例输出

DNS Servers: 192.168.1.1
             8.8.8.8

方法四:检查 DHCP 客户端租约文件

DHCP 客户端在获取租约时会将信息存储在本地文件中,通过直接查看这些文件,可以获取原始的 DHCP 分配数据。

1、找到租约文件

- 如果使用dhclient,文件通常位于/var/lib/dhcp/dhclient.leases/var/lib/dhclient/dhclient-.leases

- 如果使用systemd-networkd,租约文件可能在/run/systemd/netif/leases/ 目录下。

2、查看租约内容

使用catgrep 命令搜索 DNS 相关条目:

   cat /var/lib/dhcp/dhclient.leases | grep "domain-name-servers"

输出将显示 DHCP 服务器分配的 DNS 地址列表。

示例输出

option domain-name-servers 192.168.1.1, 8.8.8.8;

这种方法提供了最原始的数据,但文件内容可能较复杂,需要一定的解析技巧。

方法五:使用dhcpcd 或其他 DHCP 客户端的工具

如果系统使用dhcpcd 作为 DHCP 客户端(常见于 Raspbian 或某些轻量级发行版),可以通过以下方式查看 DNS:

1、查看dhcpcd 状态

   dhcpcd -U enp0s3

其中enp0s3 是接口名称,该命令将显示所有 DHCP 获取的选项,包括 DNS。

2、检查配置文件

dhcpcd 可能会将 DNS 信息写入/etc/resolv.conf.head/etc/resolv.conf.tail 文件,这些文件的内容会合并到/etc/resolv.conf 中。

方法六:通过网络调试命令

对于高级用户,还可以使用tcpdumpdhcping 等工具监控 DHCP 流量,实时捕获 DNS 分配过程。

sudo tcpdump -i enp0s3 -n port 67 or port 68

这可以显示 DHCP 请求和响应包,但需要一定的网络知识来解析输出。

常见问题与故障排除

DNS 未更新:DHCP 分配的 DNS 未正确应用,尝试重启网络服务:

  sudo systemctl restart NetworkManager

  sudo dhclient -r enp0s3 && sudo dhclient enp0s3

释放并重新获取 DHCP 租约。

多接口环境:如果系统有多个网络接口(如以太网和 VPN),确保检查正确的接口,使用ip a 命令列出所有接口。

安全性考虑:恶意 DHCP 服务器可能分配虚假 DNS 地址(用于钓鱼攻击),始终验证 DNS 服务器的可靠性,尤其是在公共网络中。

通过以上多种方法,您可以在 Linux 系统中灵活查看 DHCP 分配的 DNS 配置,无论是使用图形化工具还是命令行,掌握这些技巧将显著提升您的网络管理能力,建议根据实际环境选择合适的方法:日常使用中nmclisystemd-resolve 最为便捷,而租约文件分析则适用于深度调试,保持对网络配置的关注,有助于确保流畅安全的互联网体验。

参考资源

- Linux 手册页:man nmcli,man dhclient

- 网络管理指南:Ubuntu 社区 Wiki、Arch Linux 文档

希望本文能为您提供实用且深入的指导!如果有其他问题,欢迎进一步探讨。

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

评论

精彩评论
  • 2025-09-21 07:38:24

    Linux系统下,可以通过`cat /etc/resolv.conf`命令查看DHCP分配的DNS。