Citrix ADC

Conversión de expresiones de directiva mediante la herramienta NSPEPI

Nota:

Puede descargar la herramienta de comprobación de preconfiguración y NSPEPI desde el GitHub público. Para obtener más información, consulta la página NEPEPI de GitHub y la página README para obtener instrucciones detalladas para descargar, instalar y usar las herramientas. Recomendamos a los clientes que utilicen las herramientas disponibles en GitHub para obtener la versión más completa y actualizada.

Las funciones y funcionalidades clásicas basadas en directivas han sido obsoletas a partir de NetScaler 12.0 build 56.20. Como alternativa, Citrix recomienda utilizar la infraestructura de directivas avanzada. Como parte de este esfuerzo, al actualizar a Citrix ADC 12.1 compilación 56.20 o posterior, debe reemplazar las funciones y funcionalidades clásicas basadas en directivas por sus funciones y funcionalidades no obsoletas correspondientes. Además, debe convertir las directivas y expresiones clásicas en directivas y expresiones avanzadas. Además, todas las nuevas funciones de Citrix ADC solo admiten la infraestructura de directivas avanzada.

La herramienta nspepi puede realizar lo siguiente:

  1. Convertir expresiones de directiva clásicas en expresiones de directiva avanzadas.
  2. Convierta determinadas directivas clásicas y sus vinculaciones de entidad en directivas y enlaces avanzados.
  3. Convierta algunas funciones obsoletas más en sus correspondientes funciones no obsoletas.
  4. Convierta los comandos de filtro clásicos en comandos de filtro avanzados.

Nota:

Una vez que la herramienta nspepi convierte correctamente el archivo de configuración ns.conf, la herramienta muestra el archivo convertido como un archivo nuevo con el prefijo “new_”. Si el archivo de configuración convertido contiene errores o advertencias, debe corregirlos manualmente como parte del proceso de conversión. Una vez convertido, debe probar el archivo en el entorno de prueba y utilizarlo para reemplazar el archivo de configuración ns.conf real. Después de realizar la prueba, debe reiniciar el dispositivo para el archivo de configuración ns.conf recién convertido o corregido.

Las funciones que solo admiten directivas o expresiones clásicas quedan obsoletas y se pueden sustituir por las funciones no obsoletas correspondientes.

Nota:

La información relativa a la versión anterior de la herramienta nspepi está disponible en formato PDF. Para obtener más información, consulte Conversión de directivas clásica con la herramienta nspepi anterior a la versión 12.1-51.16 PDF.

Advertencias de conversión y archivos de error

Antes de utilizar la herramienta para la conversión, hay algunas advertencias que debes tener en cuenta:

  1. Todas las advertencias y errores se envían a la consola. Se ha creado un archivo de advertencia en el que se almacenan los archivos de configuración.
  2. El archivo de advertencias y errores tiene el mismo nombre que el archivo de entrada pero con el prefijo “warn_” agregado al nombre del archivo. Durante la conversión de expresiones (cuando se utiliza -e), las advertencias aparecen en el directorio actual con el nombre “warn_expr”.

Nota:

Este archivo tiene un formato de archivo de registros estándar, con sello de fecha/hora y nivel de registro. Las instancias anteriores del archivo se conservan con sufijos como “.1”, “.2”, etc., ya que la herramienta se ejecuta varias veces. Se conservarán como máximo 10 instancias.

Formato de archivo convertido

Al convertir un fichero de configuración (mediante “-f”), el fichero convertido se coloca en el mismo directorio donde existe el fichero de configuración de entrada con el mismo nombre pero con el prefijo “new_”.

Comandos o funciones gestionados por la herramienta de conversión nspepi

A continuación se indican los comandos que se manejan durante el proceso de conversión automática.

  • Las siguientes directivas clásicas y sus expresiones se convierten en directivas y expresiones avanzadas. La conversión incluye vinculaciones de entidades y vinculaciones 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. filter policy binding a load balancing, content switching, cache redirection y global.

Nota:

