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

我的系统正在使用@LordofTime DNS服务器

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

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

#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,这很常见,但并非总是如此。

看看这是否是您想要的。

编辑:

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

评论


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

–阿努拉格(Anurag Uniyal)
2012年6月18日15:26



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

–马蒂·弗里德
2012年6月18日15:35

stgraber.org/2012/02/24/dns-in-ubuntu-12-04是一篇关于ubuntu 12.04中DNS解析的不错的文章

–阿努拉格(Anurag Uniyal)
2012年6月18日15:37

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

– flickerfly
15年8月11日在18:37

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

–马蒂·弗里德
17年5月22日在23:17

#2 楼

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


评论


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

–Samik
2012年6月18日15:26

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

–阿努拉格(Anurag Uniyal)
2012年6月18日15:30

在lubuntu 14.04上也很好用。谢谢

–詹姆斯·坎贝尔
15年10月21日在13:50

在15.10上找不到nm-tool

–迷宫
15年11月24日在17:16

是的,这不再起作用了……16.x中也没有nm-tool。 nmcli(在Marty Fried的回答中)是必经之路

–伦巴特
17年2月15日在0:30

#3 楼

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

评论


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

– Rqomey
19年9月6日在13:16

+1,内置检查。不需要外部工具。

–cgasp
20 Mar 18 '20 at 9:44

+10,不需要额外的工具

–享受
20-04-23在16:36

#4 楼

得分最高的两个答案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)


现在您知道我们正在使用本地主机。继续提供流行的答案之一。我喜欢:

> 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


评论


这是最完整的答案

– Marinos An
18年7月4日在13:17

谢谢。我们当中有些人不使用NM,这对社区有益。

–斯蒂芬·波士顿(Stephen Boston)
'18 Sep 9'在12:27

仅需完成,即可使用apt install dnsutils轻松安装dig实用程序。

– Daniele Vrut
19年7月24日在7:47

#5 楼

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

评论


更改DNS后是否需要重新启动nm?

–巴尔加夫Nanekalva
15年3月25日在7:43

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

–亚当
15年7月18日在8:23

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

– Marinos An
18年7月4日在13:14



#6 楼

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


#7 楼

在Ubuntu 15.10中,您可以获得DNS

nmcli device show <interface name> 


#8 楼

令人惊讶的是有多少种方法可以做到这一点。在Ubuntu Server 18.04上,如果您不想安装其他任何东西,例如nm-tool,则systemd-resolve --status可以开箱即用地获取DNS信息。

如果您有兴趣获取不仅是DNS服务器,还有默认网关,IP地址,网络掩码等,然后netplan ip leases eth0将以易于阅读的形式为您提供所有信息(假设您对eth0界面感兴趣)。

评论


谢谢,我没有NetworkManager,也不想安装它,您的回答非常有帮助。

– Stavros Korokithakis
20-04-14在12:49

#9 楼

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

进行详细说明。

或者要查看的简短版本

 /etc/NetworkManager/NetworkManager.conf




 <SYSCONFDIR>/NetworkManager/NetworkManager.conf


评论


但是/etc/NetworkManager/NetworkManager.conf中没有列出任何DNS服务器

–阿努拉格(Anurag Uniyal)
2012年6月18日15:20

#10 楼

在未安装systemd-resolved的系统上:
 $ host -v something.unknown | awk -F "[ #]" '/Received /{print}' | uniq
192.168.1.1
 

在运行NetworkManager的系统上:
$ ( nmcli -f IP4.DNS,IP6.DNS dev list || nmcli -f IP4.DNS,IP6.DNS dev show ) 2>/dev/null | awk '/DNS/{print$NF}'
192.168.1.1