当前位置: 首页>>技术教程>>正文


命令行列出我的系统使用的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 <interfacename> | grep IP4.DNS

Ubuntu< = 14

nmcli dev list iface <interfacename> | grep IP4

在我的情况下,<interfacename>eth0,这很常见,但并非总是如此。

看看这是你想要的。

编辑:

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

次佳解决方案

这对Ubuntu 13.10及更早版本有效。对于Ubuntu 14.04及更高版本,请参阅Koala Yeung’s answer to: How to know what DNS am I using in Ubuntu from 14.04 onwards


使用

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

第三种解决方案

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

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

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

x是您希望使用的DNS服务器。

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

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

第四种方案

两个top-scoring答案,nmcli dev list iface <interfacename> | grep IP4nm-tool都假定network-manager在控制范围内。它至少在大部分时间都是台式机。但更完整的答案是,有时network-manager不受控制。例如。 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)

现在你知道我们正在使用本地主机。继续提供一个受欢迎的答案。我喜欢:

> 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-ed转换为环境的本地地址已正确解析。所有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

第五种方案

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 15.10中,你可以获得DNS

nmcli device show <interface name> 

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/236.html,未经允许,请勿转载。