web-dev-qa-db-ja.com

BINDは要求したIPアドレスに基づいて応答を変更できますか?

Hello Server fault

私は192.168.0.0/23(到着する前)を使用してネットワークを設定した病院で働いています。ラップトップとモバイルクライアントをリモートの場所からVPNを使用して接続したいのですが、病院のネットワークはほとんどのホームルーターと非常に衝突します。私はそれを変更する時間を与えるように経営陣に圧力をかけましたが、これは手配することが不可能であった場所全体にサーバー/機器/などを備えた病院であることです。したがって、10.22.0.0/23の1:1 NATを使用して問題を「修正」しました。

問題:クライアントは10.22.0.0/23 IPを使用して問題なく接続し、リソースにアクセスできますが、DNSサーバーにクエリを送信すると、192.168.0.0/23応答を受け取ります。クエリがVPNサブネットから発信されている場合、BINDでこれらをオンザフライで10.22.0.0/23アドレスに変換する正しい方法はありますか?私はそれをBINDビュー経由でcronで次のように使用して機能させているため、正しいことに重点を置きます。

sed -e 's/192.168.0./10.22.0./' -e 's/192.168.1./10.22.1./' /var/lib/bind/db.company.local > /var/lib/bind/db.company.local.ext && /usr/sbin/rndc reload company.local in extView

これはうまく機能しますが、BINDジャーナルがdb.company.localファイルに書き戻すのに約15分かかるため、15〜20分遅れます。

RPZについて少し読みましたが、情報はむらがあります。誰かが私を正しい方向に向けることができますか?そうでない場合、私のソリューションをよりエレガントにすることができますか?

編集:すでにBINDビューを使用していることを明確にしたいのですが、2つのゾーンで実行しています。最初のゾーンから2番目のゾーンを生成し、それをsedを介して送信してIPを変更し、そのビューでそのゾーンに対してrndcリロードを実行しています。これには大きな遅延があります。両方のビューで同じゾーンファイルを使用し、クエリ時にDNS応答を変更する方法はありますか?

ありがとう!

7
Vile Brigandier

これはプロセスの問題である必要があります。通常、管理者は両方のビューのゾーンファイルに新しいレコードを追加します。メモリが悪い場合は、スクリプトを使用するように強制します。スクリプトの使用を拒否した場合は、懲戒処分を下します。しかし、それがマッドハウスであり、これが機能するのに必要なだけの場合、ビューベースの応答ポリシーでこれを実行できる可能性があると思います。

次のようなレコードがあるとします。

$Origin db.company.local.net.
test1   IN A 10.22.0.1
test2   IN A 10.22.1.255

192spaceビューのビューオプションで、次の応答ポリシーを定義します。

options {
    response-policy { zone "192remap.rpz"; };
}

zone "192remap.rpz" {
    type master;
    file "192remap.rpz.zone";
};

応答ポリシーは、すべての10space IPを192spaceに書き換えるために使用されます。これは他のゾーンファイルと同じですが、NSレコードは意味がなく、レコードには特別な意味があります。すべてのIPアドレスのリマップを手動で書き出すのは面倒なので、$GENERATEを使用しますブロックしてゾーンファイルを入力します。

@            IN    SOA  localhost. root.localhost.  (
                      2   ; serial 
                      3H  ; refresh 
                      1H  ; retry 
                      1W  ; expiry 
                      1H) ; minimum 

             IN    NS    localhost.

; 32.$.0.22.10.rpz-ip. -> 10.22.0.$/32
$GENERATE 0 255 32.$.0.22.10.rpz-ip. A 192.168.0.$
$GENERATE 0 255 32.$.1.22.10.rpz-ip. A 192.168.1.$

これは、DNS応答のANSWERセクションにあるこれらの10.22.0.0/23 IPのいずれかを再マップするだけでなく、何らかの理由でAUTHORITYまたはADDITIONALセクションに表示される不正なIPをキャッチします。 test1.db.company.local.net.(10.22.0.1)のリクエストは、192.168.0.1に書き直され、192spaceビューにヒットするクライアントに対してのみ返されます。

これがお役に立てば幸いです。うまくいくかどうかお知らせください。 RPZに関する詳細情報とドキュメントへのリンクは 別の回答 にあります。数か月前に書きました。

1
Andrew B

はい、あなたはバインドビューでこれを行うことができます:

http://www.zytrax.com/books/dns/ch7/view.html

基本的に、各ビューをサブネットとして定義すると、各ビューは独自のゾーンファイルを保持します。 DNSクエリのソースIP /サブネットに応じて、異なる「ビュー」が表示されます。

これはネームサーバーが「内部」/「外部」ビューで使用するのに一般的です。DNS名は外部ビューでパブリックに解決されますが、内部から照会されると、内部LANのホストのプライベートIPに「内部」を解決します。プライベートLAN。

7
nandoP