私の特定のセットアップでは、たとえばexample.com
のBIND9ゾーンファイルを制御できます。このゾーンには、www.example.com
やmail.example.com
などのいくつかのホストがあります。パブリックインターネットがこれらのホストにクエリを実行し、期待どおりにIPを取得できるようにしたいと思います。
一部のホストは、特定のIP範囲のユーザーを除いて、ほとんどのパブリックインターネットユーザーがこれらのホストに関する情報を照会できないという意味で、「プライベート」としてフラグを立てることができますか?たとえば、3番目のホストであるsecret.example.com
を、192.168.0.x
範囲のユーザーのみがクエリ可能にすることはできますか?
BINDの個別のゾーンでこれを実行できることは承知していますが、これでは必要なものが提供されていないようです。ここで重要なのは、パブリックホストとプライベートホストの両方が同じ親(この場合はexample.com
)の一部である必要があるということです。これは、いくつかのプライベートマシンの/etc/hosts
ファイルでも実現できますが、レコードを一元管理することはできません。
これは可能ですか、それとも別の解決策を見落としていますか?
はい、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を忘れないでください。
最後の注意点として、これがラバーチキンセキュリティ以上のものであると偽ってはいけません(これに何か問題があるわけではありません)。