ADC

Réécriture

Avertissement :

Les fonctionnalités de filtrage utilisant des stratégies classiques sont obsolètes et Citrix vous recommande d’utiliser les fonctionnalités de réécriture et de répondeur avec une infrastructure de stratégie avancée.

La réécriture fait référence à la réécriture de certaines informations contenues dans les demandes ou les réponses gérées par l’appliance NetScaler. La réécriture peut aider à fournir l’accès au contenu demandé sans exposer des détails inutiles sur la configuration réelle du site Web. Voici quelques situations dans lesquelles la fonction de réécriture est utile :

  • Pour améliorer la sécurité, NetScaler peut réécrire tous les http://links vers https:// dans corps de la réponse.

  • Dans le déploiement de déchargement SSL, les liens non sécurisés de la réponse doivent être convertis en liens sécurisés. À l’aide de l’option de réécriture, vous pouvez réécrire tous les http://links vers https:// pour vous assurer que les réponses sortantes de NetScaler au client contiennent des liens sécurisés.

  • Si un site Web doit afficher une page d’erreur, vous pouvez afficher une page d’erreur personnalisée au lieu de la page d’erreur 404 par défaut. Par exemple, si vous affichez la page d’accueil ou le plan du site Web au lieu d’une page d’erreur, le visiteur reste sur le site au lieu de s’éloigner du site Web.

  • Si vous souhaitez lancer un nouveau site Web, mais utiliser l’ancienne URL, vous pouvez utiliser l’option Réécrire.

  • Lorsqu’une rubrique d’un site comporte une URL compliquée, vous pouvez la réécrire avec une URL simple et facile à retenir (également appelée « URL cool »).

  • Vous pouvez ajouter le nom de page par défaut à l’URL d’un site Web. Par exemple, si la page par défaut du site Web d’une entreprise est http://www.abc.com/index.php, lorsque l’utilisateur tape « abc.com » dans la barre d’adresse du navigateur, vous pouvez réécrire l’URL en « abc.com/index.php ».

Lorsque vous activez la fonctionnalité de réécriture, NetScaler peut modifier les en-têtes et le corps des requêtes et réponses HTTP.

Pour réécrire les requêtes et les réponses HTTP, vous pouvez utiliser des expressions de stratégie NetScaler sensibles aux protocoles dans les stratégies de réécriture que vous configurez. Les serveurs virtuels qui gèrent les demandes et réponses HTTP doivent être de type HTTP ou SSL. Dans le trafic HTTP, vous pouvez effectuer les actions suivantes :

  • Modifier l’URL d’une demande
  • Ajouter, modifier ou supprimer des en-têtes
  • Ajoutez, remplacez ou supprimez une chaîne spécifique dans le corps ou les en-têtes.

Pour réécrire des charges utiles TCP, considérez la charge utile comme un flux brut d’octets. Chacun des serveurs virtuels qui gèrent les connexions TCP doit être de type TCP ou SSL_TCP. Le terme réécriture TCP est utilisé pour désigner la réécriture de charges utiles TCP qui ne sont pas des données HTTP. Dans le trafic TCP, vous pouvez ajouter, modifier ou supprimer n’importe quelle partie de la charge utile TCP.

Pour obtenir des exemples d’utilisation de la fonction de réécriture, consultez Exemples d’actions de réécriture et de stratégie.

Comparaison entre les options Réécriture et Répondeur

La principale différence entre la fonction de réécriture et la fonction répondeur est la suivante :

Le répondeur ne peut pas être utilisé pour les expressions de réponse ou basées sur le serveur. Le répondeur ne peut être utilisé que pour les scénarios suivants, en fonction des paramètres du client :

  • Redirection d’une requête HTTP vers de nouveaux sites Web ou pages Web
  • Répondre avec une réponse personnalisée
  • Dépose ou réinitialisation d’une connexion au niveau de la demande

S’il existe une stratégie de répondeur, NetScaler examine la demande du client, prend des mesures conformément aux stratégies applicables, envoie la réponse au client et ferme la connexion avec le client.

S’il existe une stratégie de réécriture, NetScaler examine la demande du client ou la réponse du serveur, prend les mesures nécessaires conformément aux stratégies applicables et transmet le trafic au client ou au serveur.

En général, il est recommandé d’utiliser un répondeur si vous souhaitez que NetScaler réinitialise ou abandonne une connexion en fonction d’un client ou d’un paramètre basé sur une demande. Utilisez le répondeur pour rediriger le trafic ou répondez avec des messages personnalisés. Utilisez la réécriture pour manipuler les données des requêtes et réponses HTTP.

Comment fonctionne la réécriture

Une stratégie de réécriture consiste en une règle et une action. La règle détermine le trafic auquel la réécriture est appliquée et l’action détermine l’action à effectuer par NetScaler. Vous pouvez définir plusieurs stratégies de réécriture. Pour chaque stratégie, spécifiez le point de liaison et la priorité.

Un point de liaison fait référence à un point du flux de trafic auquel le NetScaler examine le trafic pour vérifier si une stratégie de réécriture peut lui être appliquée. Vous pouvez lier une stratégie à un serveur virtuel d’équilibrage de charge ou de commutation de contenu spécifique, ou définir la stratégie globale si vous souhaitez qu’elle soit appliquée à l’ensemble du trafic géré par NetScaler. Ces stratégies sont appelées stratégies globales.

Outre les stratégies définies par l’utilisateur, NetScaler possède certaines stratégies par défaut. Vous ne pouvez pas modifier ou supprimer une stratégie par défaut.

Pour évaluer les stratégies, NetScaler suit l’ordre suivant :

  • Stratégies mondiales
  • Stratégies liées à des serveurs virtuels spécifiques
  • Stratégies par défaut

Remarque :

NetScaler ne peut appliquer une stratégie de réécriture que lorsqu’elle est liée à un point.

