
私はホストファイル、resolv.confファイル、および新しいDNSエントリをキャッシュする方法を探していますが、最も近いが効率が低い方法はnscdです。 Nscdはホストファイル内のDNS要求をキャッシュしますが、要求されたサーバーがホストファイルにない場合はホストファイルを読み取ります。
ハードドライブを常に実行状態にしておらず、電力を節約しようとしていますが、同じサイトの新しいページにアクセスするたびに、ハードドライブが回転してホストファイルを読み込んでドメインを確認してください。
ホストとresolv.confファイルをメモリに保存し、新しいドメインが要求されたときにホストファイルを取得するためにディスクアクセスを要求する代わりに、host.confを含むメモリをスキャンする方法はありますか?
答え1
メモリに保持されるtmpfsを作成できます。私はあなたの特定の状況でそれを使用したことがありませんが、なぜそれがうまくいかないのか本当に理解していません。
https://www.howtoforge.com/storing-files-directories-in-memory-with-tmpfs
/mnt/ramdiskにramdiskをインストールするとします(元のホストファイルの内容を含むramdisk_hosts_fileというファイルがあります)。
mount -o ro,bind /mnt/ramdisk/ramdisk_hosts_file /etc/hosts
まだテストされていませんが、RAM FSのファイルをホストファイルに直接マウントする必要があります。
もちろん、すべての編集内容は再起動時に更新されるため、開始時と終了時にコンテンツをコピーするように設定する必要があります。
理論的には、このようなことがうまくいくはずです。明らかにこれを実験室設定でテストしたいと思って何かが壊れる可能性があります:)
興味があり、時間が経つと似たようなものを作ってみましょう。
答え2
ただし、要求されたサーバーがホストファイルにない場合は、ホストファイルを読み込みます。
ホストファイルはDNSよりも優先されますか?見てください/etc/nsswitch.conf
。次のようになります。
hosts: local, bind
つまり、システムに未知のホスト名が発生した場合は/etc/hosts
ファイルを最初に参照し、見つからない場合はDNSクエリを実行します。それを説明します。
この行を次に置き換えると、プロセスの順序を変更できます。
hosts: bind, local
つまり、不明なホスト名を確認するには、DNSに連絡して空の検索を受け取った場合にのみ要求してください/etc/hosts
。