Citrix ADC

Conversion des expressions de stratégie à l’aide de l’outil NSPEPI

Remarque :

Vous pouvez télécharger l’outil de vérification NSPEPI et de pré-configuration depuis le GitHub public. Pour plus d’informations, consultez la page GitHub NEPEPI et la page README pour obtenir des instructions détaillées sur le téléchargement, l’installation et l’utilisation des outils. Nous recommandons aux clients d’utiliser les outils disponibles dans GitHub pour obtenir la version la plus complète et la plus récente.

Les fonctionnalités et fonctionnalités classiques basées sur des règles sont obsolètes à partir de NetScaler 12.0 build 56.20. Comme alternative, Citrix vous recommande d’utiliser l’infrastructure de stratégie avancée. Dans le cadre de cet effort, lorsque vous effectuez une mise à niveau vers Citrix ADC 12.1 version 56.20 ou ultérieure, vous devez remplacer les fonctionnalités et fonctionnalités basées sur des stratégies classiques par les fonctionnalités et fonctionnalités non obsolètes correspondantes. Vous devez également convertir les stratégies et expressions classiques en stratégies et expressions avancées. De plus, toutes les nouvelles fonctionnalités de Citrix ADC prennent uniquement en charge l’infrastructure de stratégie avancée.

L’ nspepi outil peut effectuer les opérations suivantes :

  1. Convertissez les expressions de stratégie classiques en expressions de stratégie avancées.
  2. Convertissez certaines stratégies classiques et leurs liaisons d’entités en stratégies et liaisons avancées.
  3. Convertissez quelques autres entités obsolètes en fonctionnalités non dépréciées correspondantes.
  4. Convertissez les commandes de filtre classiques en commandes de filtrage avancées.

Remarque :

Une fois que l’outil nspepi a réussi à convertir le fichier de configuration ns.conf, il affiche le fichier converti sous la forme d’un nouveau fichier avec le préfixe « new_ ». Si le fichier de configuration converti contient des erreurs ou des avertissements, vous devez les corriger manuellement dans le cadre du processus de conversion. Une fois converti, vous devez tester le fichier dans l’environnement de test, puis l’utiliser pour remplacer le fichier de configuration ns.conf actuel. Après le test, vous devez redémarrer la solution matérielle-logicielle pour le fichier de configuration ns.conf nouvellement converti ou corrigé.

Les fonctionnalités qui ne prennent en charge que les stratégies ou expressions classiques sont obsolètes et peuvent être remplacées par les fonctionnalités non obsolètes correspondantes.

Remarque :

Les informations relatives à l’ancienne version de l’ nspepi outil sont disponibles au format PDF. Pour plus d’informations, consultez la section Conversion de stratégie classique à l’aide de l’outil nspepi avant la version 12.1-51.16 PDF.

Avertissements de conversion et fichiers d’erreur

Avant d’utiliser l’outil pour votre conversion, il y a quelques avertissements à garder à l’esprit :

  1. Tous les avertissements et erreurs sont affichés sur la console. Un fichier d’avertissement est créé dans lequel les fichiers de configuration sont stockés.
  2. Le fichier d’avertissement et d’erreur porte le même nom que le fichier d’entrée, mais avec le préfixe « warn_» ajouté au nom du fichier. Lors de la conversion d’expression (avec l’option -e), les avertissements apparaissent dans le répertoire courant sous le nom « warn_expr ».

Remarque :

Ce fichier est au format de fichier journal standard, avec horodatage et niveau de journalisation. Les instances précédentes du fichier sont conservées avec des suffixes tels que “.1”, “.2”, etc., car l’outil est exécuté plusieurs fois. Au plus 10 instances seront conservées.

Format de fichier converti

Lors de la conversion d’un fichier de configuration (en utilisant « -f »), le fichier converti est placé dans le même répertoire que celui où existe le fichier de configuration d’entrée portant le même nom mais avec le préfixe « new_ ».

Commandes ou fonctionnalités gérées par l’outil de conversion nspepi

