Citrix ADC

書き換えアクションの設定

警告

書き換えアクションのパターン機能は、Citrix ADC 12.0ビルド56.20以降では廃止され、代替として、[検索書き換えアクション]パラメータを使用することをお勧めします。

書き換えアクションは、サーバーまたはクライアントに送信する前に要求または応答に加えられた変更を示します。

式は、次のことを定義しています。

  • アクションタイプを書き換えます。

  • 書き換えアクションの場所です。

  • アクションの設定タイプを書き換えます。

たとえば、DELETE アクションはターゲット式のみを使用します。REPLACE アクションは、ターゲット式と式を使用して置換テキストを設定します。

書き換え機能を有効にした後は、組み込みの書き換えアクションで十分でない限り、1 つ以上のアクションを設定する必要があります。すべての組み込みアクションの名前は、文字列 ns_cvpn で始まり、その後に文字列とアンダースコア文字が続きます。組み込みアクションは、クライアントレス VPN 要求または応答の一部のデコード、JavaScript または XML データの変更など、便利で複雑なタスクを実行します。組み込みアクションは、表示、有効化、および無効化できますが、変更または削除することはできません。

注:

HTTP 書き換えにのみ使用できるアクションタイプは、[書き換え アクションタイプ] 列で識別されます。

詳細については、「 Type パラメータ」を参照してください。

コマンドラインインターフェイスを使用して書き換えアクションを作成する

コマンドプロンプトで次のコマンドを入力して、書き換えアクションを作成し、構成を確認します。

  • add rewrite action <name> <type> <target> [<stringBuilderExpr>] [-search <expression>] [refineSearch <expression>] [-comment<string>]
  • show rewrite action <name>

詳細については、 書き換えアクションタイプとその引数テーブルを参照してください

書き換え機能には、次の組み込みアクションがあります。

  • noreWrite-リクエストまたはレスポンスを書き換えずにユーザーに送信します。

  • RESET-ユーザーがリクエストを再送信できるように、接続をリセットしてユーザーのブラウザに通知します。

  • DROP-ユーザーに応答を送信せずに接続をドロップします。

次のフロータイプの 1 つがすべてのアクションに暗黙的に関連付けられます。

  • Request-アクションはリクエストに適用されます。

  • Response-アクションは応答に適用されます。

  • ニュートラル-アクションはリクエストとレスポンスの両方に適用されます。

名前

