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.
嗯HTTP-Anfragen和-Antworten neu祖茂堂事实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 unterBeispiele 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
明信片Rewriterichtlinie besteht来自静脉Regel和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 unterKonfigurieren einer Rewriterichtlinieund zum Binden von Rewriterichtlinien finden Sie unterBinden 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. Die Richtlinie mit der angegebenen Priorität wird ausgewertet. INVOCATION_LIST 去祖茂堂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 unterKonfigurieren 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 unterFunktionsweise 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
So aktivieren Sie die Rewrite-Funktion über die GUI
- Klicken Sie im Navigationsbereich aufSystemund dann aufEinstellungen.
- Klicken Sie im Detailbereich unter Modi und Funktionen aufGrundfunktionen konfigurieren.
- Aktivieren Sie im DialogfeldGrundfunktionen konfigurierendas Kontrollkästchen Rewrite, und klicken Sie dann aufOK.
- Klicken Sie im DialogfeldFeature(s) aktivieren/deaktivierenaufJa.In der Statusleiste wird eine Meldung angezeigt, die besagt, dass das ausgewählte Feature aktiviert wurde.
Konfigurieren einer Rewrite-Aktion
Warnung
死在静脉Pattern-Funktion Rewrite-Aktion坚持b 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 SpalteRewrite-Aktionstypidentifiziert.
Weitere Informationen finden Sie unterTypenparameter.
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
[ ] [-search ] [refineSearch ] [-comment ] 显示修改行动
Weitere Informationen finden Sie in der TabelleRewrite-Aktionstypen und deren Argumente.
死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
DerType-Parameterzeigt den Typ der benutzerdefinierten Rewrite-Aktion an.
Im Folgenden sind die Werte desType-Parametersaufgeführt:
REPLACE
.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
REPLACE_ALL
- Ersetzt in der von-(search)
angegebenen Anfrage oder Antwort alle Vorkommen der Zeichenfolge definiert von
durch durch durch durch
.Sie können die Suchoption verwenden, um die zu ersetzenden Zeichenketten zu finden.
Beispiel:
>添加政策patset pat_list_2 >绑定完成政策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
REPLACE_HTTP_RES
.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
REPLACE_SIP_RES
.Ersetzt die vollständige SIP-Antwort durch die durch
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
INSERT_HTTP_HEADER
.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
DELETE_HTTP_HEADER
.Löscht den HTTP-Header, der mit
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
CORRUPT_HTTP_HEADER
.Ersetzt den Header-Namen aller Vorkommen des durch
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
INSERT_BEFORE
.Findet die in
angegebene Zeichenfolge und fügt die Zeichenfolge in
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
INSERT_BEFORE_ALL
.Sucht in der von angegebenen Anfrage oder Antwort nach allen Vorkommen der Zeichenfolge-(search)
, die in angegeben istund fügt die in angegebene Zeichenfolge ein davor. 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
INSERT_AFTER
.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
INSERT_AFTER_ALL
.Sucht in der von-(search)
angegebenen Anfrage oder Antwort nach allen Vorkommen der von angegebenen Zeichenfolge
und fügt die von angegebene Zeichenfolge
danach 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
DELETE
.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
DELETE_ALL
.在范德•冯•-(search)
angegebenen Anforderung oder Antwort sucht und löscht alle Vorkommen der durch angegebenen Zeichenfolge
.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`\*`.`\*`\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`\*`.`\*`\s`\*` #) Search: text("Windows Desktops") Hits: 0 Undef Hits: 0 Action Reference Count: 0 Done
REPLACE_DIAMETER_HEADER_FIELD
.Ändern Sie in der Anforderung oder den Antworten das durch
angegebene Kopfzeilenfeld. Verwenden SieDiameter.req.flags.SET(
oder) Diameter.req.flags.UNSET
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
REPLACE_DNS_HEADER_FIELD
.In der Anforderung oder Antwort ändert das durch
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
REPLACE_DNS_ANSWER_SECTION
.Ersetzen您窝DNS-Antwortabschnitt 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
CLIENTLESS_VPN_DECODE
.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
CLIENTLESS_VPN_DECODE_ALL
.Dekodiert ALLE durch den Suchparameter angegebenen Muster im clientlosen VPN-Format.-search
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
CLIENTLESS_VPN_ENCODE
.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
CLIENTLESS_VPN_ENCODE_ALL
.Kodiert ALLE Muster angegebenen Suchparameter im clientlosen VPN-Format.-search
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
CORRUPT_SIP_HEADER
.Ersetzt den Header-Namen aller Vorkommen des durch
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
INSERT_SIP_HEADER
.Fügt den durch
angegebenen SIP-Header und Header-Inhalt ein, der durch
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
DELETE_SIP_HEADER
.Löscht den SIP-Header, der von
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
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
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 >
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——死durchsucht阿莱,死的死atset-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.
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 alsotesting_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
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
Beispiel 3: Verwenden der Suchfunktion Verfeinern im Aktionstyp REPLACE_ALL.
>添加政策patset pat_list_2 >绑定完成政策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
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*.\*\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*.\*\s\* #) Search: text("Windows Desktops") Hits: 0 Undef Hits: 0 Action Reference Count: 0 Done >
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 >
Ä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
[-target ] [-stringBuilderExpr ] [-search ] [-refineSearch ] [-comment ]
Geben Sie an der Eingabeaufforderung die folgenden Befehle ein, um die geänderte Konfiguration zu überprüfen
显示修改行动
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
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
Beispiel:
> rm rewrite action insertact Done
Konfigurieren Sie eine Rewrite-Aktion mit dem Konfigurationsdienstprogramm
- Gehen Sie zuAppExpert > Rewrite > Actions.
- Führen Sie im Detailbereich eine der folgenden Aktionen aus:
- Um eine Aktion zu erstellen, klicken Sie aufHinzufügen.
- Um eine vorhandene Aktion zu ändern, wählen Sie die Aktion aus, und klicken Sie dann aufBearbeiten.
- Klicken Sie aufErstellenoderauf 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 aufSchließen.
Hinzufügen eines Ausdrucks mithilfe des Dialogfelds Ausdruck hinzufügen
- Klicken Sie im DialogfeldRewrite-Aktion erstellenoderRewrite-Aktion konfigurierenunter dem Textbereich für das einzugebende Typargument aufHinzufügen.
Wählen Sie im DialogfeldAusdruck hinzufügenim 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 DetailbereichRewrite-Aktionendie Rewrite-Aktion aus, die Sie auswerten möchten, und klicken Sie dann aufAuswerten.
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. DerRewrite Expression Evaluatorwertet die Auswirkung der Aktion “Rewrite” auf die ausgewählten Beispieldaten aus und zeigt die Ergebnisse an, die durch die ausgewählte AktionRewriteim FensterErgebnissegeä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Ändernklicken, um das DialogfeldRewrite-Aktion konfigurierenzu ö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 DropdownlisteAktion neu schreibenauswählen und dann erneut aufAuswertenklicken.
Klicken Sie aufSchließen, um das AuswertungsprogrammRewrite Expressionzu schließen und zum BereichRewrite-Aktionenzurückzukehren.
- Um eine Rewrite-Aktion zu löschen, wählen Sie die Rewrite-Aktion aus, die Sie löschen möchten, klicken Sie dann aufEntfernenund bestätigen Sie bei Aufforderung Ihre Auswahl, indem Sie aufOKklicken.
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:
[ ]
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
Beispiel 2. Rewrite einer TCP-Nutzlast (TCP-Rewrite):
>添加重写策略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 >
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:
-rule -action [ ]
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
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
Beispiel:
> rm rewrite policyNew Done
So konfigurieren Sie eine Rewriterichtlinie über die GUI
- Gehen Sie zuAppExpert > 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 aufErstellenoderauf 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 aufSchließen.Um eine Neuschreibrichtlinie zu löschen, wählen Sie die zu löschende Rewriterichtlinie aus, klicken Sie aufEntfernen, und bestätigen Sie, wenn Sie dazu aufgefordert werden, Ihre Auswahl durch Klicken aufOKzu 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.
您可以在西奇祝Raum拉森,安德利果汁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
[ ] [-type ] [-invoke ( )] 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
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
@ ( @ [-weight ]) | @ | (-policyName @ [-priority ] [-gotoPriorityExpression ] [-type ( REQUEST | RESPONSE )] [-invoke ( )] ) show lb vserver
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
So binden Sie eine Rewriterichtlinie über die GUI an einen Bindepunkt
- Navigieren Sie zuAppExpert>Rewrite>Richtlinien.
- Wählen Sie im Detailbereich die Rewriterichtlinie aus, die Sie global binden möchten, und klicken Sie dann aufRichtlinien-Manager.
- Führen Sie im DialogfeldRewriterichtlinienmanagerim MenüPunkte bindeneinen der folgenden Schritte aus:
- Wenn Sie Bindungen für HTTP-Rewriterichtlinien konfigurieren möchten, klicken Sie aufHTTPund dann entweder aufAnforderungoderAntwort, je nachdem, ob Sie anforderungsbasierte Rewriterichtlinien oder reaktionsbasierte Rewriterichtlinien konfigurieren möchten.
- Wenn Sie Bindungen für TCP-Rewriterichtlinien konfigurieren möchten, klicken Sie aufTCP, und klicken Sie dann entweder aufClientoderServer, 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 DialogfeldRewriterichtlinien-Managerwerden alle Rewriterichtlinien angezeigt, die an den ausgewählten Bindepunkt gebunden sind.
- Klicken Sie aufRichtlinieeinfü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 SpaltePriorität您能死Prioritat auf一张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 aufRichtlinie ändern.
- Um die Bindung einer Richtlinie aufzuheben, klicken Sie auf die Richtlinie und dann aufRichtlinie aufheben.
- Um eine Aktion zu ändern, klicken Sie in der Spalte Aktion auf die Aktion, die Sie ändern möchten, und klicken Sie dann aufAktion ändern.
- Um eine Aufrufbeschriftung zu ändern, klicken Sie in der SpalteAufrufenauf das Aufruflabel, das Sie ändern möchten, und klicken Sie dann aufAufrufbeschriftung ändern.
- Um die Prioritäten aller Richtlinien neu zu generieren, die an den gerade konfigurierten Bindepunkt gebunden sind, klicken Sie aufPrioritä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 aufSchließ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 zuTraffic 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ählenSie im Dialogfeld Virtuellen Server konfigurieren (Load Balancing)die RegisterkarteRichtlinienaus. 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 aufOK.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.
明信片Richtlinienbezeichnung zum重写besteht盟s 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 unterNeuschreibenrichtlinie 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
嗯静脉Rewriterichtlinienlabel hinzuzufügen, geben Sie an der Eingabeaufforderung den folgenden Befehl ein:
add rewrite policylabel
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 derNetScaler-Eingabeaufforderungden folgenden Befehl ein, um ein vorhandenes Rewriterichtlinienlabel zu ändern:
set rewrite policy
Hinweis:
Der Befehl set rewrite policy verwendet dieselben Optionen wie der Befehl add rewrite policy.
嗯静脉Rewriterichtlinienlabel zu entfernen, geben Sie an derNetScaler-Eingabeaufforderungden folgenden Befehl ein:
rm rewrite policy
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 zuAppExpert>Rewrite>Policy Labels.
- Führen Sie im Detailbereich eine der folgenden Aktionen aus:
- Um ein Policy Label zu erstellen, klicken Sie aufHinzufü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 aufRichtlinie 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 Anweisungenunter 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 aufErstellenoderOK, und klicken Sie dann aufSchließen.Um ein Policy Label zu entfernen, wählen Sie es aus und klicken dann aufEntfernen.Um ein Policy Label umzubenennen, wählen Sie es aus und klicken Sie dann aufUmbenennen.Bearbeiten Sie den Namen der Richtlinie, und klicken Sie dann aufOK, 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