用于列出我的系统使用的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 | grep IP4.DNS
Ubuntu <= 14
nmcli dev list iface | grep IP4
在我的例子中,
是eth0
,这是常见的,但并非总是如此。
看看这是不是你想要的。
编辑:
我认为resolv.conf实际上是间接使用的,因为网络管理器创建了侦听127.0.0.1的服务器,但我被告知这是一个不应该依赖的实现细节。 我认为如果您在此条目之前输入DNS地址,它们可能会被使用,但我不确定它是如何工作的。 在可能的情况下,我认为在大多数情况下最好使用网络管理器。
这适用于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
两个得分最高的答案, nmcli dev list iface
nmcli dev list iface
和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编辑的环境本地地址被正确解析。 所有这些谷歌的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
cat /etc/resolv.conf
应显示您的DNS服务器。
您不能直接使用Ubuntu 12.04修改resolv.conf
。 如果您需要更改它们,可以通过添加以下内容在/etc/network/interfaces
文件中添加新的DNS服务器:
dns-nameservers xxxx xxxx
其中x
是您要使用的DNS服务器。
如果我是你,我会卸载network-manager
。 在我看来,这是一堆垃圾。
您可以手动完成所需的所有操作,而无需担心更改设置,尤其是在计算机上有多个NIC的情况下。
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 18.04中,您可以使用systemd-resolve --status
在Ubuntu 15.10中,您可以获得DNS
nmcli device show
似乎由网络管理员管理。 看看这里http://manpages.ubuntu.com/manpages/precise/man5/NetworkManager.conf.5.html
为了一个大的解释。
或者是它的短版本
/etc/NetworkManager/NetworkManager.conf
要么
/NetworkManager/NetworkManager.conf