Sin embargo, para “add tm sessionPolicy”, no se puede vincular a la anulación global en las directivas avanzadas.

  • El parámetro de regla configurado en “add lb virtual server” se convierte de expresión clásica a expresión avanzada.
  • El parámetro SPDY configurado en el comando “add ns httpProfile” o “set ns httpProfile” se cambia a “-http2 ENABLED”.
  • Expresiones con nombre (comandos “add policy expression”). Cada expresión de directiva clásica con nombre se convierte en su expresión denominada avanzada correspondiente con “nspepi_adv_” establecido como prefijo. Además, el uso de expresiones con nombre para las expresiones clásicas convertidas se cambia a las expresiones con nombre avanzadas correspondientes. Además, cada expresión con nombre tiene dos expresiones con nombre, una es Clásica y la otra Avanzada (como se muestra a continuación).
  • Se admite la conversión Tunnel TrafficPolicy
  • Manejo de las vinculaciones de directivas clásicas integradas en CMP, CR y Tunnel.
  • La función Patclass se convierte en una función de conjunto de Pat.
  • El parámetro “-pattern” del comando “agregar acción de reescritura” se convierte para usar el parámetro “-search”.
  • SYS.EVAL_CLASSIC_EXPR se convierte en la expresión avanzada equivalente no obsoleta. Estas expresiones se pueden ver en cualquier comando en el que se permitan expresiones avanzadas.
  • Los prefijos Q y S de las expresiones avanzadas se convierten en expresiones avanzadas equivalentes no obsoletas. Estas expresiones se pueden ver en cualquier comando en el que se permitan expresiones avanzadas.

Por ejemplo:

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-->
  • Se elimina el parámetro PolicyType configurado en el comando “set cmp parameter”. De forma predeterminada, el tipo de directiva es “Avanzada”.

Convertir comandos de filtro clásicos en comandos de filtro avanzados

La herramienta nspepi puede convertir comandos basados en acciones de filtro clásicas como agregar, enlazar, etc. en comandos de filtro avanzados.

Sin embargo, la herramienta nepepi no admite los siguientes comandos de filtro.

  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

Nota:

  1. Si existen entidades de reescritura o respuesta en ns.conf y sus directivas están enlazadas globalmente con la expresión GOTO como END o USER_INVOCATION_RESULT y el tipo de enlace es REQ_X o RES_X, la herramienta convierte parcialmente los comandos de filtro de enlace y los comenta. Se muestra una advertencia para realizar un esfuerzo manual.
  2. Si existen funciones de reescritura o respuesta existentes y sus directivas están enlazadas a servidores virtuales (por ejemplo, equilibrio de carga, cambio de contenido o redirección de caché) de tipo HTTPS con GOTO - END o USER_INVOCATION_RESULT, la herramienta convierte parcialmente los comandos de filtro de enlace y, a continuación, comenta. Se muestra una advertencia para realizar un esfuerzo manual.

Ejemplo

A continuación se muestra un ejemplo de entrada:

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

A continuación se presenta un ejemplo de salida. Todos los comandos convertidos se comentan.

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

Convierta los comandos de filtro clásicos en comandos de funciones avanzadas si los enlaces de directivas de reescritura o respuesta existentes tienen la expresión goto END o USE_INNVOCATION

En esta conversión, si una directiva de reescritura vinculada a uno o más servidores virtuales y si el servidor tiene END o USE_INVOCATION_RESULT, la herramienta comenta los comandos.

Ejemplo

A continuación se muestra un comando de entrada de ejemplo:

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

A continuación se muestra un ejemplo de comando de salida:

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

Comandos o funciones no gestionados por la herramienta de conversión nspepi

A continuación se presentan algunos comandos que no se manejan como parte del proceso de conversión automática.

  • Algunos enlaces no se pueden convertir si hay cierto entrelazado de prioridades entre puntos de enlace globales y no globales, entre usuarios y grupos, y también entre enlaces a diferentes entidades. Estos tienen la configuración afectada comentada y se produce un error. Dichas configuraciones se deben convertir manualmente.
  • Tanto las directivas clásicas como las avanzadas pueden vincularse a cmp global. Hay muchos casos en los que la funcionalidad cambia una vez que las directivas clásicas se convierten en directivas avanzadas. Hemos convertido comandos que se pueden resolver comentando algunas directivas. Sin embargo, hay algunos comandos que no se pueden convertir. En tales casos, se producirá un error y la conversión debe realizarse manualmente.
  • No todos los usos de las expresiones con nombre integradas clásicas se convierten en expresiones con nombre avanzadas equivalentes.
  • Las expresiones de seguridad del cliente no se gestionan.
  • La opción “-precedence” para los servidores virtuales de conmutación de contenido y redirección de caché no se gestiona.
  • Conexión segura (SC)
  • Cola prioritaria (PQ)
  • Denegación de servicio HTTP (HDOS)
  • Inyección HTML
  • Autenticación
  • Autorización
  • VPN
  • Syslog
  • Nslog
  • Las expresiones clásicas basadas en archivos no se gestionan.

Nota:

Para algunas funciones como Patclass/filter, se cambia la sintaxis del comando. Si hay directivas cmd, es posible que sea necesario cambiar las directivas de cmd según los requisitos del cliente.

Problemas conocidos

La herramienta nspepi puede producir los siguientes errores:

  • Si hay algún problema al convertir una expresión.
  • Si una expresión de directiva con nombre utiliza el parámetro -ClientSecurityMessage porque este parámetro no se admite en la expresión de directiva avanzada.

Nota:

