为什么我在使用 chroot 时必须指定 DNS?

Qba*_*ack 1 linux dns dhcp chroot

上次当我从 Live USB chroot 到我旧的损坏系统时,我无法连接到 Internet。在本教程中,我读到/etc/resolv.conf 如果我使用 DHCP,我应该将 OpenDNS 添加到我的。

DHCP(或 chroot)如何影响我的 DNS?

DHCP 不只是让我的路由器给我 IP 的一种方式吗?为什么我可以从Live USB正常连接到Internet,而chroot我必须添加新的DNS?

use*_*686 5

DHCP 不只是我的路由器给我 IP 的方式吗?

不,这也是您的路由器为您提供额外信息的方式——网关 IP、DNS 服务器 IP、默认域名、时间服务器 IP 等等。

为什么我可以从Live USB正常连接到Internet,而在chroot中我必须添加新的DNS?

Linux 将 DNS 服务器地址存储在一个文件中。由于 chroot 改变了程序查看文件路径的方式,这意味着它们会在/etc/resolv.conf路径上找到不同的文件,这意味着它们可能会找到存储在那里的不同地址。

(您的 DHCP 客户端对您的 chroot 一无所知,只更新 /etc/resolv.conf文件——它无法搜索和更新所有可能的文件。)


一个常见的解决方法是链接(绑定)“内部”路径,以便它引用相同的“外部”文件。例如,您可以在 chroot 到 /mnt 之前执行此操作:

mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

(当然,稍后您必须先卸载它,然后系统才会让您卸载 /mnt。)

  • 如果你的 `resolv.conf` 是一个符号链接(或者你不希望它与原始文件混淆),请使用 `cp -L /etc/resolv.conf /path/to/etc`。 (2认同)