ifup 错误地覆盖了 resolv.conf?

ifup 错误地覆盖了 resolv.conf?

Debian 12.4,网络由 systemd networking.service、双栈 IPv4 和 IPv6 管理。

我知道有很多问题询问如何停止系统从更新开始resolv.conf,这不是重复的。

长话短说

在启动时,ifup似乎正在覆盖resolv.conf(我想要的),但做得“不正确”(我认为)。结果是resolv.conf最终看起来像这样(前缀被混淆):

nameserver 26xx:xxxx:xxxx:xxxx:201:2eff:fe70:3bfe

这里缺少的是nameserverIPv4 的条目和search我的 LAN 域的条目。

细节

为了排除故障,我执行了以下操作:

  • 删除了所有当前租约/var/lib/dhcp
  • 已开始在防火墙上对 DHCP 和 DHCP6 端口进行数据包捕获
  • 重新启动 Debian 系统
  • 使用 Wireshark 检查生成的捕获文件

研究结果是:

  • IPv4 DHCP 事务请求服务器返回所有必要的信息,包括主机名、域名和 DNS 服务器 IP。
  • IPv6 DHCP 事务请求相同的数据,但响应仅包括 DNS 服务器地址;主机名和域名不存在于 DHCP6 响应中。

我怀疑正在发生的事情是ifup正确设置resolv.confIPv4 数据,然后用 IPv6 响应完全覆盖它,而不是组合它们。

问题resolv.conf: DHCP 选项和双栈系统会发生什么情况?另一种问法是“谁有错,ifup还是pfSense?”

笔记

软件包network-managerresolvconf未安装,并且systemd-networkd被禁用。网络由 systemd 的单元管理networking.service。我不是故意这样设置的,这是我安装时默认得到的。

答案1

我怀疑正在发生的事情是 ifup 使用 IPv4 数据正确设置了 resolv.conf,然后用 IPv6 响应完全覆盖它而不是组合它们。

您的怀疑可能是完全正确的。

Plain ifup(没有resolvconf或没有其他处理多个 DNS 设置源的方法)没有以前的 DNS 设置的记忆,也没有任何方法可以组合多个源的设置;这是“最新的来源获胜”,简单明了。

在双栈系统上,DHCPv4 和 DHCPv6 是两个独立的 DNS 信息源。显然您的 DHCPv6 服务器未配置为分配主机名或提供域名信息。

“到底是谁的错,ifup 还是 pfSense?”

当然:除非使用或ifup进行增强,否则它在这方面不适合您的设置。其中任何一个都可以提供合并来自两个或多个源的设置的功能,并且同一物理接口上的 DHCPv4 和 DHCPv6 被视为两个单独的源。resolvconfsystemd-resolved

相关内容