从14.04开始如何知道我在Ubuntu中使用什么DNS


14

针对12.04的类似问题进行跟进。)

在Ubuntu 12.04之前,您可能会在中看到活动的DNS /etc/resolv.conf。在Ubuntu 12.04中,NetworkManager不再适用于该文件。您必须直接咨询命令行工具nm-tool

有趣的nm-tool是,默认情况下不再在14.04和更高版本中安装它。尽管您仍然apt-get install可以通过安装,但不能假设所有Ubuntu都可以立即使用。

因此问题仍然存在。您如何通过默认安装知道您通过命令行使用的DNS?

Answers:


30

快速回答

nmcli现在默认情况下会安装一个新的NetworkManager工具。命令行工具功能非常强大,但学习起来有点困难。坚持我们的问题,简短的答案是:

nmcli dev show | grep DNS

或者,使输出更干净

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2


说明

如果您有时间,我可以解释一下上面的笨拙问题:

  1. nmcli dev show

    有点像旧nm-tool命令。详细介绍了当前的网络信息。

    您还可以通过添加接口名称来了解特定接口的设置。例如,要了解的信息eth0,您可以使用nmcli dev show eth0

  2. grep DNS

    显然,仅grep其中带有文本“ DNS”的行。

  3. sed 's/\s\s*/\t/g' | cut -f 2

    这只是为了清理输出。在cut可以选择通过柱的输出,但只需要1个字符作为分隔符(同时nmcli使用许多空间)。将sed原始输出中的空格转换为TAB。


7
+1。不知道此实用程序,但是,我运行Ubuntu 14.04,命令是nmcli d list。除此之外,这里很棒的东西!
Terrance

1
sed具有-E标志,用于扩展正则表达式,允许r+而不是rr*
Squidly 2015年

1
该答案基于什么版本?在我的Trusty的nmcli版本上,0.9.8.8 nmcli dev show抛出了大的卷曲错误消息。
奥利(Oli)

5
@Oli nmcli dev show在15.04上属于nmcli。由于某种原因,旧的nmcli被认为不稳定。。。现在他们使用的nmcli标志与Fedora相同。可能是由于切换到systemd。而且由于此答案适合15.04,但不适合14.04,因此我很想
拒绝

1
我想回应上面的评论,这可能对15.04是正确的,但对于14.04不正确,这就是问题所在。
亚历克斯(Alex)

4

不管您使用NetworkManager还是其他网络连接工具,数据包分析都是一种行之有效的方法。基本思想是发送dns查询,nslookup并在第二个终端中检查数据包的位置。

为此,我们需要首次连接到网络,以便没有任何混乱的连接,然后运行以下命令:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  

在备用终端运行中:

nslookup google.com 

一旦您从收到包列表tcpdump,请检查它们从您的IP地址到哪里。

例如,

$ sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com                            
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    eagle.29862 > b.resolvers.Level3.net.domain: [udp sum ok] 64057+ [1au] A? google.com. ar: . OPT UDPsize=4096 (39)
    b.resolvers.Level3.net.domain > eagle.29862: [udp sum ok] 64057 q: A? google.com. 11/0/0 google.com. A 173.194.115.64, google.com. A 173.194.115.65, google.com. A 173.194.115.72, google.com. A 173.194.115.66, google.com. A 173.194.115.69, google.com. A 173.194.115.78, google.com. A 173.194.115.70, google.com. A 173.194.115.71, google.com. A 173.194.115.68, google.com. A 173.194.115.67, google.com. A 173.194.115.73 (204)
    eagle.16429 > b.resolvers.Level3.net.domain: [udp sum ok] 38822+ A? google.com. (28)

如您所见,我的笔记本电脑eagle将数据包发送到我大学的dns b.resolvers.Level3.net.domain。如果要查看IP地址,可以将-n标志与一起使用tcpdump

例如:

$ sudo tcpdump -n -vv -i wlan0 -W 1200 | grep google.com                         
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    10.10.87.145.56474 > 4.2.2.2.53: [udp sum ok] 15606+ A? google.com. (28)

2

检查您的网络连接:

ls /etc/NetworkManager/system-connections/

并选择要配置的连接。

 sudo cat /etc/NetworkManager/system-connections/Internet | grep dns

替换没有您的连接名称的“ Internet”


使用仍可以使用nm-tool

nm-tool | grep DNS

将其安装到U14.04,然后使用

sudo apt-get install nm-tool

例:

nm-tool | grep DNS
    DNS:             192.168.1.1
    DNS:             192.168.10.1
    DNS:             192.168.11.1

1

默认情况下,它与网络管理器捆绑在一起,在版本14.04上仍然可用。此后,它已从网络管理器(15.04版及更高版本)中删除,甚至无法通过apt-get获得。

目前,在15.04版中,您可以手动从旧软件包中下载并提取nm-tool。运行以下命令。

首先,创建一个临时目录以用于:

cd
mkdir APTGET;cd APTGET

然后,下载旧版本并解压缩文件:

wget 'http://us.archive.ubuntu.com/ubuntu/pool/main/n/network-manager/network-manager_0.9.8.8-0ubuntu7.1_amd64.deb'
ar xvf *
tar xvf dat*

新建一个目录:

mkdir ~/bin

(如果显示,则file already exists忽略该消息并继续)。

将文件复制到新目录:

cp ./usr/bin/nm-tool ~/bin

返回主目录并删除temp目录:

cd ..
rm -R APTGET

现在,为nm-tool设置别名:

cp ~/.bashrc ~/.bashback
echo 'alias nm-tool="~/bin/nm-tool"' | tee -a ~/.bashrc;. ~/.bashrc

现在,当前用户应该可以从终端运行nm-tool。


此外,这可能仍无法准确提供您正在使用的所有实际 DNS解析器。

您可以访问DNSleaktest.com以获得完整的报告。单击扩展测试以获取完整的报告。


1

实际上,NetworkManager确实使用/etc/resolv.conf。但是,在默认设置下,其中列出的DNS服务器resolv.conf127.0.0.1,因为NetworkManager出于某些晦涩的技术原因而使用了自己的内部DNS服务,这与许多人无关。这就是为什么您必须用来nmcli查看NetworkManager在内部使用的DNS服务器的原因。

但是,也可以禁用此行为,并返回到旧的,其中列出了正在使用的实际DNS服务器resolv.conf。要做到这一点,只需注释掉线dns=dnsmasq/etc/NetworkManager/NetworkManager.conf,并重新启动。对于大多数人来说,除了实际的DNS服务器现在将显示在中之外,这没有什么区别resolv.conf。如果您属于引入更改的特殊情况,那么这种情况很快就会显现出来,您可以通过再次取消注释该行来恢复为默认行为。


1

nmcli开发人员列表| grep DNS

它将输出类似;
IP4.DNS[1]: 8.8.8.8 IP4.DNS[1]: 8.8.8.8 IP4.DNS[2]: 8.8.4.4

上面的命令在Ubuntu 16.04之前运行。
对于Ubuntu 16.04,请使用:
nmcli dev show | grep DNS


您可能是nmcli dev show不是nmcli dev list
holmb

我做了一些挖掘,看来他们在Ubuntu 14.04和16.04之间更改了CLI。显然nmcli dev list适用于14.04,但不适用于16.04。
holmb

1

如果有人对Ubuntu 18.04LTS有与我相同的问题:

列出通过网络管理器管理的所有网络设备:

networkctl list

显示特定设备的配置:

networkctl status eth0

代替eth0,您必须输入之前在列表中显示的网络设备的名称。如果没有DNS条目,则您的卡没有配置的名称服务器

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.