使用 /etc/resolv.conf 以外的文件指定 DNS 服务器

使用 /etc/resolv.conf 以外的文件指定 DNS 服务器

除了使用 /etc/resolv.conf 之外,还有其他方法可以指定 DNS 服务器的地址吗?

原因:(因为有人会问)我有一个运行 LDME 1 的系统。我安装了一个新驱动器并在其上安装了 LDME 2。

现在,由于 LDME 1 系统中的所有内容都按照我想要的方式配置,因此我登录该系统并从 chroot 中剪切 LDME 2。

问题是在 LDME 2 中 /etc/resolv.conf 是指向 /run 目录中文件的符号链接。 LDME 2 启动时可能创建的该文件在 LDME 1 中不存在。

如果 LDME 2 /etc/resolv.conf 是常规文件,我会很乐意备份它,将其替换为 LDME 1 版本,完成我的工作并恢复。但我不想乱搞系统新生成的符号链接。尤其是指向 chroot 监狱之外的那个。

答案1

更改路径名很困难,因为它被硬编码到 glibc 中。但是,您可以使用绑定挂载来挂载文件而不是目录 ( mount -B /tmp/my.resolv.conf /etc/resolv.conf)。不幸的是,这不适用于损坏的符号链接,因为您只能将常规文件绑定安装到常规文件或将目录绑定安装到目录。但是 /run 中有什么东西可以绑定挂载吗?

答案2

如果您使用 dns 缓存(这是明智的做法),您可以指定一个不同的文件供本地 dns 缓存服务器使用。例如,对于dnsmasq,您可以将其配置为使用

resolv-file=/etc/resolv.dnsmasq.conf

这可能不是符号链接。

现在,您仍然需要127.0.0.1在您的实际中包含/etc/resolv.conf它,但如果它已经在那里,并且您只想添加一个额外的名称服务器,这可能会有所帮助。此外,一些 dhcp 客户端承认它们在resolv.conf生成时添加/附加的“头”和“尾”文件。他们可能会提供帮助。不过要小心,resolv.conf有用的行数是有限的(我认为通常是 3 行,之后就被忽略了)。

相关内容