Konvertieren von Richtlinienausdrücken mit dem NSPEPI-Tool

Klassische richtlinienbasierte Funktionen und Funktionalitäten sind ab NetScaler 12.0 Build 56.20 veraltet. Alternativ empfiehlt Citrix die Verwendung der erweiterten Richtlinieninfrastruktur. Im Rahmen dieser Bemühungen müssen Sie beim Upgrade auf Citrix ADC 12.1 Build 56.20 oder höher die klassischen richtlinienbasierten Features und Funktionalitäten durch die entsprechenden nicht veralteten Features und Funktionalitäten ersetzen. Außerdem müssen Sie klassische Richtlinien und Ausdrücke in erweiterte Richtlinien und Ausdrücke konvertieren. Außerdem unterstützen alle neuen Citrix ADC Funktionen nur die erweiterte Richtlinieninfrastruktur.

Das nspepi Tool kann Folgendes ausführen:

  1. Konvertieren Sie klassische Richtlinienausdrücke in erweiterte Richtlinienausdrücke.
  2. Konvertieren Sie bestimmte klassische Richtlinien und deren Entitätsbindungen in erweiterte Richtlinien und Bindungen.
  3. Konvertieren Sie einige zusätzliche veraltete Features in die entsprechenden nicht veralteten Features.
  4. Konvertieren Sie klassische Filterbefehle in erweiterte Filterbefehle.
  5. Konvertieren Sie klassische Filterfunktionen in erweiterte Funktionen für goto Ausdruck als END oder use_innocation

Hinweis:

Nachdem das nspepi Tool die Konfigurationsdatei ns.conf erfolgreich konvertiert hat, diplays die konvertierte Datei als neue Datei mit dem Präfix “new_”. Wenn die konvertierte Konfigurationsdatei Fehler oder Warnungen aufweist, müssen Sie sie im Rahmen des Konvertierungsprozesses manuell beheben. Nach der Konvertierung müssen Sie die Datei in der Testumgebung testen und dann verwenden, um die eigentliche ns.conf-Konfigurationsdatei zu ersetzen. Nach dem Testen müssen Sie die Appliance für die neu konvertierte oder feste Konfigurationsdatei ns.conf neu starten.

Features, die nur klassische Richtlinien oder Ausdrücke unterstützen, sind veraltet und müssen durch die entsprechenden nicht veralteten Features ersetzt werden.

Hinweis:

Informationen zur älteren Version des nspepi Tools sind im PDF-Format verfügbar. Weitere Informationen finden Sie unter Klassische Richtlinienkonvertierung mit dem nspepi Tool vor 12.1-51.16 (PDF).

Konvertierungswarnungen und Fehlerdateien

Bevor Sie das Tool für Ihre Konvertierung verwenden, müssen Sie nur wenige Warnungen beachten:

  1. Alle Warnungen und Fehler werden in die Konsole ausgegeben. Es wird eine Warndatei erstellt, in der die Konfigurationsdateien gespeichert werden.
  2. Die Warnungen und Fehlerdatei haben den gleichen Namen wie die Eingabedatei, aber mit dem Präfix warn_ zum Dateinamen hinzugefügt. Während der Ausdruckskonvertierung (bei Verwendung von -e) werden die Warnungen im aktuellen Verzeichnis mit dem Namen warn_expr angezeigt.

Hinweis:

Diese Datei hat ein Standard-Protokolldateiformat mit Datums-/Zeitstempel und Log-Level. Frühere Instanzen der Datei werden mit Suffixe wie “.1”, “.2” usw. beibehalten, da das Werkzeug mehrfach ausgeführt wird. Es werden maximal 10 Instanzen beibehalten.

Konvertiertes Dateiformat

Beim Konvertieren einer Konfigurationsdatei (mit -f) wird die konvertierte Datei in dasselbe Verzeichnis abgelegt, in dem die Eingabekonfigurationsdatei mit dem gleichen Namen, aber mit dem Präfix new_ existiert.

