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

Koa*_*ung 18 network-manager networking dns

对 12.04 类似问题的跟进。)

在 Ubuntu 12.04 之前,您可能会在/etc/resolv.conf. 在 Ubuntu 12.04 中,NetworkManager 不再处理该文件。您必须直接咨询命令行工具nm-tool

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

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

Koa*_*ung 35

快速回答

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

nmcli dev show | grep DNS
Run Code Online (Sandbox Code Playgroud)

或者,有更干净的输出

nmcli dev show | grep DNS | sed 's/\s\s*/\t/g' | cut -f 2
Run Code Online (Sandbox Code Playgroud)


解释

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

  1. nmcli dev show

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

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

  2. grep DNS

    显然只搜索带有“DNS”文本的行。

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

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

  • +1。不知道这个实用程序,但是,我运行的是 Ubuntu 14.04,我的命令是 `nmcli d list`。除此之外,这里的好东西! (7认同)
  • @Oli `nmcli dev show` 在 15.04 属于 nmcli。出于某种原因,旧的 nmcli 被认为不稳定,因此 . . . 现在他们使用与 Fedora 具有相同标志的 `nmcli`。这可能是由于切换到 systemd。因为这个答案适合 15.04 但不适合 14.04,所以我很想对它投反对票 (5认同)

Ser*_*nyy 7

无论您使用何种 NetworkManager 或其他网络连接工具,数据包分析都是一种替代方法。基本思想是发送 dns 查询nslookup并在第二个终端中检查数据包的去向。

为此,我们需要第一次连接到网络,以免连接混乱,然后运行以下命令:

sudo tcpdump -vv -i wlan0 -W 1200 | grep google.com  
Run Code Online (Sandbox Code Playgroud)

在替代终端运行:

nslookup google.com 
Run Code Online (Sandbox Code Playgroud)

从 中获得数据包列表后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)
Run Code Online (Sandbox Code Playgroud)

如您所见,我的笔记本电脑 ,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)
Run Code Online (Sandbox Code Playgroud)