Voici les commandes gérées pendant le processus de conversion automatique.

  • Les stratégies classiques suivantes et leurs expressions sont converties en stratégies et expressions avancées. La conversion inclut les liaisons d’entités et les liaisons globales.
  1. add appfw policy
  2. add cmp policy
  3. add cr policy
  4. add cs policy
  5. add tm sessionPolicy
  6. add filter action
  7. add filter policy
  8. liaison de stratégie de filtre à l’équilibrage de charge, à la commutation de contenu, à la redirection du cache et à la stratégie globale.

Remarque :

Toutefois, pour « add tm SessionPolicy », vous ne pouvez pas vous lier au remplacement global dans les stratégies avancées.

  • Le paramètre de règle configuré dans « ajouter un serveur virtuel lb » est converti de l’expression classique à l’expression avancée.
  • Le paramètre SPDY configuré dans la commande « add ns HttpProfile » ou « set ns HttpProfile » est remplacé par « -http2 ENABLED ».
  • Expressions nommées (commandes « ajouter une expression de stratégie »). Chaque expression de stratégie nommée Classic est convertie en son expression nommée Advanced correspondante avec « nspepi_adv_ » défini comme préfixe. En outre, l’utilisation des expressions nommées pour les expressions classiques converties est remplacée par les expressions nommées avancées correspondantes. De plus, chaque expression nommée comporte deux expressions nommées, l’une étant classique et l’autre avancée (comme illustré ci-dessous).
  • La conversion Tunnel TrafficPolicy est prise en charge.
  • Gestion des liaisons de stratégie classiques intégrées dans CMP, CR et Tunnel.
  • La fonction Patclass est convertie en fonction Pat set.
  • Le paramètre « -pattern » de la commande « add rewrite action » est converti pour utiliser le paramètre « -search ».
  • SYS.EVAL_CLASSIC_EXPR est converti en expression avancée non obsolète équivalente. Ces expressions sont visibles dans toutes les commandes où les expressions avancées sont autorisées.
  • Les préfixes Q et S des expressions avancées sont convertis en expressions avancées non obsolètes équivalentes. Ces expressions sont visibles dans toutes les commandes où les expressions avancées sont autorisées.

Par exemple :

add policy expression classic_expr ns_true
Converts to:
add policy expression classic_expr ns_true
add policy expression nspepi_adv_classic_expr TRUE
<!--NeedCopy-->
  • Le paramètre PolicyType configuré dans la commande « set cmp parameter » est supprimé. Par défaut, le type de stratégie est « Avancé ».

Convertir les commandes de filtre classiques en commandes de filtrage avancées

L’ outil nspepi peut convertir des commandes basées sur des actions de filtre classiques telles que l’ajout, la liaison, etc. en commandes de filtrage avancées.

Toutefois, l’outil nepepi ne prend pas en charge les commandes de filtre suivantes.

  1. add filter action <action Name> FORWARD <service name>
  2. add filter action <action name> ADD prebody
  3. add filter action <action name> ADD postbody

Remarque :

  1. S’il existe des fonctionnalités de réécriture ou de répondeur dans ns.conf et que leurs stratégies sont liées globalement à l’expression GOTO en tant que END ou USER_INVOCATION_RESULT et que le type de liaison est REQ_X ou RES_X alors l’outil convertit partiellement les commandes de filtre de liaison et les commente. Un avertissement s’affiche pour mettre en œuvre un effort manuel.
  2. S’il existe des fonctionnalités de réécriture ou de répondeur existantes et que leurs stratégies sont liées à des serveurs virtuels (par exemple, équilibrage de charge, changement de contenu ou redirection de cache) de type HTTPS avec GOTO - END ou USER_INVOCATION_RESULT, l’outil convertit partiellement les commandes de filtre de liaison, puis les commente. Un avertissement s’affiche pour mettre en œuvre un effort manuel.

Exemple

Voici un exemple d’entrée :