Befehle, die vom nspepi Konvertierungswerkzeug verarbeitet werden

Im Folgenden sind die Befehle während der automatischen Konvertierung behandelt.

  • Die folgenden klassischen Richtlinien und ihre Ausdrücke werden in erweiterte Richtlinien und Ausdrücke konvertiert. Dies schließt die Konvertierung von Entitätsbindungen einschließlich globaler Bindungen ein.
  1. add appfw policy
  2. add authorization policy
  3. add cmp policy
  4. add cr policy
  5. add cs policy
  6. add tm sessionPolicy
  7. add vpn trafficPolicy
  8. add filter action
  9. add filter policy
  10. filter policy binding to load balancing, content switching, cache redirection, and global.

Hinweis:

Für add tm sessionPolicy und add vpn trafficPolicy können Sie jedoch nicht an globale Überschreibung in erweiterten Richtlinien binden.

  • Der in add lb vserver konfigurierte Regelparameter wird vom klassischen Ausdruck in erweiterte Ausdruck konvertiert.
  • Der SPDY-Parameter, der im Befehl add ns httpProfile oder set ns httpProfile konfiguriert ist, wird in -http2 ENABLED geändert.
  • Benannte Ausdrücke (Befehle Richtlinienausdruck hinzufügen). Jeder klassische benannte Richtlinienausdruck wird in den entsprechenden benannten erweiterten Ausdruck konvertiert, wobei nspepi_adv_ als Präfix festgelegt ist. Darüber hinaus wird die Verwendung benannter Ausdrücke für die konvertierten Classic-Ausdrücke in die entsprechenden benannten erweiterten Ausdrücke geändert. Darüber hinaus hat jeder benannte Ausdruck zwei benannte Ausdrücke, wobei einer Classic und der andere Advanced ist (wie unten gezeigt).

Zum Beispiel:

add policy expression classic_expr ns_true
Converts to:
add policy expression classic_expr ns_true
add policy expression nspepi_adv_classic_expr TRUE
  • Der im Befehl set cmp parameter konfigurierte PolicyType-Parameter wird in Advanced PolicyType geändert.

Konvertieren klassischer Filterbefehle in erweiterte Filterbefehle

Das nspepi Tool kann Befehle basierend auf klassischen Filteraktionen wie add, bind usw. in erweiterte Filterbefehle konvertieren.

Das nepepi-Tool unterstützt jedoch die folgenden Filterbefehle nicht.

  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

Hinweis:

  1. Wenn es in ns.conf vorhandene Rewrite- oder Responder-Features gibt und deren Richtlinien global an GOTO-Ausdruck als END oder USER_INVOCATION_RESULT gebunden sind und der Bind-Typ REQ_X oder RES_X ist, konvertiert das Werkzeug die Bindungsfilterbefehle teilweise und kommentiert. Warnung wird angezeigt, um manuelle Anstrengung zu setzen.
  2. Wenn Rewrite- oder Responder-Features vorhanden sind und deren Richtlinien an virtuelle Server (z. B. Lastausgleich, Content-Umschaltung oder Cache-Umleitung) vom Typ HTTPS mit GOTO - END oder USER_INVOCATION_RESULT gebunden sind, konvertiert das Tool die Bindungsfilterbefehle teilweise und kommentiert dann. Warnung wird angezeigt, um manuelle Anstrengung zu setzen.

Beispiel

Es folgt eine Beispieleingabe:

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


Es folgt eine Beispielausgabe. Alle konvertierten Befehle werden kommentiert.

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

Konvertieren Sie klassische Filterbefehle in erweiterte Feature-Befehle, wenn vorhandene Umschreib- oder Responder-Richtlinienbindungen goto expression END oder USE_INNVOCATION haben

Wenn bei dieser Konvertierung eine an einen oder mehrere virtuelle Server gebundene Rewrite-Richtlinie und der Server über END oder USE_INVOCATION_RESULT verfügt, kommentiert das Tool die Befehle.

Beispiel

Es folgt ein Beispieleingabebefehl:

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


