web-dev-qa-db-ja.com

dnsmasq:さまざまなクライアントのカスタム名前解決

DHCPとDNSを実行するためにdnsmasqを実行しているネットワークがあります。私のネットワークには複数のクライアントがあり、それぞれがマスターマシンと通信する必要があります(クライアントはmasterのdnsmasqへのDNSクエリを使用して通信します)。同じネットワーク上で複数のマスター/クライアントグループを実行したいのですが、どのクライアントがどのマスターに関連付けられているかを簡単に構成できるようにしたいと思います。

特定のDNSクエリに対して異なるクライアントに異なる応答を与えるようにdnsmasqを構成することは可能ですか?たとえば、10.0.2.23masterをクエリする場合、結果を10.0.3.1にします。ただし、10.0.2.24masterをクエリする場合、結果を10.0.3.2にします。

各クライアントの/etc/hostsファイルにmasterエントリを作成するだけでこれを実現できることはわかっていますが、この情報がすべて1つの構成ファイル(例:/etc/dnsmasq.d/masterclient.conf)に含まれていれば幸いです。

3
rcv

TL; DR:明示的は暗黙的よりも優れています

また、ネットワーク上で実行する診断によって、各ペアのメンバー間の接続も明らかになるようにすることもできます。

Dnsmasqがdnsとdhcpの両方を実行している場合、「各クライアントはマスターを知っている」という問題を簡単に解決し、クエリを実行しているユーザーに基づいてdnsmasqの応答を変えないことで、正しいセットアップの検証を可能にします。

代わりに、グループを完全修飾ドメイン名の一部にすることで、各クライアントがマスターを具体的に要求するようにすることをお勧めします。

# make sure your dhcp clients use dnsmasq as dns & split them in groups
#  (you probably already do that baes on either mac or subnet)
dhcp-range=set:group1,10.0.2.0,10.0.2.23,255.255.255.0,4h
dhcp-range=set:group2,10.0.2.24,10.0.2.50,255.255.255.0,4h
dhcp-otion=option:dns-server,0.0.0.0

# based on tags, give them a dns search domain
dhcp-option=tag:group1,option:domain-search,pair1.local
dhcp-option=tag:group2,option:domain-search,pair2.local

# making the respective master address known to them
address=/master.pair1.local/10.0.3.1
address=/master.pair2.local/10.0.3.2

どのクライアントがどのグループに属しているかをさまざまなパラメータに基づいて決定する方法はいくつかあります。クライアントをどのグループにするかを決定するものに応じて、dhcp-rangeでの分割は、十分であるか、完全に不適切である可能性があります。

警告:クライアントを異なるグループに再構成することは、DHCPリース時間に従ってのみ実行できます。これは、DNSTTLよりも柔軟性がありません。

3
anx