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


253

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


您想找到什么?系统正在使用的DNS服务器?还是您要进行DNS查找?
托马斯·沃德

前@LordofTime
ish

我的系统正在使用@LordofTime DNS服务器
Anurag Uniyal,2012年

您正在使用127.0.0.1。您正在运行 DNS服务器吗?
Skaperen

有关此问题的非Ubuntu版本,请参见unix.stackexchange.com/q/28941/38647
mwfearnley,2018年

Answers:


250

除非您自己实现,否则resolv.conf不再真正使用。网络管理员现在就这样做。我有时会从OpenDNS切换到Google的开放DNS,因此创建了一个别名来列出系统上的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地址,它们可能会被使用,但是我不确定这是如何工作的。我认为在大多数情况下,最好使用网络管理器。


2
谢谢,是的,这似乎可行,Ubuntu网络似乎令人困惑,因此我可以在resolve.conf / base或/ etc / network / interfaces或网络管理器中设置dns服务器,是否有确定的ubuntu网络指南?
Anurag Uniyal 2012年

如果使用GUI,则最好的设置方法是在“网络连接”对话框中创建配置文件。我复制了默认值,然后编辑了重复项以进行所需的更改,并保留默认值以确保我始终具有有效的配置文件。然后,很容易切换配置文件。我不知道如何在没有GUI的情况下执行此操作,但是有一个“ James Henstridge”用户,他对Ubuntu的网络非常了解。您可以尝试在Askubuntu中搜索他的信息。他告诉我我在这篇文章中给你的命令。
马蒂·弗里德

1
stgraber.org/2012/02/24/dns-in-ubuntu-12-04是一篇很好的文章,涉及ubuntu 12.04中的DNS解析
Anurag Uniyal 2012年

6
我正在使用15.04,而'nmcli dev show | grep DNS'代替了我。
flickerfly

1
@vcardillo:最初的问题是:“我正在使用Ubuntu 12.04 LTS”。我发布答案已经5年了。没有什么可以天长地久。
Marty Fried

85

这对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

1
只是想添加,转到的nm-applet“连接信息”菜单也将起作用:)
Samik 2012年

1
+1也会起作用,@ Marty Fried回答的nm-cli也是如此
Anurag Uniyal 2012年

2
在lubuntu 14.04上也很好用。谢谢
jamescampbell 2015年

2
在15.10
迷宫

1
是的,这不再起作用... nm-tool在16.x中也不行。nmcli(以马蒂·弗里德(Marty Fried)的回答)是必经之路
Lambart

46

这两个得分最高的答案,nmcli dev list iface <interfacename> | grep IP4并且nm-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-tool的和nmcli的输出将产生误导:

> 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 知道所有这些。

这是因为使用连接到VPN后vpnc,它会插入一条线,/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

3
这是最完整的答案
Marinos

谢谢。我们当中有些人不使用NM,这对社区有益。
斯蒂芬·波士顿

只需完成,dig即可使用轻松安装该实用程序apt install dnsutils
Daniele Brugnara

32

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的情况下。


2
更改DNS后是否需要重新启动nm?
Bhargav Nanekalva 2015年

1
- 谢谢。这很棒。即使没有该网络管理器业务,它也能正常工作。
亚当

“ cat /etc/resolv.conf应该显示您的DNS服务器”。没有。
Marinos

25

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


注意:如果您使用/etc/resolv.conf,它甚至会说这
句话

11

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.