NetScaler implémente la fonctionnalité de réécriture selon les étapes suivantes :

  • L’appliance NetScaler vérifie les stratégies globales, puis vérifie les stratégies aux points de liaison individuels.

  • Si plusieurs stratégies sont liées à un point de liaison, NetScaler les évalue dans l’ordre de leur priorité. La stratégie ayant la priorité la plus élevée est évaluée en premier. Après avoir évalué chaque stratégie, si la stratégie est évaluée à TRUE, elle ajoute l’action associée à la stratégie à laquelle l’action associée est exécutée. Une correspondance se produit lorsque les caractéristiques spécifiées dans la règle de stratégie correspondent aux caractéristiques de la demande ou de la réponse en cours d’évaluation.

  • Pour n’importe quelle stratégie, en plus de l’action, vous pouvez spécifier la stratégie qui doit être évaluée après l’évaluation de la stratégie actuelle. Cette stratégie est appelée « Aller à l’expression ». Pour n’importe quelle stratégie, si une stratégie Go to Expression (GoToPriorityExpr) est spécifiée, NetScaler évalue la stratégie Go to Expression. Il ne tient pas compte de la stratégie qui a la priorité la plus élevée.

    Vous pouvez spécifier la priorité de la stratégie pour indiquer la stratégie Atteindre l’expression. Vous ne pouvez pas utiliser le nom de la stratégie. Si vous souhaitez que NetScaler arrête d’évaluer d’autres stratégies après avoir évalué une stratégie particulière, vous pouvez définir l’expression Go to sur « END ».

  • Une fois que toutes les stratégies ont été évaluées ou lorsque l’option Go to Expression est définie sur END, le NetScaler commence à exécuter les actions en fonction de la liste d’actions.

Pour plus d’informations sur la configuration des stratégies de réécriture, voir Configuration d’une stratégie de réécriture et sur la liaison des stratégies de réécriture, voir Liaison d’une stratégie de réécriture.

La figure suivante montre comment NetScaler traite une demande ou une réponse lorsque la fonctionnalité de réécriture est utilisée.

Figure 1. Le processus de réécriture

Image

Évaluation des stratégies

La stratégie ayant la priorité la plus élevée est évaluée en premier. NetScaler n’arrête pas l’évaluation des stratégies de réécriture lorsqu’il trouve une correspondance. Il évalue toutes les stratégies de réécriture configurées sur NetScaler.

  • Si une stratégie obtient la valeur TRUE, NetScaler suit la procédure ci-dessous :
    • Si l’option Go to Expression est définie sur END, NetScaler arrête d’évaluer toutes les autres stratégies et commence à effectuer la réécriture.
    • L’expression GoToPriorityExpression peut être définie sur « NEXT », « END », un nombre entier ou « INVOCATION_LIST ». La valeur détermine la stratégie avec la priorité suivante. Le tableau suivant montre l’action entreprise par NetScaler pour chaque valeur de l’expression.

      Valeur de l’expression Action
      SUIVANT La stratégie avec la priorité suivante est évaluée.
      END L’évaluation des stratégies s’arrête.
      <an integer> La stratégie avec une priorité spécifiée est évaluée.
      INVOCATION_LIST Goto NEXT ou END est appliqué en fonction du résultat de la liste d’appels.
  • Si une stratégie donne la valeur FALSE, NetScaler poursuit l’évaluation dans l’ordre de priorité.
  • Si une stratégie est évaluée comme NON DÉFINIE (ne peut pas être évaluée sur le trafic reçu en raison d’une erreur), NetScaler exécute l’action affectée à la condition UNDEFINED (appelée UNDEFaction) et arrête toute évaluation ultérieure des stratégies.

NetScaler ne commence la réécriture proprement dite qu’une fois l’évaluation terminée. Il fait référence à la liste des actions identifiées par les stratégies évaluées à TRUE et démarre la réécriture. Après avoir implémenté toutes les actions de la liste, NetScaler transfère le trafic selon les besoins.

Remarque :

Assurez-vous que les stratégies ne spécifient pas d’actions conflictuelles ou superposées sur la même partie de l’en-tête ou du corps HTTP, ou de la charge utile TCP. Lorsqu’un tel conflit se produit, NetScaler rencontre une situation indéfinie et abandonne la réécriture.

Actions de réécriture

Sur l’appliance NetScaler, spécifiez les actions à effectuer, telles que l’ajout, le remplacement ou la suppression de texte dans le corps, ou l’ajout, la modification ou la suppression d’en-têtes, ou toute modification de la charge utile TCP sous forme d’actions de réécriture. Pour plus d’informations sur les actions de réécriture, voir Configuration d’une action de réécriture.

Le tableau suivant décrit les étapes que NetScaler peut suivre lorsqu’une stratégie obtient la valeur TRUE.

Action Résultat
Insérer L’action de réécriture spécifiée pour la stratégie est exécutée.
NOREWRITE La demande ou la réponse n’est pas réécrite. NetScaler transfère le trafic sans réécrire aucune partie du message.
RESET La connexion est interrompue au niveau TCP.
ABANDONNER Le message est supprimé.

Remarque :

Pour n’importe quelle stratégie, vous pouvez configurer la sous-action (action à effectuer lorsque la stratégie est évaluée à UNDEFINED) en tant que NOREWRITE, RESET ou DROP.

Pour utiliser la fonction de réécriture, procédez comme suit :

  • Activez la fonctionnalité sur NetScaler.
  • Définissez les actions de réécriture.
  • Définissez des stratégies de réécriture.
  • Liez les stratégies à un point de liaison pour mettre en œuvre une stratégie.

Activer la réécriture

Activez la fonctionnalité de réécriture sur l’appliance NetScaler si vous souhaitez réécrire les demandes ou réponses HTTP ou TCP. Si la fonctionnalité est activée, NetScaler effectue une action de réécriture conformément aux stratégies spécifiées. Pour plus d’informations, voir Comment fonctionne la réécriture.

Pour activer la fonction de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour activer la fonction de réécriture et vérifier la configuration :

  • enable ns feature REWRITE
  • show ns feature

Exemple :

> enable ns feature REWRITE
 Done
> show ns feature

        Feature                        Acronym              Status
        -------                        -------              ------
 1)     Web Logging                    WL                   OFF
 2)     Surge Protection               SP                   ON
 .
 .
 .
 1)     Rewrite                        REWRITE              ON
 .
 .
 1)     NetScaler Push                 push                 OFF
 Done
<!--NeedCopy-->