Es folgt ein Beispielausgabebefehl:

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-

Befehle, die nicht vom nspepi Konvertierungstool verarbeitet werden

Im Folgenden sind einige Befehle, die nicht als Teil der automatischen Konvertierung behandelt werden.

  • Einige Bindungen können nicht konvertiert werden, wenn bestimmte Interleaving von Prioritäten zwischen globalen und nicht-globalen Bindungspunkten, zwischen Benutzern und Gruppen sowie zwischen Bindungen an verschiedene Entitäten vorhanden sind. Diese wird die betroffene Konfiguration auskommentiert und ein Fehler verursacht. Solche Konfigurationen müssen manuell konvertiert werden.
  • Sowohl klassische als auch erweiterte Richtlinien können an cmp global gebunden werden. Es gibt viele Fälle, in denen sich die Funktionalität ändert, sobald klassische Richtlinien in erweiterte Richtlinien konvertiert wurden. Wir haben Befehle konvertiert, die durch Kommentieren einiger Richtlinien gelöst werden können. Dennoch gibt es einige Befehle, die nicht konvertiert werden können; in solchen Fällen wird ein Fehler erzeugt und die Konvertierung muss manuell erfolgen.
  • Klassische Inhaltswechselrichtlinien, die an mehrere Bindungspunkte gebunden sind, werden nicht behandelt.
  • Integrierte klassische Richtlinienbindungen in allen Features werden nicht behandelt.
  • Nicht alle Verwendungszwecke von Classic integrierten benannten Ausdrücken werden in äquivalente benannte erweiterte Ausdrücke konvertiert.
  • Benannte Ausdrücke in einer Lastausgleichsregel werden nicht behandelt.
  • Client-Sicherheitsausdrücke werden nicht verarbeitet.
  • Bindungen an virtuelle GSLB-Server werden nicht behandelt.
  • Die Option -precedence für virtuelle Server mit Content-Umleitung und Cache-Umleitung wird nicht behandelt.

Bekannte Probleme

Die folgenden Fehler können vom nspepi Tool erzeugt werden:

  • Wenn beim Konvertieren eines Ausdrucks ein Problem auftritt.
  • Wenn ein benannter Richtlinienausdruck den Parameter -ClientSecurityMessage verwendet, da dieser Parameter im erweiterten Richtlinienausdruck nicht unterstützt wird.

Hinweis:

Alle klassischen Richtlinienbindungen mit deaktivierter Option -state werden auskommentiert. Die Option -state ist für erweiterte Richtlinienbindungen nicht verfügbar.

Ausführen des nspepi Tools

Im Folgenden finden Sie ein Befehlszeilenbeispiel zum Ausführen des nspepi Tools. Dieses Tool wird von der Befehlszeile der Shell ausgeführt (Sie müssen den Befehl shell an die NetScaler CLI eingeben, um dazu zu gelangen). Um eine Konvertierung durchzuführen, müssen entweder -f oder -e angegeben werden. Die Verwendung von -d ist hauptsächlich für Citrix Mitarbeiter gedacht, um zu Supportzwecken zu analysieren.

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           show debug output
  -v, --verbose         show verbose output
  -V, --version         show program's version number and exit

Im Folgenden sind einige Beispiele für das Ausführen von nspepi Tool über die Befehlszeilenschnittstelle:

Beispielausgabe für den Parameter —e:

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

Beispielausgabe für Parameter -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

Ausführen von nspepi mit -f Parameter:

root@ns# nspepi -f sample.conf  
root@ns#

Beispielausgabe des Parameters -f zusammen mit dem Parameter -v

root@ns# 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 - set cmp parameter -policyType ADVANCED
INFO - bind cr vserver cr_vs -policyName cr_pol1 -priority 100 -gotoPriorityExpression END -type REQUEST
root@ns#

Beispielausgabe mit generierten Dateien und Warnungsdateien

Konvertierte Konfigurationsdatei:

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

Beispielausgabe einer Beispielkonfiguration ohne Fehler oder Warnungen:

