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

197

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

    
Anurag Uniyal 18.06.2012 - 16:36

7 答案

197

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

Ubuntu> = 15

nmcli device show <interfacename> | grep IP4.DNS

Ubuntu&lt; = 14

nmcli dev list iface <interfacename> | grep IP4

就我而言, <interfacename>eth0 ,这很常见,但并非总是如此。

看看这是不是你想要的。

编辑:

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

    
给出答案 Marty Fried 18.06.2012 - 17:20
82

这适用于Ubuntu 13.10及更早版本。对于Ubuntu 14.04及更高版本,请参阅 Koala Yeung的回答:如何知道从14.04开始我在Ubuntu中使用的DNS / p>

使用

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
    
给出答案 tgm4883 18.06.2012 - 17:22
31

两个得分最高的答案, nmcli dev list iface <interfacename> | 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编辑的环境本地地址被正确解析。 Google的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
    
给出答案 Peter V. Mørch 28.05.2015 - 21:19
28

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

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

 dns-nameservers x.x.x.x x.x.x.x

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

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

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

    
给出答案 ssc 03.05.2013 - 17:27
8

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
    
给出答案 iman 19.08.2015 - 12:03
2

在Ubuntu 15.10中,您可以获得DNS

nmcli device show <interface name> 
    
给出答案 Suleman 02.03.2016 - 19:09
0

似乎由网络管理员管理。看看这里链接

获得大量解释。

或者要查看的简短版本

 /etc/NetworkManager/NetworkManager.conf

 <SYSCONFDIR>/NetworkManager/NetworkManager.conf
    
给出答案 mbs 18.06.2012 - 16:46

阅读有关标签的其他问题