我尝试了
$ 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
#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 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)
现在您知道我们正在使用本地主机。继续提供流行的答案之一。我喜欢:
> 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
都不知道。这是因为在使用
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中,您可以获得DNSnmcli 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
评论
您想找到什么?系统正在使用的DNS服务器?还是您要进行DNS查找?前者@LordofTime
我的系统正在使用@LordofTime DNS服务器
您正在使用127.0.0.1。您正在运行DNS服务器吗?
有关此问题的非Ubuntu版本,请参见unix.stackexchange.com/q/28941/38647