書き換え機能の DNS サポート
HTTP または TCP の要求と応答の場合と同様に、書き換え機能を設定して DNS 要求と応答を変更できます。rewrite を使用して DNS リクエストのフローを管理し、ヘッダーまたは回答セクションで必要な変更を加えることができます。たとえば、DNS 応答のヘッダーフラグに AA ビットが設定されていない場合、rewrite を使用して DNS 応答に AA ビットを設定し、それをクライアントに送信できます。
DNS エクスプレッション
書き換え構成では、次のCitrix ADC式を使用して、DNS要求または応答のさまざまな部分を参照できます。
DNS バインドポイント
DNS 表現を含むポリシーでは、次のグローバルバインドポイントを使用できます。
バインドポイント | 説明 |
---|---|
DNS_REQ_OVERRIDE | オーバーライドリクエストポリシーキュー。 |
DNS_REQ_DEFAULT | 標準リクエストポリシーキュー。 |
DNS_RES_OVERRIDE | レスポンスポリシーキューをオーバーライドします。 |
DNS_RES_DEFAULT | 標準レスポンスポリシーキュー。 |
デフォルトのバインドポイントに加えて、DNS_REQ または DNS_RES タイプのポリシーラベルを作成し、それらに DNS ポリシーをバインドできます。
DNS の書き換えアクションタイプ
- replace_dns_answer_section—このアクションにより、DNS 回答セクションが DNS ポリシーで定義されている式に置き換えられます。
- replace_dns_header_field— DNS リクエストのオペコードタイプをチェックします。DNS リクエストのオペコードタイプが指定されたオペコードタイプと一致するかどうかを示す True または False を返します。このアクションにより、DNS ヘッダーセクションが DNS ポリシーで定義されている式に置き換えられます。
DNS の書き換えポリシーの設定
以下の手順では、NetScalerコマンドラインを使用して書き換えアクションとポリシーを構成し、ポリシーを書き換え固有のグローバルバインドポイントにバインドします。
書き換えアクションとポリシーを設定し、ポリシーを DNS にバインドする
コマンドプロンプトで、次のコマンドを入力します。
add rewrite action
は、新しいアクションの名前に置き換えてください。名前の長さは 1 ~ 127 文字で、文字、数字、ハイフン (-)、および下線 (_) 記号を使用できます。
には、DNS 表現に用意されている書き換えアクションの種類を指定します。add rewrite policy
は、新しいポリシーの名前に置き換えてください。
では、名前の長さは 1 ~ 127 文字で、文字、数字、ハイフン (-)、および下線 (_) 記号を使用できます。
は、先ほど作成したアクションの名前に置き換えてください。bind rewrite global
-type
は、先ほど作成したポリシーの名前の代わりに使用してください。
には、ポリシーの優先度を指定します。
を 、リライト固有のグローバルバインドポイントの 1 つに置き換えてください。
例:
DNSリクエストのAAビットを設定して仮想サーバーの負荷を分散します。
次のコマンドは、NetScalerアプライアンスが処理するすべてのクエリに対して権限のあるDNSサーバーとして機能するように構成します。
add rewrite action set_aa replace_dns_header_field dns.req.header.flags.set(aa) add rewrite policy pol !dns.req.header.flags.is_set(aa) set_aa bind rewrite global pol 100 -type dns_res_override
回答とヘッダーセクションを変更します。
サーバーが NX ドメインで応答する場合、応答を指定した IP アドレスに置き換えるように書き換えアクションを設定できます。NOPOLICY-REWRITE を使用すると、式 (ルール) を処理せずに外部バンクを呼び出すことができます。このエントリは、ルールを含まないダミーポリシーですが、エントリをポリシーラベルまたは仮想サーバ固有のポリシーバンクに転送します。
add rewrite action set_aa_res replace_dns_header_field "dns.res.header.flags.set(aa)" add rewrite action modify_nxdomain_res replace_dns_answer_section "dns.new_rrset_a("10.102.218.160",300)" add rewrite policy set_res_aa true set_aa_res add add rewrite policy modify_answer "dns.RES.HEADER.RCODE.EQ(nxdomain) && dns.RES.QUESTION.TYPE.EQ(A)" modify_nxdomain_res add rewrite policylabel MODIFY_NODATA dns_res bind rewrite policylabel MODIFY_NODATA modify_answer 10 END bind rewrite policylabel MODIFY_NODATA set_res_aa 11 END bind lb vserver v1 -policyName NOPOLICY-REWRITE -priority 11 -gotoPriorityExpression END -type RESPONSE -invoke policylabel MODIFY_NODATA
制限事項:
- 書き換えポリシーは、NetScalerアプライアンスがDNSプロキシサーバーとして構成されていてキャッシュミスがある場合にのみ評価されます。
- ヘッダーの Recursion Available (RA) フラグが YES に設定されている場合、RA フラグは書き換え時に変更されません。
- ヘッダーの RA フラグが YES に設定されている場合、書き換え操作に関係なくヘッダーの CD フラグが変更されます。