web-dev-qa-db-ja.com

ソースIPまたはMACに基づいて異なるDNSフォワーダーを使用するにはどうすればよいですか?

LinuxシステムでBINDを構成して、要求元ホストのソースIPまたはMAC、あるいはその両方に基づいて、DNSクエリを別のアップストリームフォワーダーに転送するにはどうすればよいですか?

たとえば、ネットワーク上の特定のホストからOpenDNSにDNSクエリを送信し、その他はGoogleに送信し、その他はすべてISPに送信したい場合があります。

3
Timbo

解決策は、BINDの「ビュー」です。ソースまたは宛先IPでフィルタリングし、リクエストをビューにルーティングできます。完全に異なるDNSゾーン、フォワーダー、およびその他の処理オプションを提供できます。

https://kb.isc.org/article/AA-00851/0/Understanding-views-in-BIND-9-by-example.html

4
Timbo

私は同じユースケースを持っていました、私は次のようにそれをしました(少し複雑ですが、それはかなりうまくいきます)。

  • ルーターは、nextdns.ioに転送するDoTクライアントを介してTLS over DNSを実行します。私はこのサービスを介して広告やものをブロックします。
  • Linuxボックス内の2つのdnsmasqコンテナ。同じボックス上の異なる内部IPにバインドされています。クエリをルーターに転送し、TLS経由でインターネットに送信します。
  • 1 dnsmasqは、大人のDNS + DHCPを実行します。 1つ目は、要求しているクライアントのMACアドレスに基づいてDHCP応答にさまざまなDNSオプションを設定します-私は2つ目の制限されたdnsmasqコンテナーのDNSを取得するように子供用デバイスを特別に設定し、大人は他のものを取得します。
  • 2番目のdnsmasqコンテナは、子供向けのドメインの制限されたセットのみを処理し、残りに対して0.0.0.0を返します。

余談ですが、一部のIPテーブルをセットアップして、ルーターを通過するすべての要求が強制的にTLSを経由して、8.8.8.8または同様のハードコードされた不正に動作するクライアントを処理するようにします。

1
Brad