web-dev-qa-db-ja.com

resolv.conf-読み取り専用ファイルシステム

読み取り専用として実行するようにraspbianjessieを構成しているところです。書き込み可能なのは/tmpのみであり、システムは/tmpにDHCPIP情報を書き込むように構成されています。

/etc/resolv.conf以外はすべて正常に機能しています。起動中に更新されないだけです。

シンボリックリンクを使ってみました。 rm /etc/resolv.conf touch /tmp/resolv.conf ln -s /tmp/resolv.conf /etc/resolv.conf

ただし、/tmpは再起動時に空になるため、/tmp/resolve.confは存在しないため、更新できません。

そこで、起動時にファイルを作成してみました。

touch /tmp/resolv.conf in /etc/rc.local

ファイルは作成されますが、DNSエントリがないため、dhclientの実行後にのみ作成されます。システムの起動後にdhclientを実行すると、DNSサーバーがファイルに正常に書き込まれます。

読み取り専用ファイルシステムでresolv.confを機能させるにはどうすればよいですか?

3
aristosv

Dhclient-scriptのマニュアルページから、

フック

起動すると、クライアントスクリプトは最初にシェル関数make_resolv_confを定義します。これは、後で/etc/resolv.confファイルを作成するために使用されます。デフォルトの動作をオーバーライドするには、enterhookスクリプトでこの関数を再定義します。

Make_resolv_conf関数を定義した後、クライアントスクリプトは実行可能ファイル/ etc/dhcp/dhclient-enter-hooksスクリプトの存在を確認し、存在する場合は、Bourne Shell '。'を使用してスクリプトをインラインで呼び出します。コマンド。このスクリプトでは、OPERATIONに記載されている環境全体を利用できます。このスクリプトは、スクリプトの動作を変更する必要がある場合に環境を変更する場合があります。スクリプトの実行中にエラーが発生した場合、exit_status変数をゼロ以外の値に設定できます。/sbin/dhclient-scriptは、クライアントスクリプトが終了した直後にそのエラーコードで終了します。

したがって、/etc/dhcp/dhclient-enter-hooksを編集し、そこにエントリを追加して、/tmp/resolv.confが存在しない場合は正しい権限で作成し、必要に応じてシンボリックリンクを削除して再作成できるはずです。

Debianをチェックすると、スクリプト部分を含むdhclient-enter-hooks.dディレクトリがあるように見えるので、dhclient(この場合はRaspbian)のディストリビューション/バージョンによっては、そこに何かを追加できる場合があります。

2
EightBitTony

チェックアウト https://wiki.debian.org/ReadonlyRoot#resolv.confresolvconf パッケージの使用をお勧めします。すでにソフトウェアをいじっているので、正しく動作させるには元に戻す必要があるかもしれませんが、この問題などに対するよく考えられた解決策です。

1
Ferenc Wágner