/ etc/hostsまたは別の構成済みファイル/etc/hosts.dnsmasq
に追加された新しいホストを自動的にリロードするか、知識を取り込むようにdnsmasqを構成するために数日間苦労しています。
これは可能ですか?
Dnsmasqにホストファイルをリロードさせる方法は2つあります。
アーロンコプリー 彼のコメントに記載 として、SIGHUP
をdnsmasqに送信します。 man page から:
SIGHUPを受信すると、dnsmasqはキャッシュをクリアしてから、/ etc/hostsと/ etc/ethersおよび--dhcp-hostsfile、-dhcp-hostsdir、-dhcp-optsfile、-dhcp-optsdir、-addn-hostsで指定されたファイルまたは--hostsdir。 dhcpリース変更スクリプトは、既存のすべてのDHCPリースに対して呼び出されます。 -no-pollが設定されている場合、SIGHUPは/ etc/resolv.confも再読み取りします。 SIGHUPは構成ファイルを再読み取りしません。
この場合、dnsmasqは再起動しませんが、他の多くのファイルを再読み取りします(既存のすべてのDHCPリースに対してdhcpリース変更スクリプトを呼び出します)。リロードのトリガーが速すぎることが懸念される場合は、信号を debounce できます。
--hostsdir
オプションを使用します。再び man page から:
-hostsdir = <パス>
ディレクトリに含まれるすべてのホストファイルを読み取ります。新規または変更されたファイルは自動的に読み込まれます。詳細は--dhcp-hostsdirを参照してください。
参考までに、こちらが--dhcp-hostsdir
のドキュメントです。
-dhcp-hostsdir = <パス>
これは、以下を除いて、dhcp-hostsfileと同等です。パスは、個々のファイルではなく、ディレクトリでなければなりません。ディレクトリ内の変更されたファイルまたは新しいファイルは、SIGHUPを送信する必要なく、自動的に読み取られます。 dnsmasqによって読み取られた後にファイルが削除または変更された場合、そのファイルに含まれるHostレコードは、dnsmasqがSIGHUPを受信するか、再起動されるまで残ります。つまり、ホストレコードは動的に追加されるだけです。
これには、最初のオプションと比較していくつかの利点があります。dnsmasqはホストファイルを自動的に再読み取りし、SIGHUP
は不要です。ホストファイルのみが再ロードされ、他のアクションは実行されません。
潜在的な欠点の1つは、--dhcp-hostsdir
のドキュメントで指摘されているように、新しいHostエントリは動的に追加されますが、削除または変更されたエントリは更新されません。 dnsmasqの作者であるSimon Kelleyは これが仕様によるものであることを確認済み としています。