Pour activer la fonction de réécriture à l’aide de l’interface graphique

  1. Dans le volet de navigation, cliquez sur Système, puis sur Paramètres.
  2. Dans le volet d’informations, sous Modes et fonctionnalités, cliquez sur Configurer les fonctionnalités de base.
  3. Dans la boîte de dialogue Configurer les fonctionnalités de base, activez la case à cocher Réécrire, puis cliquez sur OK.
  4. Dans la boîte de dialogue Activer/Désactiver les fonctionnalités, cliquez sur Oui. Un message apparaît dans la barre d’état, indiquant que la fonctionnalité sélectionnée a été activée.

Configuration d’une action de réécriture

Avertissement

La fonction Pattern dans une action de réécriture est obsolète à partir de NetScaler 12.0 build 56.20 et, comme alternative, Citrix vous recommande d’utiliser le paramètre d’action de réécriture Search.

Une action de réécriture indique les modifications apportées à une demande ou à une réponse avant de l’envoyer à un serveur ou à un client.

Les expressions définissent les éléments suivants :

  • Type d’action de réécriture.

  • Emplacement de l’action de réécriture.

  • Type de configuration de l’action de réécriture.

Par exemple, une action DELETE utilise uniquement une expression cible. Une action REMPLACER utilise une expression cible et une expression pour configurer le texte de remplacement.

Après avoir activé la fonction de réécriture, vous devez configurer une ou plusieurs actions, à moins qu’une action de réécriture intégrée ne soit suffisante. Toutes les actions intégrées ont des noms commençant par la chaîne ns_cvpn, suivie d’une chaîne de lettres et de caractères de soulignement. Les actions intégrées effectuent des tâches utiles et complexes telles que le décodage de parties d’une demande ou d’une réponse VPN sans client ou la modification de données JavaScript ou XML. Les actions intégrées peuvent être affichées, activées et désactivées, mais elles ne peuvent pas être modifiées ou supprimées.

Remarque :

Les types d’action qui peuvent être utilisés uniquement pour la réécriture HTTP sont identifiés dans la colonne Type d’action de réécriture .

Pour plus d’informations, consultez la section Paramètre de type.

Créer une action de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour créer une action de réécriture et vérifier la configuration :

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

Pour plus d’informations, consultez le tableau Types d’actions de réécriture et leurs arguments .

La fonction de réécriture comporte les actions intégrées suivantes :

  • NoRewrite-envoie la demande ou la réponse à l’utilisateur sans la réécrire.

  • RESET - Réinitialise la connexion et informe le navigateur de l’utilisateur, afin que l’utilisateur puisse renvoyer la demande.

  • DROP - Permet de supprimer la connexion sans envoyer de réponse à l’utilisateur.

L’un des types de flux suivants est implicitement associé à chaque action :

  • Demande - L’action s’applique à la demande.

  • Réponse - L’action s’applique à la réponse.

  • Neutre - L’action s’applique à la fois aux demandes et aux réponses.

Nom

