是否有命令可以列出我的系统使用的 DNS 服务器?
我试过
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
$ cat /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
但它没有列出任何服务器。如果我转到“网络管理器 GUI 工具”,它会在无线部分列出“DNS 192.168.1.1 8.8.8.8 8.8.4.4”。
我可以从命令行获取相同的信息吗?
我正在使用 Ubuntu 12.04 LTS。
答案1
resolv.conf 已经不再使用了,除非您自己实现它。现在由网络管理员来做这件事。我创建了一个别名来列出我系统上的 DNS 服务器,因为我有时会从 OpenDNS 切换到 Google 的开放 DNS。
Ubuntu >= 15
nmcli device show <interfacename> | grep IP4.DNS
Ubuntu <= 14
nmcli dev list iface <interfacename> | grep IP4
在我的情况下,<interfacename>
是eth0
,这很常见,但并非总是如此。您可以使用
nmcli device status
看看这是不是你想要的。
编辑:
我认为 resolv.conf 实际上是间接使用的,因为网络管理器创建了监听 127.0.0.1 的服务器,但我被告知这是一个不应依赖的实现细节。我认为如果您在此条目之前输入 DNS 地址,它们可能会被使用,但我不确定它的具体工作原理。我认为在大多数情况下,如果可能,最好使用网络管理器。
答案2
在 Ubuntu 18.04 和 20.04 中,您可以使用systemd-resolve --status
。在较新版本中使用resolvectl status
。
答案3
这适用于 Ubuntu 13.10 及更早版本。对于 Ubuntu 14.04 及更高版本,请参阅Koala Yeung 的回答:如何知道从 14.04 开始我在 Ubuntu 中使用的 DNS
使用
nm-tool
您将获得类似以下的输出
NetworkManager Tool
State: connected (global)
- Device: eth0 [Wired connection 1] -------------------------------------------
Type: Wired
Driver: e1000e
State: connected
Default: yes
HW Address: 00:11:22:33:44:55
Capabilities:
Carrier Detect: yes
Speed: 1000 Mb/s
Wired Properties
Carrier: on
IPv4 Settings:
Address: 10.21.6.13
Prefix: 24 (255.255.255.0)
Gateway: 10.21.6.1
DNS: 10.22.5.133
DNS: 10.22.5.3
或者只查看 DNS
nm-tool | grep DNS
答案4
cat /etc/resolv.conf
应该显示您的 DNS 服务器。
您可能无法resolv.conf
直接使用 Ubuntu 12.04 进行修改。但是,如果您需要更改它们,您可以
/etc/network/interfaces
通过添加以下内容在文件中添加新的 DNS 服务器:
dns-nameservers x.x.x.x x.x.x.x
x
您希望使用的 DNS 服务器在哪里。
如果我是你,我会卸载network-manager
。在我看来,这是一堆垃圾。
您可以手动完成所有需要做的事情,而不必担心更改设置,特别是当您的计算机上有多个 NIC 时。