/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行だと思い、その後は無視されます)。