用于列出我的系统使用的DNS服务器的命令行

是否有命令列出我的系统使用的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

resolv.conf不再使用了,除非你自己实现它。 网络管理员现在就做了。 我创建了一个别名来列出我系统上的DNS服务器,因为我有时会从OpenDNS切换到Google的开放DNS。

Ubuntu> = 15

 nmcli device show  | grep IP4.DNS 

Ubuntu <= 14

 nmcli dev list iface  | grep IP4 

在我的例子中, eth0 ,这是常见的,但并非总是如此。

看看这是不是你想要的。

编辑:

我认为resolv.conf实际上是间接使用的,因为网络管理器创建了侦听127.0.0.1的服务器,但我被告知这是一个不应该依赖的实现细节。 我认为如果您在此条目之前输入DNS地址,它们可能会被使用,但我不确定它是如何工作的。 在可能的情况下,我认为在大多数情况下最好使用网络管理器。

这适用于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 

两个得分最高的答案, nmcli dev list iface | grep IP4 nmcli dev list iface | grep IP4nm-tool都假设网络管理器处于控制之中。 它是什么 – 至少在桌面机器上大部分时间。 但更全面的答案是有时网络管理员无法控制。 例如, vpnc直接与/etc/resolv.conf

所以:首先检查是否使用了127.0.0.1/localhost。 这可以通过dig来完成:

 > dig something.unknown | grep SERVER: ;; SERVER: 127.0.0.1#53(127.0.0.1) 

现在你知道我们正在使用localhost。 继续其中一个流行的答案。 我喜欢:

 > nm-tool | grep DNS: DNS: 8.8.8.8 

但是如果没有使用127.0.0.1/localhost,那么nm-toolnmcli的输出会产生误导:

 > dig something.unknown | grep SERVER: ;; SERVER: 172.22.216.251#53(172.22.216.251) > nm-tool | grep DNS: DNS: 8.8.8.8 

在这里, dig是正确的, nm-tool的信息具有误导性。 实际上,我已经VPN编辑的环境本地地址被正确解析。 所有这些谷歌的DNS 8.8.8.8 都不知道。

这是因为在使用vpnc连接到VPN后,它在/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 1.2.3.4 nameserver 127.0.0.1 search MyDomain 

cat /etc/resolv.conf应显示您的DNS服务器。

您不能直接使用Ubuntu 12.04修改resolv.conf 。 如果您需要更改它们,可以通过添加以下内容在/etc/network/interfaces文件中添加新的DNS服务器:

  dns-nameservers xxxx xxxx 

其中x是您要使用的DNS服务器。

如果我是你,我会卸载network-manager 。 在我看来,这是一堆垃圾。

您可以手动完成所需的所有操作,而无需担心更改设置,尤其是在计算机上有多个NIC的情况下。

nmcli版本0.9.10

您可以使用以下任一命令:

 nmcli -t -f IP4.DNS device show eth0 IP4.DNS[1]:192.168.1.1 IP4.DNS[2]:8.8.8.8 nmcli -t -f IP4.DNS connection show conn-name IP4.DNS[1]:192.168.1.1 IP4.DNS[2]:8.8.8.8 

在Ubuntu 18.04中,您可以使用systemd-resolve --status

在Ubuntu 15.10中,您可以获得DNS

 nmcli device show  

似乎由网络管理员管理。 看看这里http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html

为了一个大的解释。

或者是它的短版本

  /etc/NetworkManager/NetworkManager.conf 

要么

  /NetworkManager/NetworkManager.conf