Nom de l’action de réécriture définie par l’utilisateur. Doit commencer par une lettre, un chiffre ou le caractère de soulignement (_) et ne doit contenir que des lettres, des chiffres et le trait d’union (-), le point (.), le hachage (#), l’espace (), à (@), égal (=), deux-points (:) et les caractères de soulignement. Peut être modifié après l’ajout de la stratégie de réécriture.

Paramètre de type

Le paramètre Type indique le type d’action de réécriture définie par l’utilisateur.

Voici les valeurs du paramètre Type  :

  • REPLACE <target> <string_builder_expr>. Remplace la chaîne cible par l’expression string-builder.

Exemple :

> 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> -(search) <s> - Dans la demande ou la réponse spécifiée par <target>, remplace toutes les occurrences de la chaîne définie par <pattern_to_search> avec la chaîne définie par <string_builder_expr>. Vous pouvez utiliser l’option de recherche pour trouver les chaînes à remplacer.

Exemple :

> 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>. Remplace la réponse HTTP complète par la chaîne définie par l’expression string-builder.

Exemple :

> 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>. Remplace la réponse SIP complète par la chaîne spécifiée par <target>.

Exemple :

> 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> <contents_string_builder_expr>. Insère l’en-tête HTTP spécifié par header_string et le contenu de l’en-tête spécifié par contents_string_builder_expr.

Exemple :

> 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>. Supprime l’en-tête HTTP spécifié par <target>

Exemple :

> 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>. Remplace le nom d’en-tête de toutes les occurrences de l’en-tête HTTP spécifié <target> par un nom corrompu, de sorte qu’il ne soit pas reconnu par le destinataire Exemple : MY_HEADER est remplacé par MHEY_ADER.

Exemple :


> 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>. Recherche la chaîne spécifiée dans <string_builder_expr1> et insère la chaîne <string_builder_expr2> avant.
> 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> -(search) <string_builder_expr2>. Dans la demande ou la réponse spécifiée par <target>, localise toutes les occurrences de la chaîne spécifiée dans et insère la chaîne spécifiée dans avant celle-ci. Vous pouvez utiliser l'option de recherche pour trouver les chaînes.

Exemple :


> 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>. Insère la chaîne spécifiée par string_builder_expr2 après la chaîne string_builder_expr1.

Exemple :

> 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> -(search) <string_builder_expr2>. Dans la demande ou la réponse spécifiée par <target>, localise toutes les occurrences de la chaîne spécifiée par <string_builder_expr2> et insère la chaîne spécifiée par <string_builder_expr1> après celle-ci. Vous pouvez utiliser la fonction de recherche pour trouver les chaînes.

Exemple :


> 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>. Supprime la chaîne spécifiée par la cible.

Exemple :

> 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> -(search) <string_builder_expr>. Dans la demande ou la réponse spécifiée par <target>, recherche et supprime toutes les occurrences de la chaîne spécifiée par <string_builder_expr>. Vous pouvez utiliser la fonction de recherche pour trouver les chaînes.

Exemple :


>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>. Dans la ou les réponses, modifiez le champ d’en-tête spécifié par <target>. Utilisez Diameter.req.flags.SET(<flag>) ou Diameter.req.flags.UNSET<flag> comme stringbuilderexpression pour définir ou annuler les indicateurs.

Exemple :


> 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>. Dans la demande ou la réponse, modifie le champ d’en-tête spécifié par <target>.

Exemple :


> 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>. Remplacez la section de réponse DNS dans la réponse. Cela s’applique uniquement aux enregistrements A et AAAA. Utilisez DNS.NEW_RRSET_A les NS.NEW_RRSET_AAAA expressions et pour configurer la nouvelle section de réponses.

Exemple :


> 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>. Décode le modèle spécifié par la cible au format VPN sans client.

Exemple :


> 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>. Décode TOUS les modèles spécifiés par le paramètre de recherche au format VPN sans client.

Exemple :


> 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>. Encode le modèle spécifié par la cible au format VPN sans client.

Exemple :


> 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>. Encode TOUS les paramètres de recherche spécifiés dans le format VPN sans client.

Exemple :


> 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>. Remplace le nom d’en-tête de toutes les occurrences de l’en-tête SIP spécifié par <target> par un nom corrompu, de sorte que le destinataire ne le reconnaisse pas.

Exemple :


> 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>. Insère l’en-tête SIP spécifié par <header_string_builder_expr> et le contenu de l’en-tête spécifié par <contents_string_builder_expr>.

Exemple :


> 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>. Supprime l’en-tête SIP spécifié par <target>

Exemple :


> 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-->

Paramètre Target

Le paramètre Target est une expression qui spécifie la partie de la demande ou de la réponse à réécrire.

StringBuilderExpr

StringBuilderExpr est une expression qui spécifie le contenu qui doit être inséré dans la demande ou la réponse à l’emplacement spécifié. Cette expression remplace une chaîne spécifiée.

Exemple 1. Insertion d’un en-tête HTTP avec l’adresse IP du client :


> 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-->

Exemple 2. Remplacement des chaînes dans une charge utile TCP (réécriture 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-->

Rechercher une partie de la demande ou de la réponse à réécrire

La fonctionnalité de recherche permet de trouver toutes les instances du modèle requis dans la demande ou la réponse.

La fonctionnalité de recherche doit être utilisée dans les types d’action suivants :

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

La fonctionnalité de recherche ne peut pas être utilisée avec les types d’action suivants :

  • INSERT_HTTP_HEADER
  • INSERT_BEFORE
  • INSERT_AFTER
  • REMPLACER
  • SUPPRIMER
  • 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

Les types de recherche suivants sont pris en charge :

  • Texte - une chaîne littérale Exemple ፦recherche de texte (« bonjour »)
  • Expression régulière - modèle utilisé pour faire correspondre plusieurs chaînes dans la requête ou la réponse Exemple ፦search regex (re~^bonjour*~)
  • XPATH - Expression XPATH pour effectuer une recherche XML. Exemple ፦search xpath (xp%/a/b%)
  • JSON : expression XPATH permettant de rechercher JSON. Exemple ፦search xpath_json (xp%/a/b%) HTML - Une expression XPATH pour rechercher du HTML Exemple ፦search xpath_html (xp%/html/body%) Patset - Ceci recherche tous les motifs liés à l’entité patset. Exemple -search patset(“patset1”)
  • Jeu de données - Cette option recherche tous les modèles liés à l’entité du jeu de données. Exemple : -search dataset(“dataset1”)
  • AVP - Numéro AVP utilisé pour faire correspondre plusieurs AVP dans un message Diameter/Radius Exemple ፦search avp (999)

Affiner les résultats de la recherche

Vous pouvez utiliser la fonctionnalité Affiner la recherche pour spécifier les critères supplémentaires permettant d’affiner les résultats de la recherche. La fonctionnalité Affiner la recherche ne peut être utilisée que si la fonctionnalité de recherche est utilisée. Le paramètre Affiner la recherche commence toujours par l’opération « extend (m, n) », où ‘m’ indique quelques octets à gauche du résultat de la recherche et ‘n’ indique plusieurs octets à droite du résultat de la recherche pour étendre la zone sélectionnée.

Si l’action de réécriture configurée est la suivante :


> 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-->

Ensuite, le paramètre de recherche trouve le motif « abc » et puisque le paramètre RefineSearch est également configuré pour vérifier un octet supplémentaire à gauche et un octet supplémentaire à droite du motif correspondant. Le texte remplacé qui en résulte est : abcx. Le résultat de cette action est donc testing_refine_searchxxx456.

Exemple 1 : Utilisation de la fonctionnalité Affiner la recherche dans le type d’action 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-->

Exemple 2 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action 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-->

Exemple 3 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action 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-->

Exemple 4 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action 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-->

Exemple 5 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action CLIENTLESS_VPN_ENCODE_ALL.

’’’

ajout de l’action de réécriture act2 clientless_vpn_encode_all http.req.body (100) -search text (« abcd ») Effectuée action de réécriture sh act2 Nom : act1 Opération : clientless_vpn_encode_all Cible : http.req.body (100) Recherche : text (« abcd ») Hits : 0 Undef Hits : 0 Action Nombre de références : 0 Terminé

’’’

Exemple 6 : utilisation de la fonctionnalité Affiner la recherche dans le type d’action 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-->

Modifier une action de réécriture existante à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour modifier une action de réécriture existante et vérifier la configuration :

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

À l’invite de commandes, tapez les commandes suivantes pour vérifier la configuration modifiée

  • show rewrite action <name>

Exemple :


> 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-->

Supprimer une action de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour supprimer une action de réécriture :

rm rewrite action <name>

Exemple :


> rm rewrite action insertact
Done

<!--NeedCopy-->

Configurez une action de réécriture à l’aide de l’utilitaire de configuration

  1. Accédez à AppExpert > Rewrite > Actions.
  2. Dans le volet d’informations, effectuez l’une des opérations suivantes :
    • Pour créer une action, cliquez sur Ajouter.
    • Pour modifier une action existante, sélectionnez-la, puis cliquez sur Modifier.
  3. Cliquez sur Créer ou sur OK. Un message apparaît dans la barre d’état, indiquant que l’action a été correctement configurée.
  4. Répétez les étapes 2 à 4 pour créer ou modifier autant d’actions de réécriture que vous le souhaitez.
  5. Cliquez sur Fermer. Configuration d'une action de réécriture

Ajouter une expression à l’aide de la boîte de dialogue Ajouter une expression

  1. Dans la boîte de dialogue Créer une action de réécriture ou Configurer une action de réécriture, sous la zone de texte de l’argument de type que vous souhaitez entrer, cliquez sur Ajouter.
  2. Dans la boîte de dialogue Ajouter une expression, dans la première zone de liste, choisissez le premier terme de votre expression.

    • HTTP. Le protocole HTTP. Choisissez cette option si vous souhaitez examiner certains aspects de la demande qui se rapportent au protocole HTTP.
    • SYS. Les sites Web protégés. Sélectionnez cette option si vous souhaitez examiner certains aspects de la demande qui concernent le destinataire de la demande.
    • CLIENT. L’ordinateur qui a envoyé la demande. Choisissez cette option si vous souhaitez examiner certains aspects de l’expéditeur de la demande.

Lorsque vous faites votre choix, la zone de liste la plus à droite répertorie les termes appropriés pour la partie suivante de votre expression.

  1. Dans la deuxième zone de liste, choisissez le deuxième terme de votre expression. Les choix dépendent du choix que vous avez effectué à l’étape précédente et sont adaptés au contexte. Une fois que vous avez fait votre deuxième choix, la fenêtre d’aide située sous la fenêtre Construire une expression (qui était vide) affiche de l’aide décrivant le but et l’utilisation du terme que vous venez de choisir.

  2. Continuez à choisir des termes dans les zones de liste qui apparaissent à droite de la zone de liste précédente, ou à taper des chaînes ou des nombres dans les zones de texte qui s’affichent pour vous inviter à entrer une valeur, jusqu’à ce que votre expression soit terminée. Pour plus d’informations sur le langage des expressions PI et la création d’expressions pour les stratégies de répondeur, voir « Policies and Expressions ».

Si vous souhaitez tester l’effet d’une action de réécriture lorsqu’elle est utilisée sur des exemples de données HTTP, vous pouvez utiliser l’évaluateur de réécriture d’expression.

Réécriture des charges utiles TCP

Les expressions cibles des actions de réécriture TCP doivent commencer par l’un des préfixes d’expression suivants :

  • CLIENT.TCP.PAYLOAD. Pour réécrire les charges utiles TCP dans les demandes des clients. Par exemple, CLIENT.TCP.PAYLOAD(10000).AFTER_STR(“string1”).
  • SERVER.TCP.PAYLOAD. Pour réécrire les charges utiles TCP dans les réponses du serveur. Par exemple, SERVER.TCP.PAYLOAD(1000).B64DECODE.BETWEEN(“string1”,”string2”).

Évaluez une action de réécriture à l’aide de la boîte de dialogue Evaluateur d’actions de réécriture

  1. Dans le volet de détails Actions de réécriture, sélectionnez l’action de réécriture que vous souhaitez évaluer, puis cliquez sur Evaluer.
  2. Dans la boîte de dialogue Rewrite Expression Evaluator, spécifiez les valeurs des paramètres suivants. (Un astérisque indique un paramètre obligatoire.)

    Action de réécriture : si l’action de réécriture que vous souhaitez évaluer n’est pas déjà sélectionnée, sélectionnez-la dans la liste déroulante. Une fois que vous avez sélectionné une action de réécriture, la section Détails affiche les détails de l’action de réécriture sélectionnée. Nouveau : sélectionnez Nouveau pour ouvrir la boîte de dialogue Créer une action de réécriture et créer une action de réécriture. Modifier : sélectionnez Modifier pour ouvrir la boîte de dialogue Configurer l’action de réécriture et modifier l’action de réécriture sélectionnée. Type de flux : spécifie si l’action de réécriture sélectionnée doit être testée avec des données de demande HTTP ou de réponse HTTP. La valeur par défaut est Request. Si vous souhaitez effectuer un test avec les données de réponse, sélectionnez Réponse. Données de requête/réponse HTTP* : fournit un espace vous permettant de fournir les données HTTP que l’évaluateur d’action de réécriture est utilisé pour tester. Vous pouvez coller les données directement dans la fenêtre ou cliquer sur Exemple pour insérer des exemples d’en-têtes HTTP. Afficher la fin de ligne : spécifie si les caractères de fin de ligne de style UNIX (\ n) doivent être affichés à la fin de chaque ligne d’exemple de données HTTP. Exemple : insère des données HTTP d’exemple dans la fenêtre Données de requête/réponse HTTP. Vous pouvez choisir les données GET ou POST. Parcourir (Browse) : ouvre une fenêtre de navigation locale qui vous permet de choisir un fichier contenant des exemples de données HTTP à partir d’un emplacement local ou réseau. Effacer (Clear) : efface les exemples de données HTTP actuels de la fenêtre Données de requête/réponse HTTP.

  3. Cliquez sur Evaluer. L’ évaluateur d’action de réécriture évalue l’effet de l’action Réécrire sur les données d’exemple que vous avez choisies et affiche les résultats tels que modifiés par l’action de réécriture sélectionnée dans la fenêtre Résultats . Les ajouts et suppressions sont mis en surbrillance comme indiqué dans la légende dans le coin inférieur gauche de la boîte de dialogue.
  4. Continuez à évaluer les actions de réécriture jusqu’à ce que vous ayez déterminé que toutes vos actions ont l’effet souhaité.

    • Vous pouvez modifier l’action de réécriture sélectionnée et tester la version modifiée en cliquant sur Modifier pour ouvrir la boîte de dialogue Configurer l’action de réécriture, en effectuant et en enregistrant vos modifications, puis en cliquant à nouveau sur Evaluer.
    • Vous pouvez évaluer une action de réécriture différente à l’aide des mêmes données de demande ou de réponse en la sélectionnant dans la liste déroulante Action de réécriture, puis en cliquant à nouveau sur Evaluer .
  5. Cliquez sur Fermer pour fermer l’ évaluateur d’expression de réécriture et revenir au volet Actions de réécriture .

  6. Pour supprimer une action de réécriture, sélectionnez l’action de réécriture à supprimer, puis cliquez sur Supprimer et, lorsque vous y êtes invité, confirmez votre choix en cliquant sur OK. Évaluation d'une action de réécriture

Configurer la stratégie de réécriture

Après avoir créé les actions de réécriture nécessaires, vous devez créer au moins une stratégie de réécriture pour sélectionner les demandes que vous souhaitez que l’appliance NetScaler réécrive.

Une stratégie de réécriture se compose d’une règle, elle-même composée d’une ou de plusieurs expressions, et d’une action associée qui est exécutée si une demande ou une réponse correspond à la règle. Les règles de stratégie d’évaluation des requêtes et réponses HTTP peuvent être basées sur presque n’importe quelle partie d’une demande ou d’une réponse.

Même si vous ne pouvez pas utiliser les actions de réécriture TCP pour réécrire des données autres que la charge utile TCP, vous pouvez baser les règles de stratégie pour les stratégies de réécriture TCP sur les informations de la couche de transport et des couches situées sous la couche de transport.

Si une règle configurée correspond à une demande ou à une réponse, la stratégie correspondante est déclenchée et l’action qui lui est associée est exécutée.

Remarque :

Vous pouvez utiliser l’interface de ligne de commande ou l’interface graphique pour créer et configurer des stratégies de réécriture. Les utilisateurs qui ne sont pas parfaitement familiarisés avec l’interface de ligne de commande et le langage d’expression NetScaler Policy trouveront généralement l’interface utilisateur beaucoup plus facile à utiliser.

Pour ajouter une nouvelle stratégie de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour ajouter une nouvelle stratégie de réécriture et vérifier la configuration :

  • <add rewrite policy <name> <expression> <action> [<undefaction>]
  • <show rewrite policy <name>

Exemple 1. Réécriture du contenu HTTP


> add rewrite policyNew "HTTP.RES.IS_VALID" insertact NOREWRITE
 Done
> show rewrite policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertact
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

Exemple 2. Réécriture d’une charge utile TCP (réécriture TCP) :

> add rewrite policy client_tcp_payload_policy CLIENT.IP.SRC.EQ(172.168.12.232) client_tcp_payload_replace_all
 Done
> show rewrite policy client_tcp_payload_policy
        Name: client_tcp_payload_policy
        Rule: CLIENT.IP.SRC.EQ(172.168.12.232)
        RewriteAction: client_tcp_payload_replace_all
        UndefAction: Use Global
        LogAction: Use Global
        Hits: 0
        Undef Hits: 0

 Done
>
<!--NeedCopy-->

Pour modifier une stratégie de réécriture existante à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour modifier une stratégie de réécriture existante et vérifier la configuration :

  • <set rewrite policy <name> -rule <expression> -action <action> [<undefaction>]
  • <show rewrite policy <name>

Exemple :


> set rewrite policyNew -rule "HTTP.RES.IS_VALID" -action insertaction
 Done

> show rewrite policyNew
        Name: policyNew
        Rule: HTTP.RES.IS_VALID
        RewriteAction: insertaction
        UndefAction: NOREWRITE
        Hits: 0
        Undef Hits: 0

 Done
<!--NeedCopy-->

Pour supprimer une stratégie de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez la commande suivante pour supprimer une stratégie de réécriture :

rm rewrite policy <name>

Exemple :


> rm rewrite policyNew
Done
<!--NeedCopy-->

Pour configurer une stratégie de réécriture à l’aide de l’interface graphique

  1. Accédez à AppExpert > Rewrite > Policies.
  2. Dans le volet d’informations, effectuez l’une des opérations suivantes :
    • Pour créer une stratégie, cliquez sur Ajouter.
    • Pour modifier une stratégie existante, sélectionnez-la, puis cliquez sur Ouvrir.
  3. Cliquez sur Créer ou sur OK. Un message apparaît dans la barre d’état indiquant que la stratégie a été configurée avec succès.
  4. Répétez les étapes 2 à 4 pour créer ou modifier autant d’actions de réécriture que vous le souhaitez.
  5. Cliquez sur Fermer. Pour supprimer une stratégie de réécriture, sélectionnez la stratégie de réécriture à supprimer, puis cliquez sur Supprimer et, lorsque vous y êtes invité, confirmez votre choix en cliquant sur OK.

Lier une stratégie de réécriture

Après avoir créé une stratégie de réécriture, vous devez la lier pour la mettre en œuvre. Vous pouvez lier votre stratégie à Global si vous souhaitez l’appliquer à tout le trafic qui passe par votre NetScaler, ou vous pouvez lier votre stratégie à un serveur virtuel ou à un point de liaison spécifique pour diriger uniquement ce serveur virtuel ou lier le trafic entrant du point à cette stratégie. Si une demande entrante correspond à une stratégie de réécriture, l’action associée à cette stratégie est exécutée.

Les stratégies de réécriture pour l’évaluation des requêtes et réponses HTTP peuvent être liées à des serveurs virtuels de type HTTP ou SSL, ou elles peuvent être liées aux points de liaison REQ_OVERRIDE, REQ_DEFAULT, RES_OVERRIDE et RES_DEFAULT. Les stratégies de réécriture pour la réécriture TCP peuvent être liées uniquement aux serveurs virtuels de type TCP ou SSL_TCP, ou aux points de liaison OTHERTCP_REQ_OVERRIDE, OTHERTCP_REQ_DEFAULT, OTHERTCP_RES_OVERRIDE et OTHERTCP_RES_DEFAULT.

Remarque :

Le terme OTHERTCP est utilisé dans le contexte de l’appliance NetScaler pour désigner toutes les demandes et réponses TCP ou SSL_TCP que vous souhaitez traiter comme un flux brut d’octets, quels que soient les protocoles encapsulés par les paquets TCP.

Lorsque vous liez une stratégie, vous lui attribuez une priorité. La priorité détermine l’ordre dans lequel les stratégies que vous définissez sont évaluées. Vous pouvez définir la priorité sur n’importe quel nombre entier positif.

Dans le système d’exploitation NetScaler, les priorités des stratégies fonctionnent dans l’ordre inverse : plus le nombre est élevé, plus la priorité est faible. Par exemple, si vous avez trois stratégies avec des priorités de 10, 100 et 1000, la stratégie affectée d’une priorité de 10 est appliquée en premier, puis la stratégie affectée une priorité de 100 et enfin la stratégie affectée d’un ordre de 1000.

Contrairement à la plupart des autres fonctionnalités du système d’exploitation NetScaler, la fonction de réécriture continue d’évaluer et de mettre en œuvre des stratégies une fois qu’une demande correspond à une stratégie. Toutefois, l’effet d’une stratégie d’action particulière sur une demande ou une réponse sera souvent différent selon qu’elle est exécutée avant ou après une autre action. La priorité est importante pour obtenir les résultats escomptés.

Vous pouvez vous laisser suffisamment de place pour ajouter d’autres stratégies dans n’importe quel ordre, tout en les définissant pour qu’elles soient évaluées dans l’ordre souhaité, en définissant des priorités avec des intervalles de 50 ou 100 entre chaque stratégie lorsque vous la liez. Dans ce cas, vous pouvez ajouter d’autres stratégies à tout moment sans avoir à réattribuer la priorité d’une stratégie existante.

Lorsque vous liez une stratégie de réécriture, vous avez également la possibilité d’affecter une expression goto (GoToPriorityExpression) à la stratégie. Une expression goto peut être n’importe quel entier positif correspondant à la priorité attribuée à une autre stratégie dont la priorité est supérieure à celle qui contient l’expression goto. Si vous attribuez une expression goto à une stratégie et qu’une demande ou une réponse correspond à cette stratégie, NetScaler accède immédiatement à la stratégie dont la priorité correspond à l’expression goto. Il ignore toutes les stratégies dont les numéros de priorité sont inférieurs à ceux de la stratégie actuelle, mais supérieurs au numéro de priorité de l’expression goto, et n’évalue pas ces stratégies.

Pour lier globalement une stratégie de réécriture à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour lier globalement une stratégie de réécriture et vérifier la configuration :

  • bind rewrite global <policyName> <priority> [<gotoPriorityExpression>] [-type <type>] [-invoke (<labelType> <labelName>)]
  • show rewrite global

Exemple :


>bind rewrite global policyNew 10
 Done

> show rewrite global
1)      Global bindpoint: RES_DEFAULT
        Number of bound policies: 1

2)      Global bindpoint: REQ_OVERRIDE
        Number of bound policies: 1

 Done
