web-dev-qa-db-ja.com

ホスト名をローカルマシンのIPに解決するようにdnsmasqを設定します

dnsmasqが実行されているサーバーのローカルIPアドレスにmyserver.local.example.comを解決するための単純なDNSとしてdnsmasqを実行しています。それ以外はすべてパブリックDNSに転送されます。

サーバーのIPアドレスが192.168.1.12であるとすると、私のコマンドは次のようになります。

dnsmasq --no-hosts --no-resolv --localise-queries \
  --server=1.1.1.1 --server=8.8.8.8 --server=8.8.4.4 \
  --Host-record=myserver,myserver.local.example.com,192.168.1.12

複数のネットワークインターフェイスが接続されている場合は、IPアドレスごとに1つずつ、複数の--Host-recordエントリを設定します。

dnsmasq --no-hosts --no-resolv --localise-queries \
  --server=1.1.1.1 --server=8.8.8.8 --server=8.8.4.4 \
  --Host-record=myserver,myserver.local.example.com,192.168.1.12 \
  --Host-record=myserver,myserver.local.example.com,192.168.99.57

これは期待どおりに機能します。ホスト名は、構成したIPアドレスに解決されます。ただし、これを改善する方法について2つの質問があります。

  1. knowingサーバーのIPアドレスなしでこれを構成する方法はありますか? ifconfig出力からIPアドレスを解析してdnsmasqに渡すbashスクリプトを使用していますが、これは面倒なようです。
  2. サーバーのIPアドレスが何らかの理由で変更された場合。ネットワークが接続されますdnsmasqはすでに開始されているので、手動でdnsmasqを再起動する必要があります。前の質問のコンテキストでは、dnsmasqがそれを自動的に検出し、手動で再起動せずに更新できることが望ましいでしょう。

何か考えや提案はありますか?それとも、dnsmasqの代わりに、私に適したものがあるのでしょうか。

1
André

あなたが使用することができます

--interface-name=<name>,<interface>

例えば

--interface-name=myserver.local.example.com,enp2s0

詳細については、 http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html を参照してください。

デフォルトの構成では、DnsmasqはインターフェースリンクとIPアドレスのイベントを確認でき、インターフェースがダウンおよびアップしたときに「インターフェース」DNS名を公開するために再起動する必要はありません。

1
Strangelovian