快速回答

快速回答

(跟进12.04 的类似问题

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

有趣的是,nm-tool在 14.04 及更高版本中不再默认安装。尽管您仍可以通过 安装apt-get install,但您不能假设所有 Ubuntu 都具有该功能。

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

答案1

快速回答

现在默认安装了一个新的 NetworkManager 工具nmcli。这个命令行工具非常强大,但学习起来有点困难。继续我们的问题,简短的回答是:

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。

答案2

数据包分析是一种替代方法,无论您使用 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)

答案3

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

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

networkctl list

显示特定设备的配置:

networkctl status eth0

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

答案4

由于它与网络管理器捆绑在一起,因此在 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

返回主目录并删除临时目录:

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获取完整报告。点击延伸测试获得完整报告。

相关内容