<!--NeedCopy-->

Pour lier la stratégie de réécriture à un serveur virtuel spécifique à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez les commandes suivantes pour lier la stratégie de réécriture à un serveur virtuel spécifique et vérifier la configuration :

  • bind lb vserver <name>@ (<serviceName>@ [-weight <positive_integer>]) | <serviceGroupName>@ | (-policyName <string>@ [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )] [-invoke (<labelType> <labelName>)] )
  • show lb vserver <name>

Exemple :

> bind lb vserver lbvip -policyName ns_cmp_msapp -priority 50
 Done
>
> show lb vserver lbvip
        lbvip (8.7.6.6:80) - HTTP       Type: ADDRESS
        State: DOWN
        Last state change was at Wed Jul 15 05:54:24 2009 (+226 ms)
        Time since last state change: 28 days, 01:57:26.350
        Effective State: DOWN
        Client Idle Timeout: 180 sec
        Down state flush: ENABLED
        Disable Primary Vserver On Down : DISABLED
        Port Rewrite : DISABLED
        No. of Bound Services :  0 (Total)       0 (Active)
        Configured Method: LEASTCONNECTION
        Mode: IP
        Persistence: NONE
        Vserver IP and Port insertion: OFF
        Push: DISABLED  Push VServer:
        Push Multi Clients: NO
        Push Label Rule: none

