為什麼使用 chroot 時必須指定 DNS?

為什麼使用 chroot 時必須指定 DNS?

上次當我從 Live USB chroot 到舊的損壞系統時,我無法連接到互聯網。在這個教學,我讀到我應該將 OpenDNS 添加到我的/etc/resolv.conf 如果我使用 DHCP

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

DHCP 不是路由器為我提供 IP 的唯一一種方式嗎?為什麼我可以從 Live USB 正常連接互聯網,但chroot必須添加新的 DNS?

答案1

DHCP 不是路由器為我提供 IP 的唯一方式嗎?

不,這也是您的路由器向您提供額外資訊的方式 - 網關 IP、DNS 伺服器 IP、預設網域、時間伺服器 IP 等等。

為什麼我可以從 Live USB 正常連接到互聯網,而在 chroot 中我必須添加新的 DNS?

Linux 將 DNS 伺服器位址儲存在檔案中。由於 chroot 改變了程式查看文件路徑的方式,這意味著它們會在該路徑中找到不同的文件/etc/resolv.conf,這意味著它們可能會找到儲存在那裡的不同位址。

(您的 DHCP 用戶端對您的 chroot 一無所知,只更新主要的 /etc/resolv.conf文件 – 無法搜尋和更新全部可能的文件。


常見的解決方法是連結(綁定)“內部”路徑,以便它引用相同的“外部”檔案。例如,您可以在 chroot 到 /mnt 之前執行此操作:

mount --bind /etc/resolv.conf /mnt/etc/resolv.conf

(當然,稍後您必須先卸載它,然後系統才會允許您卸載 /mnt。)

相關內容