web-dev-qa-db-ja.com

chrootを使用するときにDNSを指定する必要があるのはなぜですか?

前回、Live USBから古い壊れたシステムにchrootしたとき、インターネットに接続できませんでした。この チュートリアル では、OpenDNSを/etc/resolv.confDHCPを使用する場合に追加する必要があることを読みました。

DHCP(またはchroot)はDNSにどのように影響しますか?

DHCPは、ルーターがIPを提供する唯一の方法ではありませんか? chrootで新しいDNSを追加する必要があるのに、なぜLive USBからインターネットに正常に接続できるのですか?

1
Qback

DHCPは、ルーターがIPを提供する方法だけではありませんか?

いいえ、それはルーターが追加情報を提供する方法でもあります–ゲートウェイIP、DNSサーバーIP、デフォルトドメイン名、タイムサーバーIPなど。

Chrootで新しいDNSを追加する必要があるのに、なぜLive USBからインターネットに正常に接続できるのですか?

LinuxはDNSサーバーアドレスをファイルに保存します。 chrootはプログラムがファイルパスを認識する方法を変更するため、/etc/resolv.confパスで別のファイルが見つかる可能性があります。つまり、そこに保存されている別のアドレスが見つかる可能性があります。

(DHCPクライアントはchrootについて何も知らず、main/etc/resolv.confファイルのみを更新しますall可能なファイルを検索および更新することはできません。)


一般的な回避策は、同じ「外部」ファイルを参照するように「内部」パスをリンク(バインド)することです。たとえば、/ mntにchrootする前にこれを行うことができます。

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

(もちろん、後でシステムが/ mntをアンマウントできるようになる前に、これをアンマウントする必要があります。)

5
user1686