1)      Policy : ns_cmp_msapp Priority:50
2)      Policy : cf-pol Priority:1      Inherited
 Done
<!--NeedCopy-->

Pour lier une stratégie de réécriture à un point de liaison à l’aide de l’interface graphique

  1. Accédez à AppExpert >Réécriture > Stratégies.
  2. Dans le volet d’informations, sélectionnez la stratégie de réécriture que vous souhaitez lier globalement, puis cliquez sur Gestionnaire de stratégies.
  3. Dans la boîte de dialogue Gestionnaire de stratégies de réécriture, dans le menu Points de liaison, effectuez l’une des opérations suivantes :
    1. Si vous souhaitez configurer des liaisons pour les stratégies de réécriture HTTP, cliquez sur HTTP, puis sur Demande ou Réponse, selon que vous souhaitez configurer des stratégies de réécriture basées sur les demandes ou des stratégies de réécriture basées sur les réponses.
    2. Si vous souhaitez configurer des liaisons pour les stratégies de réécriture TCP, cliquez sur TCP, puis sur Client ou Serveur, selon que vous souhaitez configurer des stratégies de réécriture TCP côté client ou des stratégies de réécriture TCP côté serveur.
  4. Cliquez sur le point de liaison auquel vous souhaitez lier la stratégie de réécriture. La boîte de dialogue Gestionnaire de stratégies de réécriture affiche toutes les stratégies de réécriture liées au point de liaison sélectionné.
  5. Cliquez sur Insérer une stratégie pour insérer une nouvelle ligne et afficher une liste déroulante contenant toutes les stratégies de réécriture disponibles et non liées.
  6. Cliquez sur la stratégie que vous souhaitez lier au point de liaison. La stratégie est insérée dans la liste des stratégies de réécriture liées au point de liaison.
  7. Dans la colonne Priorité, vous pouvez modifier la priorité par n’importe quel entier positif. Pour plus d’informations sur ce paramètre, reportez-vous à la section Priorité dans « Paramètres de liaison d’une stratégie de réécriture. »
  8. Si vous souhaitez ignorer les stratégies et accéder directement à une stratégie spécifique si la stratégie actuelle est appariée, modifiez la valeur de la colonne Goto Expression pour qu’elle corresponde à la priorité de la prochaine stratégie à appliquer. Pour plus d’informations sur ce paramètre, consultez GoToPriorityExpression dans « Paramètres de liaison d’une stratégie de réécriture ».
  9. Pour modifier une stratégie, cliquez sur la stratégie, puis sur Modifier la stratégie.
  10. Pour délier une stratégie, cliquez sur la stratégie, puis cliquez sur Délier la stratégie.
  11. Pour modifier une action, dans la colonne Action, cliquez sur l’action que vous souhaitez modifier, puis cliquez sur Modifier l’action.
  12. Pour modifier une étiquette d’appel, dans la colonne Invoke, cliquez sur l’étiquette d’appel que vous souhaitez modifier, puis cliquez sur Modifier le libellé d’appel.
  13. Pour régénérer les priorités de toutes les stratégies liées au point de liaison que vous configurez actuellement, cliquez sur Régénérer les priorités. Les stratégies conservent leurs priorités existantes par rapport aux autres stratégies, mais les priorités sont renumérotées par multiples de 10.
  14. Cliquez sur Appliquer les modifications.
  15. Cliquez sur Fermer. Un message apparaît dans la barre d’état indiquant que la stratégie a été configurée avec succès.