Todas las vinculaciones de directivas clásicas con la opción -state inhabilitada se comentan. La opción -state no está disponible para las vinculaciones de directivas avanzadas.

Ejecución de la herramienta nspepi

A continuación se muestra un ejemplo de línea de comandos para ejecutar la herramienta nspepi. Esta herramienta se ejecuta desde la línea de comandos del shell (debe escribir el comando “shell” en la “CLI” de NetScaler para llegar a eso). Se debe especificar “-f” o “-e” para realizar una conversión. El uso de “-d” está pensado para que el personal de Citrix lo analice con fines de asistencia técnica.

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

Ejemplos de uso:

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

A continuación se presentan algunos ejemplos de ejecución de la herramienta nspepi mediante la CLI

Salida de ejemplo para el parámetro —e:

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

Salida de ejemplo para el parámetro -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-->

Ejecutar nspepi con el parámetro -f:

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

La configuración convertida está disponible en un nuevo archivo new_sample.conf. Compruebe si hay advertencias o errores que se hayan generado en el archivo warn_sample.conf.

Ejemplo de salida del parámetro -f junto con el parámetro -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 configuración convertida está disponible en un nuevo archivo new_sample.conf. Compruebe si hay advertencias o errores que se hayan generado en el archivo warn_sample.conf.

Archivo de configuración convertido:

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

Ejemplo de salida de una configuración de ejemplo sin errores ni advertencias:

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

La configuración convertida está disponible en un nuevo archivo new_sample_2.conf. Compruebe si hay advertencias o errores que se hayan generado en el archivo warn_sample_2.conf.

Ejemplo de salida de una configuración de ejemplo con advertencias:

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

Ejemplo de ejecución de nspepi con el parámetro -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-->

Archivo convertido:

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

Archivo de advertencias:

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

Vincular prioridades

Las directivas avanzadas no permiten el entrelazado arbitrario por prioridad entre globales y no globales ni entre distintos tipos de enlace. Si confía en este tipo de intercalado de prioridades de directivas clásicas, deberá ajustar las prioridades para que se ajusten a las reglas de directivas avanzadas y para obtener el comportamiento deseado. Las prioridades de las directivas avanzadas son locales hasta un punto de enlace. Un punto de enlace es una combinación única de protocolo, función, dirección y entidad (las entidades son servidores virtuales específicos, usuarios, grupos, servicios y anulación global o predeterminada global). Las prioridades directivas no se siguen a través de los puntos vinculantes.

Para un protocolo, función y dirección determinados, el orden de evaluación de las directivas avanzadas se indica a continuación:

  • Anulación global.
  • Usuario de autenticación, autorización y auditoría (actual).
  • Grupos de autenticación, autorización y auditoría (de los que el usuario es miembro) por orden de peso: el orden no está definido si dos o más grupos tienen el mismo peso.
  • Servidor virtual LB en el que se recibió la solicitud o que ha seleccionado Content Switching.
  • Servidor virtual de conmutación de contenido, servidor virtual de redirección de caché en el que se recibió la solicitud.
  • Servicio seleccionado por equilibrio de carga.
  • Valor predeterminado global.

Para la evaluación de la directiva de autorización, el pedido es:

  • Anulación de sistemas.
  • Servidor virtual de equilibrio de carga en el que se recibió la solicitud o que CS seleccionó.
  • Servidor virtual de conmutación de contenido en el que se recibió la solicitud.
  • Valor predeterminado del sistema.

Dentro de cada punto de enlace, las directivas se evalúan en orden de prioridad, desde el número más bajo hasta el número más alto. Las directivas solo se evalúan para el protocolo utilizado y la dirección desde la que se recibió el mensaje.

Vinculación de directivas clásicas que requieren una nueva priorización manual

Estos son algunos tipos de vinculaciones de directivas clásicas que requieren una nueva priorización manual para satisfacer sus necesidades. Todo esto es para una función determinada y la dirección.

  • Prioridades clásicas que aumentan en número de prioridad opuesto a la dirección de las listas de tipos de entidad anteriores. Por ejemplo, un enlace de servidor virtual de conmutación de contenido inferior a un enlace de servidor virtual de equilibrio de carga.
  • Prioridades clásicas que intercalan grupos de autenticación, autorización y auditoría. Una parte de un grupo está antes que otro grupo y otra parte va detrás de ese otro grupo.
  • Prioridades clásicas que aumentan en número distinto del orden de ponderación de los grupos de autenticación, autorización y auditoría.
  • Las prioridades mundiales clásicas que son menos que algunas prioridades no mundiales y las mismas prioridades mundiales son mayores que otras prioridades no mundiales (en otras palabras, cualquier segmento de prioridades que sean no globales, seguido de uno o más globales, seguido de uno o más globales, seguido de uno no global).