我目前正在从事一个需要进行一些 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-resolved
AND 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 查找。