add lb vserver v1 http 1.1.1.1 80 -persistenceType NONE -cltTimeout 9000
add cs vserver csv1 HTTP 1.1.1.2 80 -cltTimeout 180 -persistenceType NONE
add cr vserver crv1 HTTP 1.1.1.3 80 -cacheType FORWARD
add service svc1 1.1.1.4 http 80
add filter action fact_add add 'header:value'
add filter action fact_variable add 'H1:%%HTTP.TRANSID%%'
add filter action fact_prebody add prebody
add filter action fact_error_act1 ERRORCODE 200 "<HTML>Good URL</HTML>"
add filter action fact_forward_act1 FORWARD svc1
add filter policy fpol_add_res -rule ns_true -resAction fact_add
add filter policy fpol_error_res -rule ns_true -resAction fact_error_act1
add filter policy fpol_error_req -rule ns_true -reqAction fact_error_act1
add filter policy fpol_add_req -rule ns_true -reqAction fact_add
add filter policy fpol_variable_req -rule ns_true -reqAction fact_variable
add filter policy fpol_variable_res -rule ns_true -resAction fact_variable
add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody
add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody
add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1
bind lb vserver v1 -policyName fpol_add_res
bind lb vserver v1 -policyName fpol_add_req
bind lb vserver v1 -policyName fpol_error_res
bind lb vserver v1 -policyName fpol_error_req
bind lb vserver v1 -policyName fpol_variable_res
bind lb vserver v1 -policyName fpol_variable_req
bind lb vserver v1 -policyName fpol_forward_req
bind cs vserver csv1 -policyName fpol_add_req
bind cs vserver csv1 -policyName fpol_add_res
bind cs vserver csv1 -policyName fpol_error_res
bind cs vserver csv1 -policyName fpol_error_req
bind cr vserver crv1 -policyName fpol_add_req
bind cr vserver crv1 -policyName fpol_add_res
bind cr vserver crv1 -policyName fpol_error_res
bind cr vserver crv1 -policyName fpol_error_req
bind cr vserver crv1 -policyName fpol_forward_req
bind filter global fpol_add_req
bind filter global fpol_add_res
bind filter global fpol_error_req
bind filter global fpol_error_res
bind filter global fpol_variable_req
bind filter global fpol_variable_res
bind filter global fpol_variable_res -state DISABLED
bind filter global fpol_prebody_req
bind filter global fpol_forward_req
After conversion, warning/error messages will be displayed for manual effort.
Warning files:
cat warn_<input file name>:
2019-11-07 17:13:34,724: ERROR - Conversion of [add filter action fact_prebody add prebody] not supported in this tool.
2019-11-07 17:13:34,739: ERROR - Conversion of [add filter action fact_forward_act1 FORWARD svc1] not supported in this tool.
2019-11-07 17:13:38,042: ERROR - Conversion of [add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody] not supported in this tool.
2019-11-07 17:13:38,497: ERROR - Conversion of [add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody] not supported in this tool.
2019-11-07 17:13:39,035: ERROR - Conversion of [add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1] not supported in this tool.
2019-11-07 17:13:39,060: WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind filter global fpol_variable_res -state DISABLED


<!--NeedCopy-->

Voici un exemple de sortie. Toutes les commandes converties sont commentées.