root@ns# cat warn_sample.conf
root@ns#

Beispielausgabe einer Beispielkonfiguration mit Warnungen:

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#

Beispiel für das Ausführen von nspepi mit -f Parameter:

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#

Konvertierte Datei:

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#

Warndatei:

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#

Bindungsprioritäten

Erweiterte Richtlinien erlauben keine willkürliche Interleaving nach Priorität zwischen globalen und nicht-globalen und zwischen verschiedenen Bindungstypen. Wenn Sie sich auf eine solche Verflechtung klassischer Richtlinienprioritäten verlassen, müssen Sie die Prioritäten so anpassen, dass sie den erweiterten Richtlinienregeln entsprechen und das gewünschte Verhalten erhalten. Prioritäten in erweiterten Richtlinien sind lokal für einen Bindepunkt. Ein Bindepunkt ist eine eindeutige Kombination aus Protokoll, Feature, Richtung und Entität (Entitäten sind bestimmte virtuelle Server, Benutzer, Gruppen, Dienste und entweder globale Überschreibung oder globale Standardwerte). Die politischen Prioritäten werden nicht über Bindepunkte hinweg eingehalten.

Für ein bestimmtes Protokoll, Feature und Richtung ist die Reihenfolge der Auswertung der erweiterten Richtlinien unten angegeben:

  • Globale Überschreibung.
  • (Aktueller) AAA-Benutzer.
  • AAA-Gruppen (bei denen der Benutzer Mitglied ist) in der Reihenfolge des Gewichts - die Reihenfolge ist nicht definiert, wenn zwei oder mehr Gruppen das gleiche Gewicht haben.
  • Virtueller LB-Server, auf dem entweder die Anforderung empfangen wurde oder der Content Switching ausgewählt wurde.
  • Content Switching virtueller Server, Cache-Umleitung virtueller Server, auf dem die Anforderung empfangen wurde.
  • Dienst ausgewählt durch Lastenausgleich.
  • Globale Standardeinstellung.

Für die Auswertung der Autorisierungsrichtlinien lautet die Reihenfolge:

  • Systemüberschreibung.
  • Lastenausgleichsserver, auf dem die Anforderung empfangen wurde oder der CS ausgewählt wurde.
  • Content Switching virtueller Server, auf dem die Anforderung empfangen wurde.
  • Systemstandard.

Innerhalb jedes Bindepunkts werden die Polices in der Reihenfolge der Priorität von der niedrigsten Nummerierung bis zur höchsten Nummerierung ausgewertet. Natürlich werden Richtlinien nur für das verwendete Protokoll und die Richtung ausgewertet, von der die Nachricht empfangen wurde.

Klassische Richtlinienbindungen, die eine manuelle Neupriorisierung erfordern

Im Folgenden finden Sie einige Arten von klassischen Richtlinienbindungen, die manuelle Neupriorisierung erfordern, um Ihre Anforderungen zu erfüllen. All diese sind für ein bestimmtes Feature und eine bestimmte Richtung.

  • Klassische Prioritäten, die die Prioritätsnummer gegenüber der Richtung der oben genannten Entitätstypenlisten erhöhen. Zum Beispiel eine Content Switching Virtual Server Bindung niedriger als eine Last Balancing Virtual Server Bindung.
  • Klassische Prioritäten, die AAA-Gruppen interleave. Ein Teil einer Gruppe ist vor einer anderen Gruppe und ein weiterer Teil ist hinter einem Teil dieser anderen Gruppe.
  • Klassische Prioritäten, die in der Anzahl andere als die Reihenfolge der Gewichte von AAA-Gruppen erhöhen.
  • Klassische globale Prioritäten, die weniger als einige nicht-globale Priorität und dieselben globalen Prioritäten sind größer als einige andere nicht-globale Priorität (d. h. jedes Segment von Prioritäten, das eine nicht-globale Priorität ist, gefolgt von einem oder mehreren Globals, gefolgt von einem nicht-globalen).