web-dev-qa-db-ja.com

/ etc / hostsにエントリが追加されたときに、dnsmasqが自動的にリロードしない

/ etc/hostsまたは別の構成済みファイル/etc/hosts.dnsmasqに追加された新しいホストを自動的にリロードするか、知識を取り込むようにdnsmasqを構成するために数日間苦労しています。

これは可能ですか?

7
roshkattu

Dnsmasqにホストファイルをリロードさせる方法は2つあります。

  1. アーロンコプリー 彼のコメントに記載 として、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 できます。

  2. --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は これが仕様によるものであることを確認済み としています。

6
Jeffery To