在Linux系统中,DNS(域名系统)地址是网络通信的关键配置,它负责将域名解析为IP地址,查看当前系统使用的DNS地址有多种方法,适用于不同的Linux发行版和场景,以下是常用且详细的操作方式。
使用nslookup
命令查询DNS服务器
nslookup
(Name Server Lookup)是Linux中最基础的DNS查询工具,可用于查看当前系统使用的DNS服务器地址。
基本用法
-
直接查询默认DNS服务器
在终端输入nslookup
(不带参数),进入交互模式,输入任意域名(如www.baidu.com
),系统会返回当前使用的DNS服务器地址及解析结果:nslookup > www.baidu.com Server: 192.168.1.1 # 当前DNS服务器地址 Address: 192.168.1.1#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. www.a.shifen.com 220.181.38.148 www.a.shifen.com 220.181.38.149
退出交互模式可输入
exit
或按Ctrl+D
。 -
指定DNS服务器查询
若需测试特定DNS服务器是否可用,可带参数执行,例如用Google DNS(8.8.8.8)查询:nslookup www.baidu.com 8.8.8.8
使用dig
命令获取详细DNS信息
dig
(Domain Information Groper)是比nslookup
更强大的DNS工具,可显示更详细的解析过程,适用于需要调试DNS问题的场景。
基本用法
-
查询默认DNS服务器
输入dig +short
可仅返回解析的IP地址,默认使用系统配置的DNS服务器:dig +short www.baidu.com # 输出:220.181.38.148 220.181.38.149
不加
+short
参数会显示完整解析过程,包括DNS服务器、查询时间、响应码等:dig www.baidu.com
-
指定DNS服务器
与nslookup
类似,可通过指定DNS服务器:dig @8.8.8.8 www.baidu.com
使用systemd-resolve
命令(systemd系统适用)
对于采用systemd作为初始化系统的Linux发行版(如Ubuntu 18.04+、CentOS 7+),systemd-resolve
是管理DNS服务的工具,可查看当前DNS配置。
基本用法
-
查看DNS状态
执行以下命令可显示当前DNS服务器地址、搜索域、连接信息等:systemd-resolve --status
输出示例中,
DNS Servers
行即为当前使用的DNS地址:DNS Servers: 192.168.1.1 8.8.8.8 DNS Domain: localdomain
-
查看当前连接的DNS
若使用NetworkManager管理网络,可结合nmcli
查看特定连接的DNS配置:nmcli connection show --active | grep ipv4.dns
查看/etc/resolv.conf
文件
/etc/resolv.conf
是Linux系统中传统的DNS配置文件,直接记录了系统使用的DNS服务器地址。
查看方法
使用cat
命令查看文件内容:
cat /etc/resolv.conf ``` 示例: ```bash # Generated by NetworkManager nameserver 192.168.1.1 # 主DNS服务器 nameserver 8.8.8.8 # 备用DNS服务器 search localdomain # 搜索域
注意:在systemd系统(如Ubuntu)中,/etc/resolv.conf
可能由systemd-resolved
或NetworkManager自动管理,直接修改可能被覆盖,建议通过系统工具(如nmcli
)永久修改DNS。
使用nmcli
命令(NetworkManager适用)
对于使用NetworkManager管理网络的系统(如Ubuntu、Fedora、RHEL等),nmcli
是命令行工具,可查看和修改当前网络连接的DNS配置。
查看方法
-
查看所有活跃连接的DNS
nmcli connection show --active | grep ipv4.dns
-
查看特定连接的详细配置
先通过nmcli connection show
列出所有连接,选择目标连接(如ens33
),再查看DNS:nmcli connection show ens33 | grep ipv4.dns
不同方法对比总结
方法 | 命令示例 | 适用场景 | 优点 |
---|---|---|---|
nslookup |
nslookup www.baidu.com |
快速查询默认DNS服务器 | 简单直观,适合基础查询 |
dig |
dig +short www.baidu.com |
获取详细DNS解析信息 | 信息全面,适合调试 |
systemd-resolve |
systemd-resolve --status |
systemd系统查看DNS状态 | 显示系统级DNS配置 |
/etc/resolv.conf |
cat /etc/resolv.conf |
查看传统DNS配置文件 | 直接查看文件内容 |
nmcli |
nmcli connection show --active |
NetworkManager管理网络 | 适用于桌面版或服务器网络管理 |
相关问答FAQs
Q1:为什么/etc/resolv.conf
中的DNS地址和我手动设置的不一致?
A:在采用systemd或NetworkManager的系统中,/etc/resolv.conf
文件通常由系统服务自动管理(如systemd-resolved
或NetworkManager),直接修改该文件可能会在系统重启或网络状态变化后被覆盖,若需永久修改DNS,建议使用对应的管理工具:例如在Ubuntu中可通过nmcli connection modify <连接名> ipv4.dns "8.8.8.8"
设置,或在CentOS中通过nmcli connection modify <连接名> ipv4.dns "8.8.8.8"
,修改后重启网络服务(nmcli connection down <连接名> && nmcli connection up <连接名>
)。
Q2:如何临时修改Linux系统的DNS地址?
A:临时修改无需重启系统,可直接修改/etc/resolv.conf
文件(但可能被后续操作覆盖),或使用nslookup
指定DNS服务器查询,临时将DNS设置为8.8.8.8,可执行:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
若需临时使用特定DNS解析某个域名,可直接用nslookup
或dig
指定DNS服务器,如nslookup www.baidu.com 8.8.8.8
,这种方式仅对当前查询有效,不影响系统全局DNS配置。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16898.html