Pour lier une stratégie de réécriture à un serveur virtuel spécifique à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuels.
  2. Dans la liste des serveurs virtuels du volet d’informations, sélectionnez le serveur virtuel auquel vous souhaitez lier la stratégie de réécriture, puis cliquez sur Ouvrir.
  3. Dans la boîte de dialogue Configurer le serveur virtuel (équilibrage de charge), sélectionnez l’onglet Stratégies . Toutes les stratégies configurées sur votre NetScaler apparaissent dans la liste.
  4. Cochez la case en regard du nom de la stratégie que vous souhaitez lier à ce serveur virtuel.
  5. Cliquez sur OK. Un message apparaît dans la barre d’état indiquant que la stratégie a été configurée avec succès.

Configuration des étiquettes de stratégie de réécriture

Si vous souhaitez créer une structure de stratégie plus complexe que celle prise en charge par des stratégies uniques, vous pouvez créer des étiquettes de stratégie, puis les lier comme vous le feriez pour les stratégies. Une étiquette de stratégie est un point défini par l’utilisateur auquel les stratégies sont liées. Lorsqu’une étiquette de stratégie est appelée, toutes les stratégies qui lui sont liées sont évaluées dans l’ordre de priorité que vous avez configuré. Un libellé de stratégie peut inclure une ou plusieurs stratégies, chacune pouvant se voir attribuer son propre résultat. Une correspondance sur une stratégie dans l’étiquette de stratégie peut entraîner la poursuite de la stratégie suivante, l’appel d’un autre libellé de stratégie ou d’une ressource appropriée, ou la fin immédiate de l’évaluation de la stratégie et le retour du contrôle à la stratégie qui a appelé l’étiquette de stratégie.