cat new_<input file name>
add rewrite action fact_add insert_http_header header ""value""
add filter action fact_prebody add prebody
add filter action fact_forward_act1 FORWARD svc1
add filter policy fpol_prebody_req -rule ns_true -reqAction fact_prebody
add filter policy fpol_prebody_res -rule ns_true -resAction fact_prebody
add filter policy fpol_forward_req -rule ns_true -reqAction fact_forward_act1
bind lb vserver v1 -policyName fpol_forward_req
bind cr vserver crv1 -policyName fpol_forward_req
#bind filter global fpol_variable_res -state DISABLED
bind filter global fpol_prebody_req
bind filter global fpol_forward_req
add rewrite action nspepi_adv_fact_variable insert_http_header H1 HTTP.RES.TXID
add rewrite action fact_variable insert_http_header H1 HTTP.REQ.TXID
add responder action fact_error_act1 respondwith "HTTP.REQ.VERSION.APPEND(" 200 OK\r
nConnection: close\r
nContent-Length: 21\r\n\r
n<HTML>Good URL</HTML>")"
add rewrite action nspepi_adv_fact_error_act1 replace_http_res "HTTP.REQ.VERSION.APPEND(" 200 OK\r
nConnection: close\r
nContent-Length: 21\r\n\r
n<HTML>Good URL</HTML>")"
add rewrite policy fpol_add_res TRUE fact_add
add rewrite policy fpol_error_res TRUE nspepi_adv_fact_error_act1
add responder policy fpol_error_req TRUE fact_error_act1
add rewrite policy fpol_add_req TRUE fact_add
add rewrite policy fpol_variable_req TRUE fact_variable
add rewrite policy fpol_variable_res TRUE nspepi_adv_fact_variable
set cmp parameter -policyType ADVANCED
bind rewrite global fpol_add_req 100 NEXT -type REQ_DEFAULT
bind rewrite global fpol_variable_req 200 NEXT -type REQ_DEFAULT
bind rewrite global fpol_add_res 100 NEXT -type RES_DEFAULT
bind rewrite global fpol_error_res 200 NEXT -type RES_DEFAULT
bind rewrite global fpol_variable_res 300 NEXT -type RES_DEFAULT
bind responder global fpol_error_req 100 END -type REQ_DEFAULT
bind lb vserver v1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_variable_res -type RESPONSE -priority 300 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_variable_req -type REQUEST -priority 200 -gotoPriorityExpression NEXT
bind lb vserver v1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END
bind cs vserver csv1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind cs vserver csv1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END
bind cr vserver crv1 -policyName fpol_add_req -type REQUEST -priority 100 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_add_res -type RESPONSE -priority 100 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_error_res -type RESPONSE -priority 200 -gotoPriorityExpression NEXT
bind cr vserver crv1 -policyName fpol_error_req -type REQUEST -priority 100 -gotoPriorityExpression END

<!--NeedCopy-->

Convertir les commandes de filtre classiques en commandes de fonctionnalités avancées si les liaisons de stratégie de réécriture ou de répondeur existantes ont atteint l’expression END ou USE_INNVOCATION

Dans cette conversion, si une stratégie de réécriture est liée à un ou plusieurs serveurs virtuels et si le serveur possède END ou USE_INVOCATION_RESULT, l’outil commente les commandes.

Exemple

Voici un exemple de commande d’entrée :

COPY
add filter policy fpol1 -rule ns_true -resAction reset
add filter policy fpol2 -rule ns_true -reqAction reset
add rewrite policy pol1 true NOREWRITE
add rewrite policylabel pl http_res
bind rewrite policylabel pl pol1 1
bind rewrite global NOPOLICY 1 USE_INVOCATION_RESULT -type RES_DEFAULT -invoke policylabel pl
add responder policy pol2 true NOOP
add responder policylabel pl -policylabeltype HTTP
bind responder policylabel pl pol2 1
bind responder global NOPOLICY 1 USE_INVOCATION_RESULT -type REQ_DEFAULT -invoke policylabel pl
bind lb vserver v1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind cs vserver csv1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind lb vserver v1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cs vserver csv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cr vserver crv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind lb vserver v1_http -policyName fpol1
bind cs vserver csv1_http -policyName fpol1
bind lb vserver v2_http -policyName fpol2
bind cs vserver csv2_http -policyName fpol2
bind cr vserver crv2_http -policyName fpol2
bind filter global fpol1 -priority 100
bind filter global fpol2 -priority 100
<!--NeedCopy-->

Voici un exemple de commande de sortie :

COPY
add rewrite policy pol1 true NOREWRITE
add rewrite policylabel pl http_res
bind rewrite policylabel pl pol1 1
add responder policy pol2 true NOOP
add responder policylabel pl -policylabeltype HTTP
bind responder policylabel pl pol2 1
add rewrite policy fpol1 TRUE RESET
add responder policy fpol2 TRUE RESET
#bind lb vserver v1_http -policyName fpol1 -type RESPONSE
#bind cs vserver csv1_http -policyName fpol1 -type RESPONSE
#bind rewrite global fpol1 100 -type RES_DEFAULT
#bind lb vserver v2_http -policyName fpol2 -type REQUEST
#bind cs vserver csv2_http -policyName fpol2 -type REQUEST
#bind cr vserver crv2_http -policyName fpol2 -type REQUEST
#bind responder global fpol2 100 -type REQ_DEFAULT
bind rewrite global NOPOLICY 1 USE_INVOCATION_RESULT -type RES_DEFAULT -invoke policylabel pl
bind responder global NOPOLICY 1 USE_INVOCATION_RESULT -type REQ_DEFAULT -invoke policylabel pl
bind lb vserver v1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind lb vserver v1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cs vserver csv1_tcp -policyName pol1 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type RESPONSE
bind cs vserver csv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST
bind cr vserver crv1_tcp -policyName pol2 -priority 100 -gotoPriorityExpression USE_INVOCATION_RESULT -type REQUEST-

