web-dev-qa-db-ja.com

同じBINDゾーン内のパブリックホストとプライベートホスト

私の特定のセットアップでは、たとえばexample.comのBIND9ゾーンファイルを制御できます。このゾーンには、www.example.commail.example.comなどのいくつかのホストがあります。パブリックインターネットがこれらのホストにクエリを実行し、期待どおりにIPを取得できるようにしたいと思います。

一部のホストは、特定のIP範囲のユーザーを除いて、ほとんどのパブリックインターネットユーザーがこれらのホストに関する情報を照会できないという意味で、「プライベート」としてフラグを立てることができますか?たとえば、3番目のホストであるsecret.example.comを、192.168.0.x範囲のユーザーのみがクエリ可能にすることはできますか?

BINDの個別のゾーンでこれを実行できることは承知していますが、これでは必要なものが提供されていないようです。ここで重要なのは、パブリックホストとプライベートホストの両方が同じ親(この場合はexample.com)の一部である必要があるということです。これは、いくつかのプライベートマシンの/etc/hostsファイルでも実現できますが、レコードを一元管理することはできません。

これは可能ですか、それとも別の解決策を見落としていますか?

3
Collin Allen

はい、Bindはviewsでこれを行います。詳細な例のいくつかは ここここ です。

Named.confでは次のようになります。

view "trusted" {
 match-clients { 192.168.23.0/24; }; // our network
  recursion yes;
  zone "example.com" {
   type master;
   // private zone file including local hosts
   file "internal/master.example.com";
  };
  // add required zones
 };
view "badguys" {
 match-clients {"any"; }; // all others hosts
 // recursion not supported
 recursion no;
 };
 zone "example.com" {
   type master;
   // public only hosts
   file "external/master.example.com";
  };
  // add required zones
 };

管理を容易にするために私が通常行うトリックの1つは、単に内部ファイル$ INCLUDEを外部ファイルにすることです。SOAを忘れないでください。

最後の注意点として、これがラバーチキンセキュリティ以上のものであると偽ってはいけません(これに何か問題があるわけではありません)。

8
Matt