Ubuntu 18.04 服务器 - 如何检查正在使用的 DNS IP 服务器设置

Ubuntu 18.04 Server - how to check DNS IP server setting being used

使用 Ubuntu 18.04 服务器 LTS。我试图找到一种方法来检查通过 DHCP 设置时实际使用的 DNS IP。 resolv.conf 现在只会指向 127.0.0.53。 /etc/systemd/network 文件夹为空。 NSLOOKUP 输出也始终引用内部 127.0.0.53 IP。似乎所有的老把戏都不管用了。

Ubuntu 文档尚未更新,因为它仍然看起来像是 16.04 的帮助,引用了 eth0、ifup 和 ifdown,它们在 18 上都已弃用:https://help.ubuntu.com/lts/serverguide/network-configuration.html

我尝试通过自定义 .yaml 使用 Netplan 设置静态适配器设置。设置工作正常,但我似乎无法找到我在任何地方设置的 DNS IP。我希望它在 DHCP 和静态设置之间保持一致,但我不确定现在去哪里看。

此时我会选择 C ​​库调用或 bash CLI 方法。有没有人有办法在 18.04 服务器上检查这个?

我也很惊讶。我是 运行 Ubuntu 16.04 LTS,看到类似的东西。

如果您发出

dig www.google.ca +trace | grep 'Received'

响应中的第一个主机是为您的服务器执行查找的主机。

$ dig www.google.ca +trace | grep 'Received'
;; Received 525 bytes from 127.0.1.1#53(127.0.1.1) in 19 ms
;; Received 42 bytes from 199.7.91.13#53(d.root-servers.net) in 32 ms

这意味着此框正在直接对根服务器执行它自己的 dns 查找,并递归地遵循路径以获取我的 dns 查找。

发现问题是启用了 dnsmasq。要禁用它,请执行以下操作。

编辑 NetworkManager.conf 文件

sudo gedit /etc/NetworkManager/NetworkManager.conf

注释掉 dnsmasq 行

#dns=dnsmasq

重新启动网络管理器服务

sudo /etc/init.d/network-manager restart

然后确认它正在使用通过 dhcp

分配的 dns 服务器
$ dig www.google.ca +trace | grep 'Received'
;; Received 525 bytes from 192.168.30.1#53(192.168.30.1) in 18 ms
;; Received 42 bytes from 198.41.0.4#53(a.root-servers.net) in 32 ms

我发现以下内容在输出末尾显示了我的适配器的 DNS 服务器:

systemd-resolve --status

它包含 'DNS Servers' 下由 Link 组织的列表。我认为这与以前的版本 Ubuntu 有所不同。这需要一些文本解析工作,但这给了我想要的东西。

另一种方式是:

cat /run/systemd/resolve/resolv.conf

该文件由 systemd-resolved 动态生成,但包含实际的 DNS 服务器而不是 127.0.0.53。

事实上,如果您想将其设为 /etc/resolv.conf 的默认值,您只需为其创建符号链接即可。 (/etc/resolv.conf 是默认指向 /run/systemd/resolve/stub-resolv.conf 的符号链接):

sudo mv /etc/resolv.conf /etc/resolv.conf.orig
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

样本/run/systemd/resolve/resolv.conf

# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 10.1.2.3
search host.domain.com

更多信息:

http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html

您还可以使用:

nmcli dev show eth0

将 eth0 替换为您的网络接口以查看其配置方式。如果您通过 DHCP 获得 DNS 地址,您应该会在此处看到它。