<!--NeedCopy-->

Commandes ou fonctionnalités non gérées par l’outil de conversion nspepi

Voici quelques commandes qui ne sont pas gérées dans le cadre du processus de conversion automatique.

  • Certaines liaisons ne peuvent pas être converties s’il existe un certain entrelacement des priorités entre les points de liaison globaux et non globaux, entre les utilisateurs et les groupes, ainsi qu’entre les liaisons vers différentes entités. La configuration affectée est commentée et une erreur est générée. Ces configurations doivent être converties manuellement.
  • Les stratégies Classic et Advanced peuvent être liées à cmp global. Dans de nombreux cas, la fonctionnalité change une fois que les stratégies classiques sont converties en stratégies avancées. Nous avons converti des commandes qui peuvent être résolues en commentant certaines stratégies. Certaines commandes ne peuvent cependant pas être converties. Dans ce cas, une erreur se produit et la conversion doit être effectuée manuellement.
  • Les expressions nommées intégrées classiques ne sont pas toutes converties en expressions nommées Advanced équivalentes.
  • Les expressions de sécurité client ne sont pas gérées.
  • L’option « -precedence » pour les serveurs virtuels de commutation de contenu et de redirection de cache n’est pas gérée.
  • SureConnect (SC)
  • Priority Queuing (PQ)
  • HTTP Denial of Service (HDOS)
  • HTML Injection
  • Authentification
  • Authorization
  • VPN
  • Syslog
  • Nslog
  • Les expressions classiques basées sur des fichiers ne sont pas gérées.

Remarque :

Pour certaines fonctionnalités telles que PatClass/Filter, la syntaxe de la commande est modifiée. S’il existe des stratégies cmd, les stratégies cmd peuvent devoir être modifiées en fonction des besoins du client.

Problèmes connus

Les erreurs suivantes peuvent être produites par l’outil nspepi:

  • En cas de problème lors de la conversion d’une expression.
  • Si une expression de stratégie nommée utilise le paramètre -ClientSecurityMessage, car ce paramètre n’est pas pris en charge dans l’expression de stratégie avancée.

Remarque :

Toutes les liaisons de stratégie classiques avec l’option -state désactivée sont commentées. L’option -state n’est pas disponible pour les liaisons de stratégie avancées.

Exécution de l’outil nspepi

Voici un exemple de ligne de commande permettant d’exécuter l’outil nspepi. Cet outil est exécuté à partir de la ligne de commande du shell (vous devez taper la commande « shell » dans le « CLI » de NetScaler pour y accéder). « -f » ou « -e » doivent être spécifiés pour effectuer une conversion. L’utilisation de « -d » est destinée au personnel Citrix pour l’analyse à des fins de support.