Une étiquette de stratégie de réécriture se compose d’un nom, d’un nom de transformation qui décrit le type de stratégie inclus dans l’étiquette de stratégie et d’une liste de stratégies liées à l’étiquette de stratégie. Chaque stratégie liée à l’étiquette de stratégie contient tous les éléments décrits dans Configuration d’une stratégie de réécriture.

Remarque : Vous pouvez utiliser l’interface de ligne de commande ou l’interface graphique pour créer et configurer des étiquettes de stratégie de réécriture. Les utilisateurs qui ne sont pas parfaitement familiarisés avec l’interface de ligne de commande et le langage NetScaler Policy Infrastructure (PI) trouvent généralement l’interface utilisateur beaucoup plus facile à utiliser.

Pour configurer une étiquette de stratégie de réécriture à l’aide de l’interface de ligne de commande

Pour ajouter une étiquette de stratégie de réécriture, à l’invite de commandes, tapez la commande suivante :

add rewrite policylabel <labelName> <transform>

Par exemple, pour ajouter une étiquette de stratégie de réécriture nommée PollabelHttpResponses afin de regrouper toutes les stratégies qui fonctionnent sur les réponses HTTP, vous devez taper ce qui suit :

add rewrite policy label polLabelHTTPResponses http_res

Pour modifier une étiquette de stratégie de réécriture existante, à l’invite de commande NetScaler, tapez la commande suivante :

set rewrite policy <name> <transform>

Remarque :

La commande set rewrite policy utilise les mêmes options que la commande add rewrite policy.

Pour supprimer une étiquette de stratégie de réécriture, à l’invite de commande NetScaler, tapez la commande suivante :

rm rewrite policy<name>

Par exemple, pour supprimer une étiquette de stratégie de réécriture nommée PollabelHttpResponses, vous devez taper ce qui suit :

rm rewrite policy polLabelHTTPResponses

Pour configurer une étiquette de stratégie de réécriture à l’aide de l’interface graphique

  1. Accédez à AppExpert > Réécriture > Étiquettes de stratégie.
  2. Dans le volet d’informations, effectuez l’une des opérations suivantes :
    • Pour créer une étiquette de stratégie, cliquez sur Ajouter.
    • Pour modifier une étiquette de stratégie existante, sélectionnez la stratégie, puis cliquez sur Ouvrir.
  3. Ajoutez ou supprimez des stratégies de la liste liée à l’étiquette de stratégie.
    • Pour ajouter une stratégie à la liste, cliquez sur Insérer une stratégie, puis choisissez une stratégie dans la liste déroulante. Vous pouvez créer une stratégie et l’ajouter à la liste en choisissant Nouvelle stratégie dans la liste, puis en suivant les instructions de la section Configuration d’une stratégie de réécriture.
    • Pour supprimer une stratégie de la liste, sélectionnez-la, puis cliquez sur Annuler la stratégie.
  4. Modifiez la priorité de chaque stratégie en modifiant le nombre dans la colonne Priorité. Vous pouvez également renuméroter automatiquement les stratégies en cliquant sur Régénérer les priorités.
  5. Cliquez sur Créer ou sur OK, puis sur Fermer. Pour supprimer une étiquette de stratégie, sélectionnez-la, puis cliquez sur Supprimer. Pour renommer une étiquette de stratégie, sélectionnez-la, puis cliquez sur Renommer. Modifiez le nom de la stratégie, puis cliquez sur OK pour enregistrer vos modifications.