Linux查看DNS可通过执行
nmcli dev show
命令或直接查看/etc/resolv.conf
Linux系统查看DNS配置的详细指南
在Linux系统中,DNS(域名系统)负责将域名解析为IP地址,正确配置和查看DNS设置对于网络连接稳定性和故障排查至关重要,本文将详细介绍在Linux系统中查看DNS配置的多种方法,并针对不同场景提供解决方案。
通过配置文件查看DNS设置
查看/etc/resolv.conf
文件
这是Linux系统中最直接查看DNS配置的方式,该文件存储了当前系统使用的DNS服务器列表。
命令:
cat /etc/resolv.conf
示例输出:
# Generated by NetworkManager nameserver 8.8.8.8 nameserver 8.8.4.4
说明:
nameserver
后面跟随的是DNS服务器的IP地址。- 该文件可能由NetworkManager或其他网络管理工具自动生成。
- 注意:手动修改此文件可能被网络管理工具覆盖(如NetworkManager)。
查看NetworkManager配置文件
如果系统使用NetworkManager管理网络,DNS配置可能存储在/etc/NetworkManager/systemconnections/
目录下。
命令:
ls /etc/NetworkManager/systemconnections/
操作步骤:
- 进入对应网络连接的目录,例如
sudo vim /etc/NetworkManager/systemconnections/yourconnectionname
。 - 查找
[dns]
段落,配置类似以下内容:[dns] dns=8.8.8.8,8.8.4.4
不同发行版的DNS配置文件路径
发行版 | DNS配置文件路径 |
---|---|
Ubuntu/Debian | /etc/resolv.conf |
CentOS/RHEL | /etc/resolv.conf (由network 脚本管理) |
Fedora | /etc/resolv.conf (由NetworkManager管理) |
Arch Linux | /etc/resolv.conf |
使用命令行工具查看DNS信息
nmcli
工具(适用于NetworkManager)
nmcli
是NetworkManager的命令行接口,可查看网络连接的详细信息。
命令:
nmcli connection show active | grep DNS
示例输出:
Wired connection 1: dns4: 8.8.8.8,8.8.4.4 dns3: dns2: dns1:
说明:
dns4
表示IPv4的DNS服务器列表。- 如果未显示DNS信息,可尝试
nmcli t f DNS4 connection show yourconnectionname
。
systemdresolve
工具(系统解析器)
现代Linux系统使用systemdresolved
作为DNS解析服务,可通过以下命令查看配置。
命令:
systemdresolve status
示例输出:
Global DNS Servers: 8.8.8.8 DNS Domain: ~. Cache Timeout: 30s ... Link 2 (enp0s3) DNS Servers: 8.8.8.8 DNS Domain: example.com
说明:
Global
部分显示全局DNS配置。Link
部分显示特定网络接口的DNS配置。
dig
和nslookup
测试DNS解析
虽然不是直接查看配置,但可以通过这两个工具验证DNS解析是否正常。
测试命令:
dig www.baidu.com nslookup www.baidu.com
示例输出(dig
):
;; ANSWER SECTION: www.a.shifen.com 300 IN A 123.125.115.110
说明:
- 如果解析成功,说明DNS配置正常。
- 如果失败,需检查DNS服务器是否可达或配置是否正确。
通过图形界面查看DNS设置
GNOME桌面环境
- 打开“设置” → “网络”。
- 选择当前网络连接 → 点击“详情”。
- 在“IPv4”或“IPv6”配置页面中查看“DNS服务器”字段。
KDE Plasma桌面环境
- 打开“系统设置” → “网络配置”。
- 选择当前连接 → 切换到“DNS”标签页。
- 查看手动或自动配置的DNS服务器列表。
验证DNS配置是否生效
使用ping
测试DNS服务器连通性
命令:
ping 8.8.8.8
说明:
- 如果返回
PING
响应,说明DNS服务器可达。 - 如果超时或失败,可能是网络问题或防火墙阻止。
检查DNS缓存
systemdresolved
会缓存DNS解析结果,可通过以下命令清除缓存:
命令:
sudo systemdresolve flushcaches
常见问题与解决方法
问题1:修改/etc/resolv.conf
后DNS未生效
原因:
- 网络管理工具(如NetworkManager)自动覆盖了手动修改。
- 配置文件语法错误。
解决方法:
- 通过NetworkManager图形界面或
nmcli
修改DNS。 - 禁用NetworkManager对
/etc/resolv.conf
的管理(不推荐):sudo nmcli general dnscplugin disable
问题2:DNS解析失败但网络正常
排查步骤:
- 检查
/etc/resolv.conf
中的DNS服务器是否可达。 - 使用
dig
或nslookup
测试解析。 - 尝试更换公共DNS(如8.8.8.8、1.1.1.1)。
- 检查防火墙是否阻止DNS请求(端口53)。
相关问题与解答
问题1:如何更改Linux系统的DNS服务器?
解答:
- 临时修改:直接编辑
/etc/resolv.conf
,添加新的DNS服务器。sudo vim /etc/resolv.conf # 添加 nameserver 1.1.1.1
- 永久修改:
- 通过NetworkManager图形界面或
nmcli
命令修改。 - 编辑
/etc/NetworkManager/systemconnections/yourconnectionname
文件,在[dns]
段落添加DNS服务器。
- 通过NetworkManager图形界面或
问题2:如何清除Linux的DNS缓存?
解答:
- 如果使用
systemdresolved
:sudo systemdresolve flushcaches
- 如果使用
dnsmasq
:sudo systemctl restart dnsmasq
- 如果无缓存服务,直接重启网络服务:
sudo systemctl restart NetworkManager
通过以上方法,您可以全面掌握Linux系统中DNS配置的查看与管理技巧,建议优先使用图形化工具或nmcli
命令进行配置