usage: nspepi [-h] (-e <classic policy expression> | -f <path to ns config file>)[-d] [-v] [-V

Convert classic policy expressions to advanced policy expressions and deprecated commands to non-deprecated
commands.

optional arguments:
-h, --help show this help message and exit
-e <classic policy expression>, --expression <classic policy expression>
convert classic policy expression to advanced policy
expression (maximum length of 8191 allowed)
-f <path to ns config file>, --infile <path to ns config file>
convert netscaler config file
-d, --debug log debug output
-v, --verbose show verbose output
-V, --version show program's version number and exit
<!--NeedCopy-->

Exemples d’utilisation :

  1. nspepi -e "req.tcp.destport == 80"
  2. nspepi -f ns.conf

Voici quelques exemples d’exécution de l’outil nspepi à l’aide de l’interface de ligne de commande :

Exemple de sortie pour le paramètre —e :

root@ns# nspepi -e "req.http.header foo == "bar""
"HTTP.REQ.HEADER("foo").EQ("bar")"
<!--NeedCopy-->

Exemple de sortie pour le paramètre -f :

root@ns# cat sample.conf
add c\*\*Input\*\*r vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF
add cr policy cr_pol1 -rule ns_true
bind cr vserver cr_vs -policyName cr_pol1
<!--NeedCopy-->

Exécution de nspepi avec le paramètre -f :

nspepi -f sample.conf
<!--NeedCopy-->

La configuration convertie est disponible dans un nouveau fichier new_sample.conf. Recherchez dans le fichier warn_sample.conf les avertissements ou erreurs qui ont pu être générés.

Exemple de sortie du paramètre -f avec le paramètre -v

nspepi -f sample.conf -v
INFO - add cr vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF
INFO - add cr policy cr_pol1 -rule TRUE -action ORIGIN
INFO - bind cr vserver cr_vs -policyName cr_pol1 -priority 100 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

La configuration convertie est disponible dans un nouveau fichier new_sample.conf. Recherchez dans le fichier warn_sample.conf les avertissements ou erreurs qui ont pu être générés.

Fichier de configuration converti :

root@ns# cat new_sample.conf
add cr vserver cr_vs HTTP -cacheType TRANSPARENT -cltTimeout 180 -originUSIP OFF
add cr policy cr_pol1 -rule TRUE -action ORIGIN
set cmp parameter -policyType ADVANCED
bind cr vserver cr_vs -policyName cr_pol1 -priority 100 -gotoPriorityExpression END -type REQUEST

<!--NeedCopy-->

Exemple de sortie d’un exemple de configuration sans erreur ni avertissement :

nspepi -f sample_2.conf
<!--NeedCopy-->

La configuration convertie est disponible dans un nouveau fichier new_sample_2.conf. Recherchez dans le fichier warn_sample_2.conf les avertissements ou erreurs qui ont pu être générés.

Exemple de sortie d’un exemple de configuration avec des avertissements :

root@ns# cat sample_2.conf
add policy expression security_expr "req.tcp.destport == 80" -clientSecurityMessage "Not allowed"
set cmp parameter -policyType CLASSIC
add cmp policy cmp_pol1 -rule ns_true -resAction COMPRESS
add cmp policy cmp_pol2 -rule ns_true -resAction COMPRESS
add cmp policy cmp_pol3 -rule TRUE -resAction COMPRESS
bind cmp global cmp_pol1
bind cmp global cmp_pol2 -state DISABLED
bind cmp global cmp_pol3 -priority 1 -gotoPriorityExpression END -type RES_DEFAULT
bind lb vserver lb_vs -policyName cmp_pol2
root@ns#
<!--NeedCopy-->

Exemple d’exécution de nspepi avec le paramètre -f :

root@ns# nspepi -f sample_2.conf
ERROR - Error in converting expression security_expr : conversion of clientSecurityMessage based expression is not supported.
WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind cmp global cmp_pol2 -state DISABLED
Warning - Bindings of advanced CMP policies to cmp global are commented out, because initial global cmp parameter is classic but advanced policies are bound. Now global cmp parameter policy type is set to advanced. If commands are required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config'. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation.
root@ns#
<!--NeedCopy-->

Fichier converti :

root@ns# cat new_sample_2.conf  
add policy expression security_expr "req.tcp.destport == 80" -clientSecurityMessage "Not allowed"
set cmp parameter -policyType ADVANCED
add cmp policy cmp_pol1 -rule TRUE -resAction COMPRESS
add cmp policy cmp_pol2 -rule TRUE -resAction COMPRESS
add cmp policy cmp_pol3 -rule TRUE -resAction COMPRESS
#bind cmp global cmp_pol2 -state DISABLED
#bind cmp global cmp_pol3 -priority 1 -gotoPriorityExpression END -type RES_DEFAULT
bind cmp global cmp_pol1 -priority 100 -gotoPriorityExpression END -type RES_DEFAULT
bind lb vserver lb_vs -policyName cmp_pol2 -priority 100 -gotoPriorityExpression END -type RESPONSE
root@ns#
<!--NeedCopy-->

Fichier d’avertissement :

root@ns# cat warn_sample_2.conf
2019-02-28 06:20:10,590: ERROR - Error in converting expression security_expr : conversion of clientSecurityMessage based expression is not supported.
2019-02-28 06:20:12,187: WARNING - Following bind command is commented out because state is disabled. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation. If command is required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config': bind cmp global cmp_pol2 -state DISABLED
2019-02-28 06:20:12,191: WARNING - Bindings of advanced CMP policies to cmp global are commented out, because initial global cmp parameter is classic but advanced policies are bound. Now global cmp parameter policy type is set to advanced. If commands are required please take a backup because comments will not be saved in ns.conf after triggering 'save ns config'. Advanced expressions only have a fixed ordering of the types of bindings without interleaving, except that global bindings are allowed before all other bindings and after all bindings. If you have global bindings in the middle of non-global bindings or any other interleaving then you will need to reorder all your bindings for that feature and direction. Refer to nspepi documentation.
root@ns#
<!--NeedCopy-->

Priorités liées

Les stratégies avancées n’autorisent pas l’entrelacement arbitraire par priorité entre global et non global et entre différents types de liaison. Si vous vous fiez à un tel entrelacement des priorités de stratégie classique, vous devez ajuster les priorités pour qu’elles soient conformes aux règles de stratégie avancées et pour obtenir le comportement souhaité. Les priorités des stratégies avancées sont locales à un point de liaison. Un point de liaison est une combinaison unique de protocole, de fonctionnalité, de direction et d’entité (les entités sont des serveurs virtuels spécifiques, des utilisateurs, des groupes, des services et soit un remplacement global, soit un défaut global). Les priorités politiques ne sont pas suivies à travers les points de liaison.

Pour un protocole, une fonctionnalité et une direction donnés, l’ordre d’évaluation des stratégies avancées est indiqué ci-dessous :

  • REMPLACEMENT GLOBAL.
  • Authentification, autorisation et audit de l’utilisateur (actuel).
  • Groupes d’authentification, d’autorisation et d’audit (dont l’utilisateur est membre) par ordre de pondération - l’ordre n’est pas défini si deux groupes ou plus ont le même poids.
  • Serveur virtuel LB sur lequel la demande a été reçue ou que Content Switching a sélectionné.
  • Serveur virtuel de commutation de contenu, serveur virtuel de redirection de cache sur lequel la demande a été reçue.
  • Service sélectionné par l’équilibrage de charge.
  • Valeur par défaut globale.

Pour l’évaluation de la stratégie d’autorisation, l’ordre est le suivant :

  • Les systèmes sont priorisés.
  • Serveur virtuel d’équilibrage de charge sur lequel la demande a été reçue ou sur lequel CS a été sélectionné.
  • Serveur virtuel de commutation de contenu sur lequel la demande a été reçue.
  • Valeur par défaut du système.

Dans chaque point de liaison, les stratégies sont évaluées par ordre de priorité, du numéro le plus bas au numéro le plus élevé. Les stratégies ne sont évaluées que pour le protocole utilisé et la direction d’où le message a été reçu.

Liaisons de stratégie classiques nécessitant une redéfinition manuelle des priorités

Voici quelques types de liaisons de stratégie classiques qui nécessitent une redéfinition manuelle des priorités pour répondre à vos besoins. Tous ces éléments sont destinés à un trait donné et à la direction.

  • Priorités classiques dont le numéro de priorité augmente en sens inverse de la direction des listes de types d’entités ci-dessus. Par exemple, une liaison de serveur virtuel de commutation de contenu inférieure à une liaison de serveur virtuel d’équilibrage de charge.
  • Priorités classiques qui entrelacent les groupes d’authentification, d’autorisation et d’audit. Une partie d’un groupe se trouve avant un autre groupe et une autre partie se trouve après une partie de cet autre groupe.
  • Priorités classiques qui augmentent en nombre autre que l’ordre de pondération des groupes d’authentification, d’autorisation et d’audit.
  • Les priorités mondiales classiques qui sont inférieures à certaines priorités non mondiales et les mêmes priorités mondiales sont supérieures à d’autres priorités non mondiales (en d’autres termes, tout segment de priorités non mondiales, suivi d’une ou de plusieurs priorités mondiales, suivi d’une ou de plusieurs priorités non mondiales).