Rewrite
Warnung:
Filterfunktionen, die klassische Richtlinien verwenden, sind veraltet und als Alternative empfiehlt Citrix Ihnen, die Rewrite- und Responder-Funktionen mit erweiterter Richtlinieninfrastruktur zu verwenden.
Rewrite bezieht sich auf das Neuschreiben einiger Informationen in den Anforderungen oder Antworten, die von der NetScaler-Appliance verarbeitet werden. Das Umschreiben kann dabei helfen, Zugriff auf den angeforderten Inhalt zu gewähren, ohne unnötige Details über die tatsächliche Konfiguration der Website preiszugeben. Einige Situationen, in denen die Rewritefunktion nützlich ist, sind folgende:
-
Um die Sicherheit zu verbessern, kann der NetScaler alle
https://
den Antworttext inhttp://links
neu schreiben. -
Bei der SSL-Offload-Bereitstellung müssen die unsicheren Links in der Antwort in sichere Verbindungen umgewandelt werden. Mit der Rewrite-Option können Sie alle
http://links
inhttps://
neu schreiben, um sicherzustellen, dass die ausgehenden Antworten von NetScaler an den Client über die gesicherten Links verfügen. -
Wenn eine Website eine Fehlerseite anzeigen muss, können Sie anstelle der standardmäßigen 404-Fehlerseite eine benutzerdefinierte Fehlerseite anzeigen. Wenn Sie beispielsweise anstelle einer Fehlerseite die Homepage oder Sitemap der Website anzeigen, bleibt der Besucher auf der Website, anstatt sich von der Website zu entfernen.
-
Wenn Sie eine neue Website starten möchten, aber die alte URL verwenden möchten, können Sie die Option Rewrite verwenden.
-
Wenn ein Thema auf einer Website eine komplizierte URL hat, können Sie es mit einer einfachen, leicht zu merkenden URL (auch als “coole URL” bezeichnet) neu schreiben.
-
Sie können den Standardseitennamen an die URL einer Website anhängen. Wenn die Standardseite der Website eines Unternehmens beispielsweise lautet
http://www.abc.com/index.php
, wenn der Benutzer “abc.com” in die Adressleiste des Browsers eingibt, können Sie die URL auf “abc.com/index.php” neu schreiben.
Wenn Sie die Rewritefunktion aktivieren, kann NetScaler die Header und den Hauptteil von HTTP-Anfragen und -Antworten ändern.
Um HTTP-Anfragen und -Antworten neu zu schreiben, können Sie protokollbewusste NetScaler-Richtlinienausdrücke in den von Ihnen konfigurierten Rewriterichtlinien verwenden. Die virtuellen Server, die die HTTP-Anfragen und -Antworten verwalten, müssen vom Typ HTTP oder SSL sein. Im HTTP-Verkehr können Sie die folgenden Aktionen ausführen:
- Ändern Sie die URL einer Anfrage
- Header hinzufügen, ändern oder löschen
- Fügen Sie eine bestimmte Zeichenfolge innerhalb des Textkörpers oder der Kopfzeilen hinzu, ersetzen oder löschen Sie sie.
Für ein Rewrite von TCP-Nutzdaten betrachten Sie die Nutzlast als einen rohen Byte-Stream. Jeder der virtuellen Server, die die TCP-Verbindungen verwalten, muss vom Typ TCP oder SSL_TCP sein. Der Begriff TCP-Rewrite bezieht sich auf das Rewrite von TCP-Nutzdaten, bei denen es sich nicht um HTTP-Daten handelt. Im TCP-Datenverkehr können Sie einen beliebigen Teil der TCP-Nutzlast hinzufügen, ändern oder löschen.
Beispiele zur Verwendung der Rewrite-Funktion finden Sie unter Beispiele für Rewrite-Aktionen und -richtlinien.
Vergleich zwischen Rewrite und Responder Optionen
Der Hauptunterschied zwischen der Rewrite-Funktion und der Responder-Funktion ist wie folgt:
Responder kann nicht für Antwort- oder serverbasierte Ausdrücke verwendet werden. Der Responder kann je nach Clientparametern nur für die folgenden Szenarien verwendet werden:
- Umleiten einer HTTP-Anfrage auf neue Websites oder Webseiten
- Reagieren mit einer benutzerdefinierten Antwort
- Löschen oder Zurücksetzen einer Verbindung auf Anforderungsebene
Wenn es eine Responder Policy gibt, prüft NetScaler die Anfrage des Clients, ergreift Maßnahmen gemäß den geltenden Richtlinien, sendet die Antwort an den Client und schließt die Verbindung mit dem Client.
Wenn es eine Rewriterichtlinie gibt, prüft NetScaler die Anforderung des Clients oder die Antwort vom Server, ergreift Maßnahmen gemäß den geltenden Richtlinien und leitet den Datenverkehr an den Client oder den Server weiter.
Im Allgemeinen wird empfohlen, einen Responder zu verwenden, wenn NetScaler eine Verbindung basierend auf einem Client oder einem anforderungsbasierten Parameter zurücksetzen oder löschen soll. Verwenden Sie den Responder, um den Datenverkehr umzuleiten oder mit benutzerdefinierten Nachrichten zu antworten. Verwenden Sie Rewrite zum Bearbeiten von Daten auf HTTP-Anforderungen und -Antworten.
Wie das Rewrite funktioniert
Eine Rewriterichtlinie besteht aus einer Regel und einer Aktion. Die Regel bestimmt den Datenverkehr, auf den das Rewrite angewendet wird, und die Aktion bestimmt die vom NetScaler zu ergreifende Aktion. Sie können mehrere Rewriterichtlinien definieren. Geben Sie für jede Richtlinie den Bindepunkt und die Priorität an.
Ein Bindepunkt bezieht sich auf einen Punkt im Verkehrsfluss, an dem der NetScaler den Datenverkehr untersucht, um zu überprüfen, ob eine Rewriterichtlinie darauf angewendet werden kann. Sie können eine Richtlinie an einen bestimmten virtuellen Lastausgleich- oder Content Switching-Server binden oder die Richtlinie global machen, wenn Sie möchten, dass die Richtlinie auf den gesamten Datenverkehr angewendet wird, der vom NetScaler verarbeitet wird. Diese Richtlinien werden als globale Richtlinien bezeichnet.
Zusätzlich zu den benutzerdefinierten Richtlinien verfügt der NetScaler über einige Standardrichtlinien. Sie können eine Standardrichtlinie nicht ändern oder löschen.
Um die Richtlinien auszuwerten, befolgt NetScaler diese Reihenfolge:
- Globale Richtlinien
- An bestimmte virtuelle Server gebundene Richtlinien
- Standardrichtlinien
Hinweis:
NetScaler kann eine Rewriterichtlinie nur anwenden, wenn sie an einen Punkt gebunden ist.
NetScaler implementiert die Funktion zum Rewrite in den folgenden Schritten:
-
Die NetScaler-Appliance sucht nach globalen Richtlinien und sucht dann an einzelnen Bindepunkten nach Richtlinien.
-
Wenn mehrere Richtlinien an einen Bindepunkt gebunden sind, wertet NetScaler die Richtlinien in der Reihenfolge ihrer Priorität aus. Die Richtlinie mit der höchsten Priorität wird zuerst bewertet. Wenn die Richtlinie nach der Bewertung jeder Richtlinie auf TRUE ausgewertet wird, wird die Aktion hinzugefügt, die mit der Richtlinie verknüpft ist, die die zugehörige Aktion ausgeführt wird. Eine Übereinstimmung tritt auf, wenn die in der Richtlinienregel angegebenen Merkmale den Merkmalen der zu bewertenden Anforderung oder Antwort entsprechen.
-
Für jede Richtlinie können Sie zusätzlich zu der Aktion die Richtlinie angeben, die ausgewertet werden muss, nachdem die aktuelle Richtlinie ausgewertet wurde. Diese Richtlinie wird als “Gehe zum Ausdruck” bezeichnet. Wenn für jede Richtlinie ein Gehe zu Ausdruck (gotoPriorityExpr) angegeben ist, wertet NetScaler die Richtlinie “Gehe zu Ausdruck” aus. Es ignoriert die Richtlinie mit der nächsthöchsten Priorität.
Sie können die Priorität der Richtlinie angeben, um die Richtlinie “Gehe zu Ausdruck” anzugeben. Sie können den Namen der Richtlinie nicht verwenden. Wenn Sie möchten, dass NetScaler nach der Auswertung einer bestimmten Richtlinie keine anderen Richtlinien mehr auswertet, können Sie den Gehe zu Ausdruck auf “ENDE” setzen.
-
Nachdem alle Richtlinien ausgewertet wurden oder wenn eine Richtlinie den Gehe zu Ausdruck als END festgelegt hat, beginnt NetScaler die Aktionen entsprechend der Liste der Aktionen auszuführen.
Weitere Informationen zum Konfigurieren von Rewriterichtlinien finden Sie unter Konfigurieren einer Rewriterichtlinie und zum Binden von Rewriterichtlinien finden Sie unter Binden einer Rewriterichtlinie.
Die folgende Abbildung zeigt, wie NetScaler eine Anforderung oder Antwort verarbeitet, wenn das Rewrite-Feature verwendet wird.
Abbildung 1. Der Rewrite-Prozess
Politische Bewertung
Die Richtlinie mit der höchsten Priorität wird zuerst bewertet. NetScaler stoppt die Auswertung von Rewriterichtlinien nicht, wenn eine Übereinstimmung gefunden wird. Es wertet alle auf dem NetScaler konfigurierten Rewriterichtlinien aus.
- Wenn eine Richtlinie auf TRUE ausgewertet wird, folgt der NetScaler dem folgenden Verfahren:
- Wenn für die Richtlinie Gehe zu Ausdruck auf END festgelegt ist, stoppt NetScaler die Auswertung aller anderen Richtlinien und beginnt mit dem Rewrite.
-
Der gotoPriorityExpression kann auf “NEXT”, “END”, eine ganze Zahl oder “INVOCATION_LIST” gesetzt werden. Der Wert bestimmt die Richtlinie mit der nächsten Priorität. Die folgende Tabelle zeigt die von NetScaler für jeden Wert des Ausdrucks ergriffene Aktion.
Wert des Ausdrucks Aktion NEXT Die Richtlinie mit der nächsten Priorität wird ausgewertet. END Die Bewertung der Richtlinien stoppt. <an integer>
Die Richtlinie mit der angegebenen Priorität wird ausgewertet. INVOCATION_LIST Gehe zu NEXT oder END wird basierend auf dem Ergebnis der Aufrufliste angewendet.
- Wenn eine Richtlinie als FALSE ausgewertet wird, setzt der NetScaler die Auswertung in der Reihenfolge ihrer Priorität fort.
- Wenn eine Richtlinie zu UNDEFINED ausgewertet wird (aufgrund eines Fehlers nicht für den empfangenen Datenverkehr ausgewertet werden kann), führt der NetScaler die Aktion aus, die der UNDEFINIERTEN Bedingung zugewiesen ist (als UnDEFaction bezeichnet), und stoppt die weitere Auswertung von Richtlinien.
Der NetScaler beginnt mit dem eigentlichen Umschreiben erst, nachdem die Auswertung abgeschlossen ist. Es bezieht sich auf die Liste der Aktionen, die durch Richtlinien identifiziert wurden, die auf TRUE ausgewertet werden, und beginnt mit dem Umschreiben. Nachdem alle Aktionen in der Liste implementiert wurden, leitet der NetScaler den Datenverkehr nach Bedarf weiter.
Hinweis:
Stellen Sie sicher, dass die Richtlinien keine widersprüchlichen oder überlappenden Aktionen für denselben Teil des HTTP-Headers oder Textkörpers oder der TCP-Nutzlast angeben. Wenn ein solcher Konflikt auftritt, stößt der NetScaler auf eine undefinierte Situation und bricht das Rewrite ab.
Rewrite-Aktionen
Geben Sie auf der NetScaler-Appliance die auszuführenden Aktionen an, z. B. das Hinzufügen, Ersetzen oder Löschen von Text im Hauptteil oder das Hinzufügen, Ändern oder Löschen von Headern oder Änderungen an der TCP-Nutzlast als Rewriteaktionen. Weitere Informationen zu Rewrite-Aktionen finden Sie unter Konfigurieren einer Rewrite-Aktion.
In der folgenden Tabelle werden die Schritte beschrieben, die NetScaler ausführen kann, wenn eine Richtlinie TRUE bewertet.
Aktion | Ergebnis |
---|---|
Einfügen | Die für die Richtlinie angegebene Rewriteaktion wird ausgeführt. |
NOREWRITE | Die Anfrage oder Antwort wird nicht umgeschrieben. NetScaler leitet den Datenverkehr weiter, ohne einen Teil der Nachricht neu zu schreiben. |
RESET | Die Verbindung wird auf TCP-Ebene abgebrochen. |
DROP | Die Nachricht wird verworfen. |
Hinweis:
Für jede Richtlinie können Sie die Unteraktion (Aktion, die ergriffen werden muss, wenn die Richtlinie zu UNDEFINED ausgewertet wird) als NOREWRITE, RESET oder DROP konfigurieren.
Führen Sie die folgenden Schritte aus, um die Funktion “ Rewrite” zu verwenden:
- Aktivieren Sie die Funktion auf dem NetScaler.
- Definieren Sie Rewrite-Aktionen.
- Definieren Sie Richtlinien für das Rewrite.
- Binden Sie die Richtlinien an einen Bindepunkt, um eine Richtlinie in Kraft zu setzen.
Rewrite aktivieren
Aktivieren Sie die Funktion zum Rewrite auf der NetScaler-Appliance, wenn Sie die HTTP- oder TCP-Anforderungen oder -Antworten neu schreiben möchten. Wenn das Feature aktiviert ist, führt NetScaler Rewrite-Aktionen gemäß den angegebenen Richtlinien durch. Weitere Informationen finden Sie unter Funktionsweise von Rewrite.
So aktivieren Sie das Rewrite-Feature mit der Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die Rewritefunktion zu aktivieren und die Konfiguration zu überprüfen:
- enable ns-Funktion REWRITE
- show ns feature
Beispiel:
> enable ns feature REWRITE
Done
> show ns feature
Feature Acronym Status
------- ------- ------
1) Web Logging WL OFF
2) Surge Protection SP ON
.
.
.
1) Rewrite REWRITE ON
.
.
1) NetScaler Push push OFF
Done
<!--NeedCopy-->
So aktivieren Sie die Rewrite-Funktion über die GUI
- Klicken Sie im Navigationsbereich auf Systemund dann auf Einstellungen.
- Klicken Sie im Detailbereich unter Modi und Funktionen auf Grundfunktionen konfigurieren.
- Aktivieren Sie im Dialogfeld Grundfunktionen konfigurieren das Kontrollkästchen Rewrite, und klicken Sie dann auf OK.
- Klicken Sie im Dialogfeld Feature(s) aktivieren/deaktivieren auf Ja. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass das ausgewählte Feature aktiviert wurde.
Konfigurieren einer Rewrite-Aktion
Warnung
Die Pattern-Funktion in einer Rewrite-Aktion ist ab NetScaler 12.0 Build 56.20 veraltet, und Citrix empfiehlt Ihnen alternativ, den Aktionsparameter Rewrite Search zu verwenden.
Eine Rewrite-Aktion zeigt Änderungen an, die an einer Anfrage oder Antwort vorgenommen wurden, bevor sie an einen Server oder Client gesendet wurden.
Ausdrücke definieren Folgendes:
-
Schreiben Sie den Aktionstyp neu.
-
Ort der Rewrite-Aktion.
-
Schreiben Sie den Aktionskonfiguration neu.
Beispielsweise verwendet eine DELETE-Aktion nur einen Zielausdruck. Eine REPLACE-Aktion verwendet einen Zielausdruck und einen Ausdruck, um den Ersetzungstext zu konfigurieren.
Nachdem Sie die Rewrite-Funktion aktiviert haben, müssen Sie eine oder mehrere Aktionen konfigurieren, es sei denn, eine integrierte Rewrite-Aktion reicht aus. Alle integrierten Aktionen haben Namen, die mit der Zeichenfolge ns_cvpn beginnen, gefolgt von einer Reihe von Buchstaben und Unterstrichen. Integrierte Aktionen führen nützliche und komplexe Aufgaben aus, z. B. das Dekodieren von Teilen einer clientlosen VPN-Anfrage oder Antwort oder das Ändern von JavaScript- oder XML-Daten. Die integrierten Aktionen können angezeigt, aktiviert und deaktiviert werden, können jedoch nicht geändert oder gelöscht werden.
Hinweis:
Aktionstypen, die nur für HTTP-Rewrite verwendet werden können, werden in der Spalte Rewrite-Aktionstyp identifiziert.
Weitere Informationen finden Sie unter Typenparameter.
Erstellen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Rewrite-Aktion zu erstellen und die Konfiguration zu überprüfen:
add rewrite action <name> <type> <target> [<stringBuilderExpr>] [-search <expression>] [refineSearch <expression>] [-comment<string>]
show rewrite action <name>
Weitere Informationen finden Sie in der Tabelle Rewrite-Aktionstypen und deren Argumente .
Die Rewrite-Funktion verfügt über die folgenden integrierten Aktionen:
-
NOREWRITE - Sendet die Anfrage oder Antwort an den Benutzer, ohne sie neu zu schreiben.
-
RESET - Setzt die Verbindung zurück und benachrichtigt den Browser des Benutzers, damit der Benutzer die Anfrage erneut senden kann.
-
DROP - Löscht die Verbindung, ohne eine Antwort an den Benutzer zu senden.
Einer der folgenden Flow-Typen ist implizit mit jeder Aktion verknüpft:
-
Request - Aktion gilt für die Anfrage.
-
Response - Aktion gilt für die Antwort.
-
Neutral - Aktion gilt sowohl für Anfragen als auch für Antworten.
Name
Name für die benutzerdefinierte Rewrite-Aktion. Muss mit einem Buchstaben, einer Zahl oder dem Unterstrich (_) beginnen und darf nur Buchstaben, Zahlen und den Bindestrich (-), Punkt (.) Hash (#), Leerzeichen (), Leerzeichen (), bei (@), gleich (=), Doppelpunkt (:) und Unterstriche enthalten. Kann geändert werden, nachdem die Rewriterichtlinie hinzugefügt wurde.
Typ-Parameter
Der Type-Parameter zeigt den Typ der benutzerdefinierten Rewrite-Aktion an.
Im Folgenden sind die Werte des Type-Parameters aufgeführt:
-
REPLACE <target> <string_builder_expr>
. Ersetzt die Zielzeichenfolge durch den String-Builder-Ausdruck.
Beispiel:
> add rewrite action replace_http_act replace http.res.body(100) '"new_replaced_data"'
Done
> sh rewrite action replace_http_act
Name: replace_http_act
Operation: replace
Target:http.res.body(100)
Value:"new_replaced_data"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_ALL <target> <string_builder_expr1> -(search) <s>
- Ersetzt in der von<target>
angegebenen Anfrage oder Antwort alle Vorkommen der durch<pattern_to_search>
definierten Zeichenfolge durch die durch<string_builder_expr>
definierte Zeichenfolge. Sie können die Suchoption verwenden, um die zu ersetzenden Zeichenketten zu finden.
Beispiel:
> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://""-search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_HTTP_RES <string_builder_expr>
. Ersetzt die vollständige HTTP-Antwort durch die durch den String-Builder-Ausdruck definierte Zeichenfolge.
Beispiel:
> add rewrite action replace_http_res_act replace_http_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_http_res_act
Name: replace_http_res_act
Operation: replace_http_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_SIP_RES <target>
. Ersetzt die vollständige SIP-Antwort durch die durch<target>
angegebene Zeichenfolge.
Beispiel:
> add rewrite action replace_sip_res_act replace_sip_res '"HTTP/1.1 200 OK\r\n\r\nSending from ADC"'
Done
> sh rewrite action replace_sip_res_act
Name: replace_sip_res_act
Operation: replace_sip_res
Target:"HTTP/1.1 200 OK
Sending from ADC"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_HTTP_HEADER <header_string> <contents_string_builder_expr>
. Fügt den von angegebenen HTTP-Headerheader_string
und den von angegebenen Header-Inhalt eincontents_string_builder_expr
.
Beispiel:
> add rewrite action ins_cip_header insert_http_header "CIP" "CLIENT.IP.SRC"
Done
> sh rewrite action ins_cip_header
Name: ins_cip_header
Operation: insert_http_header
Target:CIP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_HTTP_HEADER <target>
. Löscht den HTTP-Header, der mit<target>
angegeben wurde
Beispiel:
> add rewrite action del_true_client_ip_header delete_http_header "True-Client-IP"
Done
> sh rewrite action del_true_client_ip_header
Name: del_true_client_ip_header
Operation: delete_http_header
Target:True-Client-IP
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CORRUPT_HTTP_HEADER <target>
. Ersetzt den Header-Namen aller Vorkommen des durch<target>
angegebenen HTTP-Headers durch einen beschädigten Namen, so dass er vom Empfänger nicht erkannt wird Beispiel: MY_HEADER wird in MHEY_ADER geändert.
Beispiel:
> add rewrite action corrupt_content_length_hdr corrupt_http_header "Content-Length"
Done
> sh rewrite action corrupt_content_length_hdr
Name: corrupt_content_length_hdr
Operation: corrupt_http_header
Target:Content-Length
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_BEFORE <string_builder_expr1> <string_builder_expr1>
. Findet die in<string_builder_expr1>
angegebene Zeichenfolge und fügt die Zeichenfolge in<string_builder_expr2>
davor ein.
> add rewrite action insert_before_ex_act insert_before http.res.body(100) '"Add this string in the starting"'
Done
> sh rewrite action insert_before_ex_act
Name: insert_before_ex_act
Operation: insert_before
Target:http.res.body(100)
Value:"Add this string in the starting"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_BEFORE_ALL <target> <string_builder_expr1> -(search) <string_builder_expr2>
. Sucht in der von<target>
angegebenen Anfrage oder Antwort nach allen Vorkommen der angegeben Zeichenfolge inund fügt die angegebene Zeichenfolge in davor ein. Sie können die Suchoption verwenden, um die Zeichenketten zu finden.
Beispiel:
> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_AFTER <string_builder_expr1> <string_builder_expr2>
. Fügt die von angegebene Zeichenfolgestring_builder_expr2
nach der Zeichenfolge einstring_builder_expr1
.
Beispiel:
> add rewrite action insert_after_act insert_after http.req.body(100) '"add this string after 100 bytes"'
Done
> sh rewrite action insert_after_act
Name: insert_after_act
Operation: insert_after
Target:http.req.body(100)
Value:"add this string after 100 bytes"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_AFTER_ALL <target> <string_builder_expr1> -(search) <string_builder_expr2>
. Sucht in der von<target>
angegebenen Anforderung oder Antwort alle Vorkommen der durch<string_builder_expr2>
angegebenen Zeichenfolge und fügt die durch<string_builder_expr1>
angegebene Zeichenfolge ein. Sie können die Suchfunktion verwenden, um die Zeichenfolgen zu finden.
Beispiel:
> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE <target>
. Löscht die durch target angegebene Zeichenfolge.
Beispiel:
> add rewrite action delete_ex_act delete http.req.header("HDR")
Done
> sh rewrite action delete_ex_act
Name: delete_ex_act
Operation: delete
Target:http.req.header("HDR")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_ALL <target> -(search) <string_builder_expr>
. In der von<target>
angegebenen Anforderung oder Antwort sucht und löscht alle Vorkommen der durch angegebenen Zeichenfolge<string_builder_expr>
. Sie können die Suchfunktion verwenden, um die Zeichenfolgen zu finden.
Beispiel:
>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`<\\/AppData>#)"
Done
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s`\*`<AppData>.`\*`\s`\*`</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DIAMETER_HEADER_FIELD <target> <field value>
. Ändern Sie in der Anforderung oder den Antworten das durch<target>
angegebene Kopfzeilenfeld. Verwenden SieDiameter.req.flags.SET(<flag>)
oderDiameter.req.flags.UNSET<flag>
wiestringbuilderexpression
, um Flags zu setzen oder aufzuheben.
Beispiel:
> add rewrite action replace_diameter_field_ex_act replace_diameter_header_field diameter.req.flags diameter.req.flags.set(PROXIABLE)
Done
> sh rewrite action replace_diameter_field_ex_act
Name: replace_diameter_field_ex_act
Operation: replace_diameter_header_field
Target:diameter.req.flags
Value:diameter.req.flags.set(PROXIABLE)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DNS_HEADER_FIELD <target>
. In der Anforderung oder Antwort ändert das durch<target>
angegebene Header-Feld.
Beispiel:
> add rewrite action replace_dns_hdr_act replace_dns_header_field dns.req.header.flags.set(AA)
Done
> sh rewrite action replace_dns_hdr_act
Name: replace_dns_hdr_act
Operation: replace_dns_header_field
Target:dns.req.header.flags.set(AA)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
REPLACE_DNS_ANSWER_SECTION <target>
. Ersetzen Sie den DNS-Antwortabschnitt in der Antwort. Dies gilt nur für A- und AAAA-Datensätze. Verwenden Sie die AusdrückeDNS.NEW_RRSET_A
undNS.NEW_RRSET_AAAA
, um den neuen Antwortabschnitt zu konfigurieren.
Beispiel:
> add rewrite action replace_dns_ans_act replace_dns_answer_section DNS.NEW_RRSET_A("1.1.1.1", 10)
Done
> sh rewrite action replace_dns_ans_act
Name: replace_dns_ans_act
Operation: replace_dns_answer_section
Target:DNS.NEW_RRSET_A("1.1.1.1", 10)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_DECODE<target>
. Dekodiert das vom Ziel angegebene Muster im clientlosen VPN-Format.
Beispiel:
> add rewrite action cvpn_decode_act_1 clientless_vpn_decode http.req.body(100)
Done
> sh rewrite action cvpn_decode_act_1
Name: cvpn_decode_act_1
Operation: clientless_vpn_decode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_DECODE_ALL<target>-search<expression>
. Dekodiert ALLE durch den Suchparameter angegebenen Muster im clientlosen VPN-Format.
Beispiel:
> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_ENCODE<target>
. Codiert das von target angegebene Muster im clientlosen VPN-Format.
Beispiel:
> add rewrite action cvpn_encode_act_1 clientless_vpn_encode http.req.body(100)
Done
> sh rewrite action cvpn_encode_act_1
Name: cvpn_encode_act_1
Operation: clientless_vpn_encode
Target:http.req.body(100)
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CLIENTLESS_VPN_ENCODE_ALL<target>-search<expression>
. Kodiert ALLE Muster angegebenen Suchparameter im clientlosen VPN-Format.
Beispiel:
> add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act2
Name: act1
Operation: clientless_vpn_encode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
CORRUPT_SIP_HEADER<target>
. Ersetzt den Header-Namen aller Vorkommen des durch<target>
angegebenen SIP-Headers durch einen beschädigten Namen, damit der Empfänger ihn nicht erkennt.
Beispiel:
> add rewrite action corrupt_sip_hdr_act corrupt_sip_header SIP_HDR
Done
> sh rewrite action corrupt_sip_hdr_act
Name: corrupt_sip_hdr_act
Operation: corrupt_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
INSERT_SIP_HEADER <header_string_builder_expr> <contents_string_builder_expr>
. Fügt den durch<header_string_builder_expr>
angegebenen SIP-Header und Header-Inhalt ein, der durch<contents_string_builder_expr>
angegeben ist.
Beispiel:
> add rewrite action insert_sip_hdr_act insert_sip_header SIP_HDR '"inserting_sip_header"'
Done
>sh rewrite action insert_sip_hdr_act
Name: insert_sip_hdr_act
Operation: insert_sip_header
Target:SIP_HDR
Value:"inserting_sip_header"
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
-
DELETE_SIP_HEADER<target>
. Löscht den SIP-Header, der von<target>
angegeben wurde
Beispiel:
> add rewrite action delete_sip_hdr delete_sip_header SIP_HDR
Done
> sh rewrite action delete_sip_hdr
Name: delete_sip_hdr
Operation: delete_sip_header
Target:SIP_HDR
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Target-Parameter
Der Target-Parameter Ist ein Ausdruck, der angibt, welcher Teil der Anforderung oder Antwort neu geschrieben werden soll.
StringBuilderExpr
Der StringBuilderExpr Ist ein Ausdruck, der den Inhalt angibt, der an der angegebenen Stelle in die Anforderung oder Antwort eingefügt werden soll. Dieser Ausdruck ersetzt eine angegebene Zeichenfolge.
Beispiel 1. Einfügen eines HTTP-Headers mit der Client-IP:
> add rewrite action insertact INSERT_HTTP_HEADER "client-IP" CLIENT.IP.SRC
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header
Target:Client-IP
Value:CLIENT.IP.SRC
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Beispiel 2. Strings in einer TCP-Nutzlast ersetzen (TCP Rewrite):
> add rewrite action client_tcp_payload_replace_all REPLACE_ALL
'client.tcp.payload(1000)' '"new-string"' -search text("old-string")
Done
> show rewrite action client_tcp_payload_replace_all
Name: client_tcp_payload_replace_all
Operation: replace_all
Target:client.tcp.payload(1000)
Value:"new-string"
Search: text("old-string")
BypassSafetyCheck : NO
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Suchen Sie einen Teil der Anfrage oder Antwort zum Neuschreiben
Die Suchfunktion hilft dabei, alle Instanzen des erforderlichen Musters in der Anfrage oder Antwort zu finden.
Die Suchfunktion muss in den folgenden Aktionstypen verwendet werden:
- INSERT_BEFORE_ALL
- INSERT_AFTER_ALL
- REPLACE_ALL
- DELETE_ALL
- CLIENTLESS_VPN_ENCODE_ALL
- CLIENTLESS_VPN_DECODE_ALL
Die Suchfunktion kann nicht mit den folgenden Aktionstypen verwendet werden:
- INSERT_HTTP_HEADER
- INSERT_BEFORE
- INSERT_AFTER
- REPLACE
- Löschen
- DELETE_HTTP_HEADER
- CORRUPT_HTTP_HEADER
- REPLACE_HTTP_RES
- CLIENTLESS_VPN_ENCODE
- CLIENTLESS_VPN_DECODE
- INSERT_SIP_HEADER
- DELETE_SIP_HEADER
- CORRUPT_SIP_HEADER
- REPLACE_DIAMETER_HEADER_FIELD
- REPLACE_DNS_ANSWER_SECTION
- REPLACE_DNS_HEADER_FIELD
- REPLACE_SIP_RES
Die folgenden Suchtypen werden unterstützt:
- Text - eine literale Zeichenfolge Beispiel: -search text (“hello”)
- Regulärer Ausdruck - Muster, das verwendet wird, um mehrere Strings in der Anfrage oder Antwort abzugleichen Beispiel: -search regex(re~^hello*~)
- XPATH - Ein XPATH-Ausdruck zur Suche nach XML. Beispiel: -search xpath(xp%/a/b%)
- JSON - Ein XPATH-Ausdruck zur Suche nach JSON. Beispiel: -search xpath_json(xp%/a/b%) HTML - Ein XPATH-Ausdruck zur Suche nach HTML Beispiel: -search xpath_html(xp%/html/body%) Patset - Dies durchsucht alle Muster, die an die Patset-Entität gebunden sind. Beispiel: -search patset(“patset1”)
- Datset - Dies durchsucht alle Muster, die an die Datset-Entität gebunden sind. Beispiel ፦Suchdatensatz (“dataset1”)
- AVP - AVP-Nummer, die verwendet wird, um mehrere AVPs in einer Durchmesser-/Radius-Nachricht abzugleichen Beispiel: -search avp(999)
Verfeinern Sie die Suchergebnisse
Sie können die Funktion “Suche eingrenzen” verwenden, um die zusätzlichen Kriterien für die Verfeinerung der Suchergebnisse anzugeben. Die Funktion “Suche eingrenzen” kann nur verwendet werden, wenn die Suchfunktion verwendet wird. Der Suchparameter “Verfeinern” beginnt immer mit der Operation “extend (m, n)”, wobei ‘m’ einige Bytes links vom Suchergebnis angibt und ‘n’ mehrere Bytes rechts neben dem Suchergebnis angibt, um den ausgewählten Bereich zu erweitern.
Wenn die konfigurierte Rewrite-Aktion lautet:
> add rewrite action test_refine_search replace_all http.res.body(10) '”testing_refine_search”' -search text("abc") -refineSearch extend(1,1)
And the HTTP response body is abcxxxx456.
<!--NeedCopy-->
Dann findet der Suchparameter das Muster “abc” und da der RefineSearch-Parameter auch so konfiguriert ist, dass er ein zusätzliches 1 Byte links und ein zusätzliches Byte rechts vom übereinstimmenden Muster überprüft. Der resultierende ersetzte Text ist: abcx. Die Ausgabe dieser Aktion ist also testing_refine_searchxxx456
.
Beispiel 1: Verwenden der Suchfunktion Verfeinern im Aktionstyp INSERT_BEFORE_ALL.
> add policy patset pat
Done
> bind policy patset pat abcd
Done
> add rewrite action refineSearch_act_1 insert_before_all http.res.body(10) 'target.prefix(10) + "refineSearch_testing"' -search patset("pat") -refineSearch extend(10,10)
Done
> sh rewrite action refineSearch_act_1
Name: refineSearch_act_1
Operation: insert_before_all
Target:http.res.body(10)
Refine Search:extend(10,10)
Value:target.prefix(10) + "refineSearch_testing"
Search: patset("pat")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Beispiel 2: Verwenden der Suchfunktion “Suche eingrenzen” im Aktionstyp INSERT_AFTER_ALL.
> add rewrite action refineSearch_act_2 insert_after_all http.res.body(100) '"refineSearch_testing"' -search text("abc") -refineSearch extend(0, 10)
Done
> sh rewrite action refineSearch_act_2
Name: refineSearch_act_2
Operation: insert_after_all
Target:http.res.body(100)
Refine Search:extend(0, 10)
Value:"refineSearch_testing"
Search: text("abc")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Beispiel 3: Verwenden der Suchfunktion Verfeinern im Aktionstyp REPLACE_ALL.
> add policy patset pat_list_2
Done
> bind policy patset pat_list_2 "www.abc.com"
Done
> bind policy patset pat_list_2 "www.def.com"
Done
> add rewrite action refineSearch_act_31 replace_all "HTTP.RES.BODY(100000)" ""https://"" -search "patset("pat_list_2")" -refineSearch "EXTEND(7,0).REGEX_SELECT(re#http://#)"
Done
> sh rewrite action refineSearch_act_31
Name: refineSearch_act_31
Operation: replace_all
Target:HTTP.RES.BODY(100000)
Refine Search:EXTEND(7,0).REGEX_SELECT(re#http://#)
Value:"https://"
Search: patset("pat_list_2")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Beispiel 4: Verwenden der Suchfunktion “Suche eingrenzen” im Aktionstyp DELETE_ALL.
>add rewrite action refineSearch_act_4 delete_all "HTTP.RES.BODY(50000)" -search text("Windows Desktops") -refineSearch "EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*<\\/AppData>#)"
> show REWRITE action refineSearch_act_4
Name: refineSearch_act_4
Operation: delete_all
Target:HTTP.RES.BODY(50000)
Refine Search:EXTEND(40,40).REGEX_SELECT(re#\s*<AppData>.\*\s\*</AppData>#)
Search: text("Windows Desktops")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Beispiel 5: Verwenden der Funktion “Suche eingrenzen” im Aktionstyp CLIENTLESS_VPN_ENCODE_ALL.
’’’
add rewrite action act2 clientless_vpn_encode_all http.req.body(100) -search text(“abcd”) Done sh rewrite action act2 Name: act1 Operation: clientless_vpn_encode_all Target:http.req.body(100) Search: text(“abcd”) Hits: 0 Undef Hits: 0 Action Reference Count: 0 Done
’’’
Beispiel 6: Verwenden der Funktion “Suche eingrenzen” im Aktionstyp CLIENTLESS_VPN_DECODE_ALL.
> add rewrite action act1 clientless_vpn_decode_all http.req.body(100) -search text("abcd")
Done
> sh rewrite action act1
Name: act1
Operation: clientless_vpn_decode_all
Target:http.req.body(100)
Search: text("abcd")
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
>
<!--NeedCopy-->
Ändern Sie eine vorhandene Rewrite-Aktion über die Befehlszeile
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine vorhandene Rewrite-Aktion zu ändern und die Konfiguration zu überprüfen:
set rewrite action <name> [-target <expression>] [-stringBuilderExpr <expression>] [-search <expression>] [-refineSearch <expression>] [-comment <string>]
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die geänderte Konfiguration zu überprüfen
show rewrite action <name>
Beispiel:
> set rewrite action insertact -target "Client-IP"
Done
> show rewrite action insertact
Name: insertact
Operation: insert_http_header Target:Client-IP
Value:CLIENT.IP.SRC
Hits: 0
Undef Hits: 0
Action Reference Count: 0
Done
<!--NeedCopy-->
Entfernen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Rewrite-Aktion zu entfernen:
rm rewrite action <name>
Beispiel:
> rm rewrite action insertact
Done
<!--NeedCopy-->
Konfigurieren Sie eine Rewrite-Aktion mit dem Konfigurationsdienstprogramm
- Gehen Sie zu AppExpert > Rewrite > Actions.
- Führen Sie im Detailbereich eine der folgenden Aktionen aus:
- Um eine Aktion zu erstellen, klicken Sie auf Hinzufügen.
- Um eine vorhandene Aktion zu ändern, wählen Sie die Aktion aus, und klicken Sie dann auf Bearbeiten.
- Klicken Sie auf Erstellen oder auf OK. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Aktion erfolgreich konfiguriert wurde.
- Wiederholen Sie die Schritte 2 bis 4, um beliebig viele Rewriteaktionen zu erstellen oder zu ändern.
- Klicken Sie auf Schließen.
Hinzufügen eines Ausdrucks mithilfe des Dialogfelds Ausdruck hinzufügen
- Klicken Sie im Dialogfeld Rewrite-Aktion erstellen oder Rewrite-Aktion konfigurieren unter dem Textbereich für das einzugebende Typargument auf Hinzufügen.
-
Wählen Sie im Dialogfeld Ausdruck hinzufügen im ersten Listenfeld den ersten Begriff für Ihren Ausdruck aus.
- HTTP. Das HTTP-Protokoll. Wählen Sie diese Option, wenn Sie einen Aspekt der Anforderung untersuchen möchten, der sich auf das HTTP-Protokoll bezieht.
- SYS. Die geschützten Websites. Wählen Sie diese Option, wenn Sie einen Aspekt der Anfrage untersuchen möchten, der sich auf den Empfänger der Anfrage bezieht.
- CLIENT. Der Computer, der die Anfrage gesendet hat. Wählen Sie diese Option aus, wenn Sie einen Aspekt des Absenders der Anfrage untersuchen möchten.
Wenn Sie Ihre Auswahl treffen, werden im Listenfeld ganz rechts die entsprechenden Begriffe für den nächsten Teil Ihres Ausdrucks aufgeführt.
-
Wählen Sie im zweiten Listenfeld den zweiten Begriff für Ihren Ausdruck aus. Die Auswahl hängt davon ab, welche Wahl Sie im vorherigen Schritt getroffen haben, und sind dem Kontext angemessen. Nachdem Sie Ihre zweite Wahl getroffen haben, wird im Hilfefenster unterhalb des Fensters “Ausdruck konstruieren” (das leer war) eine Hilfe zur Beschreibung des Zwecks und der Verwendung des gerade gewählten Begriffs angezeigt.
-
Fahren Sie fort, Begriffe aus den Listenfeldern auszuwählen, die rechts neben dem vorherigen Listenfeld angezeigt werden, oder geben Sie Zeichenfolgen oder Zahlen in die Textfelder ein, die Sie zur Eingabe eines Werts auffordern, bis der Ausdruck beendet ist. Weitere Informationen zur Sprache der PI-Ausdrücke und zum Erstellen von Ausdrücken für Responder-Richtlinien finden Sie unter “Richtlinien und Ausdrücke. “
Wenn Sie die Wirkung einer Rewrite-Aktion testen möchten, wenn sie auf HTTP-Beispieldaten verwendet wird, können Sie den Rewrite Expression Evaluator verwenden.
TCP-Nutzlasten neu schreiben
Zielausdrücke in Aktionen für TCP-Rewrite müssen mit einem der folgenden Ausdruckspräfixe beginnen:
- CLIENT.TCP.PAYLOAD. Zum Umschreiben von TCP-Nutzlasten in Clientanfragen. Zum Beispiel CLIENT.TCP.PAYLOAD(10000).AFTER_STR(“string1”).
- SERVER.TCP.PAYLOAD. Zum Umschreiben von TCP-Nutzlasten in Serverantworten. Zum Beispiel SERVER.TCP.PAYLOAD(1000).B64DECODE.BETWEEN(“string1”,”string2”).
Bewerten Sie eine Rewrite-Aktion im Dialogfeld Rewrite Expression Evaluator
- Wählen Sie im Detailbereich Rewrite-Aktionen die Rewrite-Aktion aus, die Sie auswerten möchten, und klicken Sie dann auf Auswerten.
-
Geben Sie im Dialogfeld Rewrite Expression Evaluator Werte für die folgenden Parameter an. (Ein Sternchen gibt einen erforderlichen Parameter an.)
Rewrite Action (Rewrite Action) — Wenn die neu zu bewertende Aktion noch nicht ausgewählt ist, wählen Sie sie aus der Dropdownliste aus. Nachdem Sie eine Aktion “Rewrite” ausgewählt haben, werden im Abschnitt Details die Details der ausgewählten Aktion “Rewrite” angezeigt. Neu — Wählen Sie Neu aus, um das Dialogfeld “Rewrite-Aktion erstellen” zu öffnen und eine Neuschreibaktion zu erstellen. Ändern — Wählen Sie Ändern aus, um das Dialogfeld “Rewrite-Aktion konfigurieren” zu öffnen und die ausgewählte Neuschreibaktion zu ändern. Flow-Typ — Gibt an, ob die ausgewählte Rewrite-Aktion mit HTTP-Anforderungsdaten oder HTTP-Antwortdaten getestet werden soll. Der Standardwert ist Request. Wenn Sie mit Antwortdaten testen möchten, wählen Sie Antwort aus. HTTP-Anforderung/Antwortdaten* — Dient zur Bereitstellung der HTTP-Daten, die der Rewrite Action Evaluator zum Testen verwendet wird. Sie können die Daten direkt in das Fenster einfügen oder auf Sample klicken, um einige Beispiel-HTTP-Header einzufügen. Zeilenende anzeigen — Gibt an, ob End-of-Line-Zeichen (\ n) im Unix-Stil am Ende jeder Zeile von HTTP-Beispieldaten angezeigt werden sollen. Beispiel — Fügt Beispiel-HTTP-Daten in das Fenster “HTTP-Request/Response Data” ein. Sie können entweder GET- oder POST-Daten wählen. Durchsuchen — Öffnet ein lokales Suchfenster, in dem Sie eine Datei mit Beispiel-HTTP-Daten von einem lokalen oder Netzwerkspeicherort auswählen können. Clear—Löscht die aktuellen Beispiel-HTTP-Daten aus dem Fenster “HTTP-Request/Response Data”.
- Klicken Sie auf Bewerten. Der Rewrite Expression Evaluator wertet die Auswirkung der Aktion “Rewrite” auf die ausgewählten Beispieldaten aus und zeigt die Ergebnisse an, die durch die ausgewählte Aktion Rewrite im Fenster Ergebnisse geändert wurden. Hinzufügungen und Löschungen werden wie in der Legende in der unteren linken Ecke des Dialogfelds angegeben hervorgehoben.
-
Evaluieren Sie Rewrite-Aktionen weiter, bis Sie festgestellt haben, dass alle Ihre Aktionen die gewünschte Wirkung haben.
- Sie können die ausgewählte Rewrite-Aktion ändern und die geänderte Version testen, indem Sie auf Ändern klicken, um das Dialogfeld Rewrite-Aktion konfigurieren zu öffnen, Ihre Änderungen vorzunehmen und zu speichern, und dann erneut auf Auswerten klicken.
- Sie können eine andere Rewrite-Aktion mit denselben Anforderungs- oder Antwortdaten auswerten, indem Sie sie in der Dropdownliste Aktion neu schreiben auswählen und dann erneut auf Auswerten klicken.
-
Klicken Sie auf Schließen, um das Auswertungsprogramm Rewrite Expression zu schließen und zum Bereich Rewrite-Aktionen zurückzukehren.
- Um eine Rewrite-Aktion zu löschen, wählen Sie die Rewrite-Aktion aus, die Sie löschen möchten, klicken Sie dann auf Entfernen und bestätigen Sie bei Aufforderung Ihre Auswahl, indem Sie auf OK klicken.
Rewriterichtlinie konfigurieren
Nachdem Sie alle erforderlichen Rewrite-Aktionen erstellt haben, müssen Sie mindestens eine Rewriterichtlinie erstellen, um die Anforderungen auszuwählen, die die NetScaler-Appliance neu schreiben soll.
Eine Rewriterichtlinie besteht aus einer Regel, die selbst aus einem oder mehreren Ausdrücken besteht, und einer zugehörigen Aktion, die ausgeführt wird, wenn eine Anforderung oder Antwort mit der Regel übereinstimmt. Richtlinienregeln für die Auswertung von HTTP-Anfragen und -Antworten können auf fast jedem Teil einer Anfrage oder Antwort basieren.
Obwohl Sie TCP-Rewrite-Aktionen nicht verwenden können, um andere Daten als die TCP-Nutzlast neu zu schreiben, können Sie die Richtlinienregeln für TCP-Rewriterichtlinien auf die Informationen in der Transportschicht und die Schichten unter der Transportschicht stützen.
Wenn eine konfigurierte Regel mit einer Anforderung oder Antwort übereinstimmt, wird die entsprechende Richtlinie ausgelöst und die damit verbundene Aktion wird ausgeführt.
Hinweis:
Sie können entweder die Befehlszeilenschnittstelle oder die GUI verwenden, um Rewriterichtlinien zu erstellen und zu konfigurieren. Benutzer, die mit der Befehlszeilenschnittstelle und der Ausdruckssprache für NetScaler Policy nicht genau vertraut sind, werden die Verwendung der GUI normalerweise viel einfacher finden.
So fügen Sie eine neue Rewriterichtlinie mit der Befehlszeilenschnittstelle hinzu
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine neue Rewriterichtlinie hinzuzufügen und die Konfiguration zu überprüfen:
<add rewrite policy <name> <expression> <action> [<undefaction>]
<show rewrite policy <name>
Beispiel 1. HTTP-Inhalt umschreiben
> add rewrite policyNew "HTTP.RES.IS_VALID" insertact NOREWRITE
Done
> show rewrite policyNew
Name: policyNew
Rule: HTTP.RES.IS_VALID
RewriteAction: insertact
UndefAction: NOREWRITE
Hits: 0
Undef Hits: 0
Done
<!--NeedCopy-->
Beispiel 2. Rewrite einer TCP-Nutzlast (TCP-Rewrite):
> add rewrite policy client_tcp_payload_policy CLIENT.IP.SRC.EQ(172.168.12.232) client_tcp_payload_replace_all
Done
> show rewrite policy client_tcp_payload_policy
Name: client_tcp_payload_policy
Rule: CLIENT.IP.SRC.EQ(172.168.12.232)
RewriteAction: client_tcp_payload_replace_all
UndefAction: Use Global
LogAction: Use Global
Hits: 0
Undef Hits: 0
Done
>
<!--NeedCopy-->
So ändern Sie eine vorhandene Rewriterichtlinie über die Befehlszeile
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine vorhandene Rewriterichtlinie zu ändern und die Konfiguration zu überprüfen:
<set rewrite policy <name> -rule <expression> -action <action> [<undefaction>]
<show rewrite policy <name>
Beispiel:
> set rewrite policyNew -rule "HTTP.RES.IS_VALID" -action insertaction
Done
> show rewrite policyNew
Name: policyNew
Rule: HTTP.RES.IS_VALID
RewriteAction: insertaction
UndefAction: NOREWRITE
Hits: 0
Undef Hits: 0
Done
<!--NeedCopy-->
So entfernen Sie eine Rewriterichtlinie mit der Befehlszeilenschnittstelle
Geben Sie an der Eingabeaufforderung den folgenden Befehl ein, um eine Rewriterichtlinie zu entfernen:
rm rewrite policy <name>
Beispiel:
> rm rewrite policyNew
Done
<!--NeedCopy-->
So konfigurieren Sie eine Rewriterichtlinie über die GUI
- Gehen Sie zu AppExpert > Rewrite > Policies.
- Führen Sie im Detailbereich eine der folgenden Aktionen aus:
- Um eine Richtlinie zu erstellen, klicken Sie auf Hinzufügen.
- Um eine vorhandene Richtlinie zu ändern, wählen Sie die Richtlinie aus, und klicken Sie dann auf Öffnen.
- Klicken Sie auf Erstellen oder OK. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Richtlinie erfolgreich konfiguriert wurde.
- Wiederholen Sie die Schritte 2 bis 4, um beliebig viele Rewriteaktionen zu erstellen oder zu ändern.
- Klicken Sie auf Schließen. Um eine Neuschreibrichtlinie zu löschen, wählen Sie die zu löschende Rewriterichtlinie aus, klicken Sie auf Entfernen, und bestätigen Sie, wenn Sie dazu aufgefordert werden, Ihre Auswahl durch Klicken auf OKzu bestätigen.
Binden einer Rewriterichtlinie
Nachdem Sie eine Rewriterichtlinie erstellt haben, müssen Sie sie binden, um sie in Kraft zu setzen. Sie können Ihre Richtlinie an Global binden, wenn Sie sie auf den gesamten Datenverkehr anwenden möchten, der durch Ihren NetScaler fließt, oder Sie können Ihre Richtlinie an einen bestimmten virtuellen Server oder Bindepunkt binden, um nur diesen virtuellen Server zu leiten oder den eingehenden Datenverkehr des Punkts an diese Richtlinie zu binden. Wenn eine eingehende Anforderung mit einer Rewriterichtlinie übereinstimmt, wird die mit dieser Richtlinie verknüpfte Aktion ausgeführt.
Rewriterichtlinien für die Auswertung von HTTP-Anfragen und -Antworten können an virtuelle Server vom Typ HTTP oder SSL gebunden werden, oder sie können an die Bindungspunkte REQ_OVERRIDE, REQ_DEFAULT, RES_OVERRIDE und RES_DEFAULT gebunden werden. Rewriterichtlinien für das Rewrite von TCP können nur an virtuelle Server vom Typ TCP oder SSL_TCP oder an die Bindungspunkte OTHERTCP_REQ_OVERRIDE, OTHERTCP_REQ_DEFAULT, OTHERTCP_RES_OVERRIDE und OTHERTCP_RES_DEFAULT gebunden werden.
Hinweis:
Der Begriff OTHERTCP wird im Kontext der NetScaler-Appliance verwendet, um sich auf alle TCP- oder SSL_TCP-Anforderungen und -Antworten zu beziehen, die Sie unabhängig von den Protokollen, die die TCP-Pakete kapseln, als rohen Byte-Stream behandeln möchten.
Wenn Sie eine Richtlinie binden, weisen Sie ihr eine Priorität zu. Die Priorität bestimmt die Reihenfolge, in der die von Ihnen definierten Richtlinien ausgewertet werden. Sie können die Priorität auf jede positive Ganzzahl festlegen.
Im NetScaler-Betriebssystem arbeiten Richtlinienprioritäten in umgekehrter Reihenfolge - je höher die Zahl, desto niedriger die Priorität. Wenn Sie beispielsweise drei Richtlinien mit Prioritäten von 10, 100 und 1000 haben, wird der Richtlinie zuerst eine Priorität von 10 zugewiesen, dann wird der Richtlinie eine Priorität von 100 zugewiesen, und schließlich hat die Richtlinie eine Reihenfolge von 1000 zugewiesen.
Im Gegensatz zu den meisten anderen Funktionen des NetScaler-Betriebssystems bewertet und implementiert die Rewrite-Funktion weiterhin Richtlinien, nachdem eine Anforderung mit einer Richtlinie übereinstimmt. Die Auswirkung einer bestimmten Aktionsrichtlinie auf eine Anfrage oder Antwort ist jedoch häufig unterschiedlich, je nachdem, ob sie vor oder nach einer anderen Aktion durchgeführt wird. Priorität ist wichtig, um die von Ihnen beabsichtigten Ergebnisse zu erzielen.
Sie können sich viel Raum lassen, um andere Richtlinien in beliebiger Reihenfolge hinzuzufügen, und sie dennoch so einstellen, dass sie in der gewünschten Reihenfolge bewertet werden, indem Sie Prioritäten mit Intervallen von 50 oder 100 zwischen den einzelnen Richtlinien festlegen, wenn Sie sie binden. In diesem Fall können Sie jederzeit weitere Richtlinien hinzufügen, ohne die Priorität einer bestehenden Richtlinie neu zuweisen zu müssen.
Wenn Sie eine Rewriterichtlinie binden, haben Sie auch die Möglichkeit, der Richtlinie einen GoTo-Ausdruck (gotoPriorityExpression) zuzuweisen. Ein Goto Ausdruck kann eine beliebige positive Ganzzahl sein, die der Priorität entspricht, die einer anderen Richtlinie zugewiesen wurde, die eine höhere Priorität als die Richtlinie hat, die den GoTo-Ausdruck enthält. Wenn Sie einer Richtlinie einen GoTo-Ausdruck zuweisen und eine Anforderung oder Antwort mit der Richtlinie übereinstimmt, wird NetScaler sofort zu der Richtlinie wechseln, deren Priorität dem Goto Ausdruck entspricht. Es überspringt alle Richtlinien mit Prioritätsnummern, die niedriger als die der aktuellen Richtlinie sind, aber höher als die Prioritätsnummer des Gehe zu Ausdrucks sind, und bewertet diese Richtlinien nicht.
So binden Sie eine Rewriterichtlinie über die Befehlszeile global
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um eine Rewriterichtlinie global zu binden und die Konfiguration zu überprüfen:
bind rewrite global <policyName> <priority> [<gotoPriorityExpression>] [-type <type>] [-invoke (<labelType> <labelName>)]
show rewrite global
Beispiel:
>bind rewrite global policyNew 10
Done
> show rewrite global
1) Global bindpoint: RES_DEFAULT
Number of bound policies: 1
2) Global bindpoint: REQ_OVERRIDE
Number of bound policies: 1
Done
<!--NeedCopy-->
So binden Sie die Rewriterichtlinie über die Befehlszeile an einen bestimmten virtuellen Server
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die Rewriterichtlinie an einen bestimmten virtuellen Server zu binden und die Konfiguration zu überprüfen:
bind lb vserver <name>@ (<serviceName>@ [-weight <positive_integer>]) | <serviceGroupName>@ | (-policyName <string>@ [-priority <positive_integer>] [-gotoPriorityExpression <expression>] [-type ( REQUEST | RESPONSE )] [-invoke (<labelType> <labelName>)] )
show lb vserver <name>
Beispiel:
> bind lb vserver lbvip -policyName ns_cmp_msapp -priority 50
Done
>
> show lb vserver lbvip
lbvip (8.7.6.6:80) - HTTP Type: ADDRESS
State: DOWN
Last state change was at Wed Jul 15 05:54:24 2009 (+226 ms)
Time since last state change: 28 days, 01:57:26.350
Effective State: DOWN
Client Idle Timeout: 180 sec
Down state flush: ENABLED
Disable Primary Vserver On Down : DISABLED
Port Rewrite : DISABLED
No. of Bound Services : 0 (Total) 0 (Active)
Configured Method: LEASTCONNECTION
Mode: IP
Persistence: NONE
Vserver IP and Port insertion: OFF
Push: DISABLED Push VServer:
Push Multi Clients: NO
Push Label Rule: none
1) Policy : ns_cmp_msapp Priority:50
2) Policy : cf-pol Priority:1 Inherited
Done
<!--NeedCopy-->
So binden Sie eine Rewriterichtlinie über die GUI an einen Bindepunkt
- Navigieren Sie zu AppExpert >Rewrite > Richtlinien.
- Wählen Sie im Detailbereich die Rewriterichtlinie aus, die Sie global binden möchten, und klicken Sie dann auf Richtlinien-Manager.
- Führen Sie im Dialogfeld Rewriterichtlinienmanager im Menü Punkte binden einen der folgenden Schritte aus:
- Wenn Sie Bindungen für HTTP-Rewriterichtlinien konfigurieren möchten, klicken Sie auf HTTPund dann entweder auf Anforderung oder Antwort, je nachdem, ob Sie anforderungsbasierte Rewriterichtlinien oder reaktionsbasierte Rewriterichtlinien konfigurieren möchten.
- Wenn Sie Bindungen für TCP-Rewriterichtlinien konfigurieren möchten, klicken Sie auf TCP, und klicken Sie dann entweder auf Client oder Server, je nachdem, ob Sie clientseitige TCP-Rewriterichtlinien oder serverseitige TCP-Rewriterichtlinien konfigurieren möchten.
- Klicken Sie auf den Bindepunkt, an den Sie die Rewriterichtlinie binden möchten. Im Dialogfeld Rewriterichtlinien-Manager werden alle Rewriterichtlinien angezeigt, die an den ausgewählten Bindepunkt gebunden sind.
- Klicken Sie auf Richtlinie einfügen, um eine neue Zeile einzufügen und eine Dropdownliste mit allen verfügbaren, ungebundenen Rewriterichtlinien anzuzeigen.
- Klicken Sie auf die Richtlinie, die Sie an den Bindepunkt binden möchten. Die Richtlinie wird in die Liste der an den Bindepunkt gebundenen Rewriterichtlinien eingefügt.
- In der Spalte Priorität können Sie die Priorität auf eine beliebige positive Ganzzahl ändern. Weitere Informationen zu diesem Parameter finden Sie unter Priorität in “Parameter zum Binden einer Rewriterichtlinie”.
- Wenn Sie Richtlinien überspringen und direkt zu einer bestimmten Richtlinie wechseln möchten, wenn die aktuelle Richtlinie übereinstimmt, ändern Sie den Wert in der Spalte Gehe zu Ausdruck so, dass er der Priorität der nächsten anzuwendenden Richtlinie entspricht. Weitere Informationen zu diesem Parameter finden Sie unter gotoPriorityExpression in “Parameter zum Binden einer Rewriterichtlinie”.
- Um eine Richtlinie zu ändern, klicken Sie auf die Richtlinie und dann auf Richtlinie ändern.
- Um die Bindung einer Richtlinie aufzuheben, klicken Sie auf die Richtlinie und dann auf Richtlinie aufheben.
- Um eine Aktion zu ändern, klicken Sie in der Spalte Aktion auf die Aktion, die Sie ändern möchten, und klicken Sie dann auf Aktion ändern.
- Um eine Aufrufbeschriftung zu ändern, klicken Sie in der Spalte Aufrufen auf das Aufruflabel, das Sie ändern möchten, und klicken Sie dann auf Aufrufbeschriftung ändern.
- Um die Prioritäten aller Richtlinien neu zu generieren, die an den gerade konfigurierten Bindepunkt gebunden sind, klicken Sie auf Prioritäten neu generieren. Die Richtlinien behalten ihre bestehenden Prioritäten im Vergleich zu den anderen Richtlinien bei, aber die Prioritäten werden in ein Vielfaches von 10 umnummeriert.
- Klicken Sie auf Änderungen übernehmen.
- Klicken Sie auf Schließen. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Richtlinie erfolgreich konfiguriert wurde.
So binden Sie eine Rewriterichtlinie über die GUI an einen bestimmten virtuellen Server
- Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server.
- Wählen Sie in der Liste der virtuellen Server im Detailbereich den virtuellen Server aus, an den Sie die Rewriterichtlinie binden möchten, und klicken Sie dann auf Öffnen.
- Wählen Sie im Dialogfeld Virtuellen Server konfigurieren (Load Balancing) die Registerkarte Richtlinien aus. Alle auf Ihrem NetScaler konfigurierten Richtlinien werden in der Liste angezeigt.
- Aktivieren Sie das Kontrollkästchen neben dem Namen der Richtlinie, die Sie an diesen virtuellen Server binden möchten.
- Klicken Sie auf OK. In der Statusleiste wird eine Meldung angezeigt, die besagt, dass die Richtlinie erfolgreich konfiguriert wurde.
Konfigurieren von Richtlinienbeschriftungen
Wenn Sie eine komplexere Richtlinienstruktur aufbauen möchten, als von einzelnen Richtlinien unterstützt wird, können Sie Richtlinienbeschriftungen erstellen und diese dann wie Richtlinien binden. Ein Policy Label ist ein benutzerdefinierter Punkt, an den Richtlinien gebunden sind. Wenn ein Policy Label aufgerufen wird, werden alle an sie gebundenen Richtlinien in der Reihenfolge der von Ihnen konfigurierten Priorität ausgewertet. Ein Policy Label kann eine oder mehrere Richtlinien enthalten, von denen jeder ein eigenes Ergebnis zugewiesen werden kann. Eine Übereinstimmung mit einer Policy Label im Richtlinienlabel kann dazu führen, dass mit der nächsten Policy Label fortgefahren wird, ein anderes Richtlinienlabel oder eine entsprechende Ressource aufgerufen wird oder die Richtlinienbewertung sofort beendet wird und die Kontrolle an die Policy Label zurückgegeben wird, die das Richtlinienlabel aufgerufen hat.
Eine Richtlinienbezeichnung zum Rewrite besteht aus einem Namen, einem Transformationsnamen, der den in der Richtlinienbezeichnung enthaltenen Richtlinientyp beschreibt, und einer Liste von Richtlinien, die an die Richtlinienbezeichnung gebunden sind. Jede Richtlinie, die an die Policy Label gebunden ist, enthält alle unter Neuschreibenrichtlinie konfigurierenbeschriebenen Elemente.
Hinweis: Sie können entweder die Befehlszeilenschnittstelle oder die GUI verwenden, um Rewriterichtlinienbeschriftungen zu erstellen und zu konfigurieren. Benutzer, die mit der Befehlszeilenschnittstelle und der NetScaler Policy Infrastructure (PI) -Sprache nicht genau vertraut sind, finden die Verwendung der GUI normalerweise viel einfacher.
So konfigurieren Sie eine Rewriterichtlinienbezeichnung über die Befehlszeile
Um ein Rewriterichtlinienlabel hinzuzufügen, geben Sie an der Eingabeaufforderung den folgenden Befehl ein:
add rewrite policylabel <labelName> <transform>
Um beispielsweise eine Rewriterichtlinienbezeichnung namens PollabelHttpResponses hinzuzufügen, um alle Richtlinien zu gruppieren, die für HTTP-Antworten funktionieren, geben Sie Folgendes ein:
add rewrite policy label polLabelHTTPResponses http_res
Geben Sie an der NetScaler-Eingabeaufforderung den folgenden Befehl ein, um ein vorhandenes Rewriterichtlinienlabel zu ändern:
set rewrite policy <name> <transform>
Hinweis:
Der Befehl set rewrite policy verwendet dieselben Optionen wie der Befehl add rewrite policy.
Um ein Rewriterichtlinienlabel zu entfernen, geben Sie an der NetScaler-Eingabeaufforderung den folgenden Befehl ein:
rm rewrite policy<name>
Um beispielsweise eine Rewriterichtlinienbezeichnung namens PollabelHttpResponses zu entfernen, geben Sie Folgendes ein:
rm rewrite policy polLabelHTTPResponses
So konfigurieren Sie eine Rewriterichtlinienbezeichnung über die GUI
- Navigieren Sie zu AppExpert > Rewrite > Policy Labels.
- Führen Sie im Detailbereich eine der folgenden Aktionen aus:
- Um ein Policy Label zu erstellen, klicken Sie auf Hinzufügen.
- Um ein vorhandenes Richtlinienlabel zu ändern, wählen Sie die Policy Label aus, und klicken Sie dann auf Öffnen.
- Fügen Sie Richtlinien hinzu oder entfernen Sie Richtlinien aus der Liste, die an das Policy Label gebunden ist.
- Um der Liste eine Richtlinie hinzuzufügen, klicken Sie auf Richtlinie einfügen, und wählen Sie eine Richtlinie aus der Dropdownliste aus. Sie können eine Richtlinie erstellen und zur Liste hinzufügen, indem Sie in der Liste Neue Richtlinie wählen und den Anweisungen unter Konfigurieren einer Rewriterichtliniefolgen.
- Um eine Richtlinie aus der Liste zu entfernen, wählen Sie diese Richtlinie aus, und klicken Sie dann auf Richtlinie aufheben.
- Ändern Sie die Priorität jeder Richtlinie, indem Sie die Zahl in der Spalte Priorität bearbeiten. Sie können Richtlinien auch automatisch neu nummerieren, indem Sie auf Prioritäten neu generieren klicken.
- Klicken Sie auf Erstellen oder OK und dann auf Schließen. Um ein Policy Label zu entfernen, wählen Sie es aus und klicken dann auf Entfernen. Um ein Policy Label umzubenennen, wählen Sie es aus und klicken Sie dann auf Umbenennen. Bearbeiten Sie den Namen der Richtlinie, und klicken Sie dann auf OK, um Ihre Änderungen zu speichern.
In diesem Artikel
- Vergleich zwischen Rewrite und Responder Optionen
- Wie das Rewrite funktioniert
- Rewrite-Aktionen
- Rewrite aktivieren
- Konfigurieren einer Rewrite-Aktion
- Erstellen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle
- Ändern Sie eine vorhandene Rewrite-Aktion über die Befehlszeile
- Entfernen Sie eine Rewrite-Aktion mit der Befehlszeilenschnittstelle
- Konfigurieren Sie eine Rewrite-Aktion mit dem Konfigurationsdienstprogramm
- Hinzufügen eines Ausdrucks mithilfe des Dialogfelds Ausdruck hinzufügen
- TCP-Nutzlasten neu schreiben
- Bewerten Sie eine Rewrite-Aktion im Dialogfeld Rewrite Expression Evaluator
- Rewriterichtlinie konfigurieren
- Binden einer Rewriterichtlinie
- Konfigurieren von Richtlinienbeschriftungen