ユーザー定義の書き換えアクションの名前。文字、数字、またはアンダースコア文字 (_) で始まり、ハイフン (-)、ピリオド (.) ハッシュ (#)、スペース ()、アットマーク (@)、等号 (=)、コロン (:)、およびアンダースコア文字のみを含める必要があります。書き換えポリシーの追加後に変更できます。

型パラメータ

Type パラメータには、ユーザー定義の書き換えアクションのタイプが表示されます。

Type パラメータの値は次のとおりです。

  • REPLACE <target> <string_builder_expr>。文字列を文字列ビルダー式に置き換えます。

:

> add rewrite action replace_http_act replace http.res.body(100) '"new_replaced_data"'
Done
> sh rewrite action replace_http_act
Name: replace_http_act
Operation: replace
Target:http.res.body(100)
Value:"new_replaced_data"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr2><target>で指定されたリクエストまたはレスポンスで 、<string_builder_expr1>で定義されているすべての文字列を、<string_builder_expr2>で定義された文字列に置き換えます 。PCRE 形式のパターンまたは検索機能を使用して、置換する文字列を検索できます。

:

> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://""-search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done

> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_HTTP_RES <string_builder_expr>。完全な HTTP レスポンスを文字列ビルダー式で定義された文字列に置き換えます。

:

> add rewrite action replace_http_res_act replace_http_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
 Done
> sh rewrite action replace_http_res_act
Name: replace_http_res_act
Operation: replace_http_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_SIP_RES <target>。SIP 応答全体を、<target>で指定された文字列に置き換えます。

:

> add rewrite action replace_sip_res_act replace_sip_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_sip_res_act
Name: replace_sip_res_act
Operation: replace_sip_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_HTTP_HEADER <header_string_builder_expr> <contents_string_builder_expr>。で指定された HTTP ヘッダーを挿入します。 <header_string_builder_expr> およびヘッダーコンテンツで指定された内容 <contents_string_builder_expr>。

:

> add rewrite action ins_cip_header insert_http_header "CIP" "CLIENT.IP.SRC"
Done
> sh rewrite action ins_cip_header
Name: ins_cip_header
Operation: insert_http_header
Target:CIP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_HTTP_HEADER <target><target>で指定された HTTP ヘッダーを削除します。

:

> add rewrite action del_true_client_ip_header delete_http_header "True-Client-IP"
Done
> sh rewrite action del_true_client_ip_header
Name: del_true_client_ip_header
Operation: delete_http_header
Target:True-Client-IP
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CORRUPT_HTTP_HEADER <target><target>で指定したすべての出現する HTTP ヘッダーのヘッダー名を破損した名前に置き換え、レシーバによって認識されないようにします。例:MY_HEADER は MHY_ADER に変更されます。

:


> add rewrite action corrupt_content_length_hdr corrupt_http_header "Content-Length"
Done
> sh rewrite action corrupt_content_length_hdr
Name: corrupt_content_length_hdr
Operation: corrupt_http_header
Target:Content-Length
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_BEFORE <string_builder_expr1> <string_builder_expr1><string_builder_expr1>で指定された文字列を検索し、その前の<string_builder_expr2>に文字列を挿入します。
> add rewrite action insert_before_ex_act insert_before http.res.body(100) '"Add this string in the starting"'
Done
> sh rewrite action insert_before_ex_act
Name: insert_before_ex_act
Operation: insert_before
Target:http.res.body(100)
Value:"Add this string in the starting"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_BEFORE_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr2><target>で指定されたリクエストまたはレスポンスで 、<string_builder_expr1>で指定された文字列のすべてのオカレンスを検索し、<string_builder_expr2>で指定された文字列を前に挿入します。PCRE 形式のパターンまたは検索機能を使用して、文字列を検索できます。

:


> add policy patset pat
 Done
> bind policy patset pat abcd
 Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
 Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_AFTER <string_builder_expr1> <string_builder_expr2>。で指定された文字列を検索します。<string_builder_expr1>で指定した文字列を挿入します。 <string_builder_expr2> それの後に。

:

> add rewrite action insert_after_act insert_after http.req.body(100) '"add this string after 100 bytes"'
Done
> sh rewrite action insert_after_act
Name: insert_after_act
Operation: insert_after
Target:http.req.body(100)
Value:"add this string after 100 bytes"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_AFTER_ALL <target> <string_builder_expr1> -(pattern|search) <string_builder_expr><target>で指定されたリクエストまたはレスポンスで 、 <string_builder_expr1>で指定された文字列のすべての出現箇所を検索し、<string_builder_expr2>で指定した文字列をそれぞれの後に挿入します。PCRE 形式のパターンまたは検索機能を使用して、文字列を検索できます。

:


> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE <target>。指定したターゲットを検索して削除します。

:

> add rewrite action delete_ex_act delete http.req.header("HDR")
Done
> sh rewrite action delete_ex_act
Name: delete_ex_act
Operation: delete
Target:http.req.header("HDR")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_ALL <target> -(pattern|search) <string_builder_expr><target>で指定されたリクエストまたはレスポンスで、<string_builder_expr>で指定された文字列のすべてのオカレンスを検索して削除します。PCRE 形式のパターンまたは検索機能を使用して、文字列を検索できます。

:


>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`<\\/AppData>#)"
Done
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DIAMETER_HEADER_FIELD <target> <field value>。リクエストまたはレスポンスで、<target>で指定されたヘッダーフィールドを変更します。Diameter.req.flags.SET(<flag>)またはstringbuilderexpressionとしてのDiameter.req.flags.UNSET<flag>を使用して、フラグを設定または解除します。

:


> add rewrite action replace_diameter_field_ex_act  replace_diameter_header_field diameter.req.flags diameter.req.flags.set(PROXIABLE)
Done
> sh rewrite action replace_diameter_field_ex_act
Name: replace_diameter_field_ex_act
Operation: replace_diameter_header_field
Target:diameter.req.flags
Value:diameter.req.flags.set(PROXIABLE)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DNS_HEADER_FIELD <target>。リクエストまたはレスポンスで、<target>で指定されたヘッダーフィールドを変更します。

:


> add rewrite action replace_dns_hdr_act replace_dns_header_field dns.req.header.flags.set(AA)
Done
> sh rewrite action replace_dns_hdr_act
Name: replace_dns_hdr_act
Operation: replace_dns_header_field
Target:dns.req.header.flags.set(AA)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • REPLACE_DNS_ANSWER_SECTION <target>。応答の DNS 応答セクションを置き換えます。これは現在、A および AAAA レコードにのみ適用されます。DNS.NEW_RRSET_AおよびNS.NEW_RRSET_AAAA式を使用して、新しい回答セクションを構成します。

:


> add rewrite action replace_dns_ans_act replace_dns_answer_section  DNS.NEW_RRSET_A("1.1.1.1", 10)
Done
> sh rewrite action replace_dns_ans_act
Name: replace_dns_ans_act
Operation: replace_dns_answer_section
Target:DNS.NEW_RRSET_A("1.1.1.1", 10)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_DECODE<target>。ターゲットの [クライアントレス VPN 形式] で指定されたパターンをデコードします。

:


> add rewrite action cvpn_decode_act_1 clientless_vpn_decode http.req.body(100)
Done
> sh rewrite action cvpn_decode_act_1
Name: cvpn_decode_act_1
Operation: clientless_vpn_decode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_DECODE_ALL<target>-search<expression>。検索パラメータで指定されたすべてのパターンをクライアントレス VPN 形式でデコードします。

:


> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_ENCODE<target>。ターゲットで指定されたパターンをクライアントレス VPN 形式でエンコードします。

:


> add rewrite action cvpn_encode_act_1 clientless_vpn_encode http.req.body(100)
Done
> sh rewrite action cvpn_encode_act_1
Name: cvpn_encode_act_1
Operation: clientless_vpn_encode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CLIENTLESS_VPN_ENCODE_ALL<target>-search<expression>。指定されたすべてのパターンをクライアントレス VPN 形式でエンコードします。

:


> add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act2
Name: act1
Operation: clientless_vpn_encode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • CORRUPT_SIP_HEADER<target><target>で指定したすべての SIP ヘッダーのヘッダー名を破損した名前に置き換え、受信者がそれを認識しないようにします。

:


> add rewrite action corrupt_sip_hdr_act corrupt_sip_header SIP_HDR
Done
> sh rewrite action corrupt_sip_hdr_act
Name: corrupt_sip_hdr_act
Operation: corrupt_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • INSERT_SIP_HEADER <header_string_builder_expr> <contents_string_builder_expr><header_string_builder_expr>で指定されたSIPヘッダーと、<contents_string_builder_expr>で指定されたヘッダーコンテンツを挿入します。

:


> add rewrite action insert_sip_hdr_act insert_sip_header SIP_HDR '"inserting_sip_header"'
 Done
>sh rewrite action insert_sip_hdr_act
Name: insert_sip_hdr_act
Operation: insert_sip_header
Target:SIP_HDR
Value:"inserting_sip_header"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->
  • DELETE_SIP_HEADER<target><target>で指定された SIP ヘッダーを削除します。

:


> add rewrite action delete_sip_hdr delete_sip_header  SIP_HDR
Done
> sh rewrite action delete_sip_hdr
Name: delete_sip_hdr
Operation: delete_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

ターゲットパラメータ

Target パラメータリクエストまたはレスポンスのどの部分を書き換えるかを指定する式を指定します。

StringBuilderExpr

StringBuilderExpr 指定された場所のリクエストまたは応答に挿入されるコンテンツを指定する式を指定します。この式は、指定された文字列を置き換えます。

例1. クライアント IP を使用した HTTP ヘッダーの挿入


> add rewrite action insertact INSERT_HTTP_HEADER "client-IP" CLIENT.IP.SRC
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header
Target:Client-IP
Value:CLIENT.IP.SRC
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

例 2. TCP ペイロード内の文字列の置換(TCP 書き換え)


> add rewrite action client_tcp_payload_replace_all REPLACE_ALL
  'client.tcp.payload(1000)' '"new-string"' -search text("old-string")
Done
> show rewrite action client_tcp_payload_replace_all
Name: client_tcp_payload_replace_all
Operation: replace_all
Target:client.tcp.payload(1000)
Value:"new-string"
Search: text("old-string")
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

リクエストまたはレスポンスの一部を検索して書き換え

検索機能は、リクエストまたはレスポンスで必要なパターンのすべてのインスタンスを検索するのに役立ちます。

検索機能は、次のアクションタイプで使用する必要があります。

  • INSERT_BEFORE_ALL
  • INSERT_AFTER_ALL
  • REPLACE_ALL
  • DELETE_ALL
  • CLIENTLESS_VPN_ENCODE_ALL
  • CLIENTLESS_VPN_DECODE_ALL

検索機能は、次のアクションタイプでは使用できません。

  • INSERT_HTTP_HEADER
  • INSERT_BEFORE
  • INSERT_AFTER
  • REPLACE
  • DELETE
  • DELETE_HTTP_HEADER
  • CORRUPT_HTTP_HEADER
  • REPLACE_HTTP_RES
  • CLIENTLESS_VPN_ENCODE
  • CLIENTLESS_VPN_DECODE
  • INSERT_SIP_HEADER
  • DELETE_SIP_HEADER
  • CORRUPT_SIP_HEADER
  • REPLACE_DIAMETER_HEADER_FIELD
  • REPLACE_DNS_ANSWER_SECTION
  • REPLACE_DNS_HEADER_FIELD
  • REPLACE_SIP_RES

次の検索タイプがサポートされています。

  • Text- リテラル文字列例 ፦検索テキスト (「hello」)
  • 正規表現-リクエストまたはレスポンスの複数の文字列を照合するために使用されるパターン例 ፦検索正規表現 (re~^hello*~)

  • XPATH-XML を検索する XPATH 式。 例 ፦-search xpath(xp%/a/b%)
  • JSON-JSON を検索するための XPATH 式。 例 ፦検索xpath_json (xp%/a/b%) HTML-HTML を検索する XPATH 式例 ፦検索 xpath_html (xp%/html/body%) パッチセット-これはパッチセットエンティティにバインドされたすべてのパターンを検索します。 例:-search patset(“patset1”)
  • Datset-データセットエンティティにバインドされたすべてのパターンを検索します。 例 ፦-search dataset(“dataset1”)
  • AVP- 直径/Radiusメッセージの例 ፦検索 avp (999) で複数の AVP を照合するために使用される AVP 番号

検索結果を絞り込む

検索の絞り込み機能を使用して、検索結果を絞り込むための追加条件を指定できます。検索の絞り込み機能は、検索機能が使用されている場合にのみ使用できます。 検索の絞り込みパラメータは常に「拡張 (m, n)」操作で始まります。ここで、’m’ は検索結果の左側のバイト数を指定し、’n’ は検索結果の右側のバイト数を指定して、選択した領域を拡張します。

設定されている書き換えアクションが次の場合:


> add rewrite action test_refine_search replace_all http.res.body(10) '”testing_refine_search”' -search text("abc") -refineSearch extend(1,1)
And the HTTP response body is abcxxxx456.

<!--NeedCopy-->

次に、検索パラメータはパターン「abc」を検出し、refineSearch パラメータは一致したパターンの左側に余分な 1 バイト、右側に余分な 1 バイトをチェックするように設定されているためです。結果として置換されるテキストは abcx です。したがって、このアクションの出力はtesting_refine_searchxxx456です。

例1: INSERT_BEFORE_ALL アクションタイプで [絞り込み] 検索機能を使用する。


> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

例 2: INSERT_AFTER_ALL アクションタイプで「絞り込み」サーチ機能を使用する。


> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

例 3: REPLACE_ALL アクションタイプで [絞り込み] 検索機能を使用する。


> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://"" -search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

例 4: DELETE_ALL アクションタイプで [検索の絞り込み] 機能を使用する。


>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*<\\/AppData>#)"
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

例 5: CLIENTLESS_VPN_ENCODE_ALL アクションタイプで「検索の絞り込み」機能を使用する。

’’’

add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text(“abcd”) Done sh rewrite action act2 Name: act1 Operation: clientless_vpn_encode_all Target:http.req.body(100) Search: text(“abcd”) Hits: 0 Undef Hits: 0 Action Reference Count: 0 Done

’’’

例 6: CLIENTLESS_VPN_DECODE_ALL アクションタイプで「検索の絞り込み」機能を使用する。


> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->

コマンドラインインターフェイスを使用して既存の書き換えアクションを変更する

コマンドプロンプトで次のコマンドを入力して、既存の書き換えアクションを変更し、構成を確認します。

  • set rewrite action <name> [-target<expression>] [-stringBuilderExpr<expression>] [-pattern<expression> | -search <expression>] [-refineSearch<expression>] [-comment<string>]
  • show rewrite action <name>

:


> set rewrite action insertact -target "Client-IP"
 Done
> show rewrite action insertact

Name: insertact
Operation: insert_http_header   Target:Client-IP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done

<!--NeedCopy-->

コマンドラインインターフェイスを使用して書き換えアクションを削除する

コマンドプロンプトで次のコマンドを入力して、書き換えアクションを削除します。

rm rewrite action <name>

:


> rm rewrite action insertact
Done

<!--NeedCopy-->

構成ユーティリティを使用して書き換えアクションを構成する

  1. [AppExpert]>[Rewrite]>[Actions] の順に移動します。
  2. 詳細ウィンドウで、次のいずれかの操作を行います。
    • アクションを作成するには、[ 追加] をクリックします。
    • 既存のアクションを変更するには、アクションを選択し、[ 編集] をクリックします。
  3. [ 作成]または[ OK]をクリックします。アクションが正常に構成されたことを示すメッセージがステータスバーに表示されます。
  4. 手順 2 ~ 4 を繰り返して、必要な数の書き換えアクションを作成または変更します。
  5. [閉じる] をクリックします。 書き換えアクションを構成する

[式の追加] ダイアログボックスを使用して式を追加する

  1. [ 書き換えアクションの作成 ] または [ 書き換えアクションの設定 ] ダイアログボックスで、入力する引数 type のテキスト領域で、[ 追加] をクリックします。
  2. [ 式の追加 ] ダイアログボックスの最初のリストボックスで、式の最初の用語を選択します。

    • HTTP HTTP プロトコル。HTTP プロトコルに関連するリクエストの側面を調べる場合は、これを選択します。
    • SYS。保護された Web サイト。リクエストの受信者に関連するリクエストの側面を調べる場合は、これを選択します。
    • クライアント。要求を送信したコンピュータ。リクエストの送信者の側面を調べる場合は、これを選択します。

選択すると、右端のリストボックスに、式の次の部分に適した用語がリストされます。

  1. 2 番目のリストボックスで、式の 2 番目の用語を選択します。選択肢は、前のステップで行った選択によって異なり、コンテキストに適切です。2 番目の選択を行った後、[式の構築] ウィンドウの下のヘルプウィンドウ (空白) に、選択した用語の目的と使用法を説明するヘルプが表示されます。

  2. 式が終了するまで、前のリストボックスの右側に表示されるリストボックスから用語を選択するか、値の入力を求めるテキストボックスに文字列または数値を入力します。 PI 式の言語およびレスポンダーポリシーの式の作成の詳細については、「ポリシーと式」を参照してください。

サンプル HTTP データに対してリライトアクションを使用した場合のエフェクトをテストする場合は、リライト式エバリュエータを使用できます。

TCP ペイロードを書き換え

TCP 書き換えのアクション内のターゲット式は、次のいずれかの式プレフィックスで開始する必要があります。

  • CLIENT.TCP.PAYLOAD。クライアント要求の TCP ペイロードを書き換えるため。たとえば、CLIENT.TCP.PAYLOAD (10000) .AFTER_STR (“string1”) などです。
  • SERVER.TCP.PAYLOAD。サーバー応答の TCP ペイロードを書き換えるため。たとえば、SERVER.TCP.PAYLOAD (1000) .B64DECODE.BETUMEN (“string1”,” string2”) など。

[書き換えアクションエバリュエータ] ダイアログボックスを使用して書き換えアクションを評価する

  1. [ 書き換えアクション ] の詳細ウィンドウで、評価する書き換えアクションを選択し、[ 評価] をクリックします。
  2. [式エバリュエーターを書き換え] ダイアログボックスで、次のパラメータの値を指定します。(アスタリスクは必須パラメータを示します)。

    「書き換えアクション」(Rewrite Action)-評価する書き換えアクションがまだ選択されていない場合は、ドロップダウンリストから選択します。書き換えアクションを選択すると、「詳細」セクションに、選択した書き換えアクションの詳細が表示されます。 「新規」(New)-「新規作成」(New) を選択して「書き換えアクションを作成」(Create Rewrite Action) ダイアログボックスを開 「変更」(Modify)-「修正」(Modify) を選択して「書き換えアクションを設定」(Configure) ダイアログボックスを開き、選択した書き換え フロータイプ:選択した書き換えアクションを HTTP リクエストデータまたは HTTP 応答データのどちらでテストするかを指定します。デフォルトは [リクエスト] です。応答データでテストする場合は、[応答] を選択します。 HTTP 要求/応答データ*:書き換えアクションエバリュエーターがテストに使用する HTTP データを提供するスペースを提供します。データをウィンドウに直接貼り付けるか、[Sample] をクリックしてサンプル HTTP ヘッダーを挿入できます。 行末を表示-サンプル HTTP データの各行の末尾に UNIX スタイルの行末文字(\ n)を表示するかどうかを指定します。 [サンプル]:HTTP リクエスト/レスポンスデータウィンドウにサンプル HTTP データを挿入します。GET または POST データを選択できます。 [参照(Browse)]:ローカルブラウズウィンドウが開き、ローカルまたはネットワークロケーションのサンプル HTTP データを含むファイルを選択できます。 [クリア(Clear)]:[HTTP 要求/応答データ] ウィンドウから現在のサンプル HTTP データを消去します。

  3. [評価] をクリックします。 書き換えアクションエバリュエーターは 、選択したサンプルデータに対する書き換えアクションの効果を評価し、[結果] ウィンドウで選択した [ 書き換え ] アクションによって変更された結果を表示します 。追加および削除は、ダイアログボックスの左下隅の凡例に示されているように強調表示されます。
  4. すべてのアクションが希望する効果があると判断するまで、書き換えアクションを評価し続けます。

    • 選択した書き換えアクションを修正し、変更したバージョンをテストするには、[ 修正 ] をクリックして [ 書き換えアクションの構成 ] ダイアログボックスを開き、変更内容を保存し、もう一度 [評価] をクリックします。
    • 同じリクエストまたはレスポンスデータを使用して、別の書き換えアクションを評価するには、[ 書き換えアクション ] ドロップダウンリストからそれを選択し、もう一度 [ 評価 ] をクリックします。
  5. [ 閉じる ] をクリックして、[ 式の書き換えエバリュエーター ] を閉じ、[ 書き換え操作 ] ウィンドウに戻ります。

  6. 書き換えアクションを削除するには、削除する書き換えアクションを選択し、「 削除 」をクリックし、プロンプトが表示されたら、「 OK」をクリックして選択を確定します。 書き換えアクションを評価する