resolvconf、systemd-resolve 和 avahi 之间有什么区别?

resolvconf、systemd-resolve 和 avahi 之间有什么区别?

我目前正在从事一个需要进行一些 DNS 故障排除的项目。然而,我对网络的奇妙世界还很陌生,我有点不知从哪里开始。

我的具体问题可能属于 Raspberry Pi Stack Exchange,因此我将避免交叉发布。只是在这里寻找信息。

在寻找信息时,我找到了文件resolv.conf(5),,,以及看起来的野兽。resolvconf(8)systemd-resolve(1)avahi

我的带有 Raspbian Buster 的 Raspberry Pi 似乎正在avahi-daemon运行。

我的 Ubuntu 18.04.4 LTS 有systemd-resolvedAND avahi-daemon

(仅限 Ubuntu 上的手册页)是否resolvconf(8)协调两者?

什么时候/etc/resolv.conf使用/忽略?

在Ubuntu上:

$ 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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
search telus

在树莓派上:

$ cat /etc/resolv.conf

# Generated by resolvconf
nameserver 192.168.0.1
nameserver 8.8.8.8
nameserver fd51:42f8:caae:d92e::1

哪些公用事业公司对此负责?

我真的不太了解足够的行话来筛选手册页并区分所有这些,并且我希望解释它们的角色如何相关。

答案1

ping foobar当您运行诸如系统需要计算出如何转换foobar为IP地址之类的命令时。

通常,它首先查看的地方是/etc/nsswitch.conf

这可能有一行,例如:

hosts:          files dns mdns4

这告诉查找例程首先查找“文件”,即/etc/hosts.如果未找到匹配项,它将尝试进行 DNS 查找。如果我们仍然不知道答案,那么它会尝试进行 mDNS 查找。

DNS 查找是系统查看的地方/etc/resolv.conf。这告诉它要查看哪些 DNS 服务器。在我的机器上,我有 DHCP 自动配置。

% cat /etc/resolv.conf 
# Generated by NetworkManager
search mydomain
nameserver 10.0.0.1
nameserver 10.0.0.10

如何 resolv.conf构建可以改变,具体取决于操作系统,您获得的可选组件,其他配置条目,启动顺序...在您的情况下,在 Ubuntu 上,您正在运行 systemd 程序,配置此文件以指向您的本地systemd-resolved知道如何与真实的 DNS 服务器对话。

在我的主服务器上(有静态 IP 地址但没有)systemd-resolved,我手动编辑此文件。

最后mdns4告诉例程尝试询问avahi-daemon它是否知道名字。

您可以更改规则。例如,如果/etc/nsswitch.conf刚才说:

hosts: files

然后仅有的/etc/hosts使用本地文件。

其他条目也是可能的;例如,ldap将使其执行 LDAP 查找。

相关内容