ADC

RADIUS-Unterstützung für die Rewrite-Funktion

Die NetScaler-Ausdruckssprache umfasst Ausdrücke, mit denen Informationen aus RADIUS-Nachrichten in Anfragen und Antworten extrahiert und bearbeitet werden können. Mit diesen Ausdrücken können Sie die Rewrite-Funktion verwenden, um Teile einer RADIUS-Nachricht zu ändern, bevor sie an ihr Ziel gesendet wird. Ihre Rewrite-Richtlinien und -Aktionen können jeden Ausdruck verwenden, der für eine RADIUS-Nachricht geeignet oder relevant ist. Mit den verfügbaren Ausdrücken können Sie den RADIUS-Nachrichtentyp identifizieren, ein beliebiges Attributwertpaar (AVP) aus der Verbindung extrahieren und RADIUS-AVPs ändern. Sie können auch Richtlinienlabels für RADIUS-Verbindungen erstellen.

Sie können die neuen RADIUS-Ausdrücke in Rewrite-Regeln für eine Reihe von Zwecken verwenden. Sie könnten zum Beispiel:

  • Entfernen Sie den Abschnitt Domäne\ des RADIUS-Benutzernamens AVP, um Single Sign-On (SSO) zu vereinfachen.
  • Fügen Sie einen anbieterspezifischen AVP ein, z. B. das MSISDN-Feld, das im Betrieb von Telefongesellschaften verwendet wird, um Abonnenteninformationen zu enthalten.

Sie können auch Richtlinienlabels erstellen, um bestimmte Arten von RADIUS-Anfragen anhand einer Reihe von Richtlinien weiterzuleiten, die für diese Anfragen geeignet sind.

Hinweis:

RADIUS for Rewrite weist die folgenden Einschränkungen auf:

  • Der NetScaler signiert keine neu geschriebenen RADIUS-Anfragen oder -Antworten erneut. Wenn der RADIUS-Authentifizierungsserver signierte RADIUS-Nachrichten benötigt, schlägt die Authentifizierung fehl.
  • Die derzeit verfügbaren RADIUS-Ausdrücke funktionieren nicht mit RADIUS-IPv6-Attributen.

In der NetScaler-Dokumentation für Ausdrücke, die RADIUS unterstützen, wird davon ausgegangen, dass Sie mit der grundlegenden Struktur und dem Zweck der RADIUS-Kommunikation vertraut sind. Wenn Sie weitere Informationen zu RADIUS benötigen, lesen Sie in der RADIUS-Serverdokumentation nach oder suchen Sie online nach einer Einführung in das RADIUS-Protokoll.

Konfiguration von Rewrite-Richtlinien für RADIUS

Das folgende Verfahren verwendet die NetScaler-Befehlszeile, um eine Neuschreibaktion und -richtlinie zu konfigurieren und die Richtlinie an einen für das Umschreiben spezifischen globalen Bindungspunkt zu binden.

Gehen Sie wie folgt vor, um eine Rewrite-Aktion und -Richtlinie zu konfigurieren und die Richtlinie zu binden:

Geben Sie an der Eingabeaufforderung die folgenden Befehle ein:

  • add rewrite action <actName> <actType>
  • add rewrite policy <polName> <rule> <actName>
  • bind rewrite policy <polName> <priority> <nextExpr> -type <bindPoint> wobei <bindPoint> steht für einen der Rewrite-spezifischen globalen Bindungspunkte.

RADIUS-Ausdrücke für Rewrite

In einer Rewrite-Konfiguration können Sie die folgenden NetScaler-Ausdrücke verwenden, um auf verschiedene Teile einer RADIUS-Anfrage oder -Antwort zu verweisen.

Identifizieren der Art der Verbindung:

  • RADIUS.IS_CLIENT

    Gibt TRUE zurück, wenn es sich bei der Verbindung um eine RADIUS-Clientnachricht (Anfrage) handelt.

  • RADIUS.IS_SERVER

    Gibt TRUE zurück, wenn es sich bei der Verbindung um eine RADIUS-Servernachricht (Antwort) handelt.

Ausdrücke anfordern:

  • RADIUS.REQ.CODE

    Gibt die Zahl zurück, die dem RADIUS-Anforderungstyp entspricht. Eine Ableitung der Klasse num_at. Eine RADIUS-Zugriffsanfrage würde beispielsweise 1 (eins) zurückgeben. Eine RADIUS-Buchhaltungsanfrage würde 4 zurückgeben.

  • RADIUS.REQ.LENGTH

    Gibt die Länge der RADIUS-Anfrage einschließlich des Headers zurück. Eine Ableitung der Klasse num_at.

  • RADIUS.REQ.IDENTIFIER

    Gibt den RADIUS-Anforderungsbezeichner zurück, eine Nummer, die jeder Anfrage zugewiesen wird und die es ermöglicht, die Anfrage mit der entsprechenden Antwort abzugleichen. Eine Ableitung der Klasse num_at.

  • RADIUS.REQ.AVP(<AVP Code No>).VALUE

    Gibt den Wert des ersten Auftretens dieses AVP als Zeichenfolge vom Typ text_t zurück.

  • RADIUS.REQ.AVP(<AVP code no>).INSTANCE(instance number)

    Gibt die angegebene Instanz des AVP als Zeichenfolge vom Typ raVP_T zurück. Ein bestimmter RADIUS-AVP kann in einer RADIUS-Nachricht mehrfach vorkommen. INSTANCE (0) gibt die erste Instanz zurück, INSTANCE (1) gibt die zweite Instanz zurück und so weiter, bis zu sechzehn Instanzen.

  • RADIUS.REQ.AVP(<AVP code no>).VALUE(instance number)

    Gibt den Wert der angegebenen Instanz des AVP als Zeichenfolge vom Typ text_t zurück.

  • RADIUS.REQ.AVP(<AVP code no>).COUNT

    Gibt die Anzahl der Instanzen eines bestimmten AVP in einer RADIUS-Verbindung als Ganzzahl zurück.

  • RADIUS.REQ.AVP(<AVP code no>).EXISTS

    Gibt TRUE zurück, wenn der angegebene AVP-Typ in der Nachricht vorhanden ist, oder FALSE, wenn dies nicht der Fall ist.

Antwortausdrücke:

RADIUS-Antwortausdrücke sind identisch mit RADIUS-Anforderungsausdrücken, mit der Ausnahme, dass RES REQ ersetzt.

Typumwandlungen von AVP-Werten:

Der ADC unterstützt Ausdrücke zur Typisierung von RADIUS-AVP-Werten in die Datentypen Text, Integer, unsigned Integer, Long, unsigned Long, IPv4-Adresse, IPv6-Adresse, IPv6-Adresse, IPv6-Präfix und Zeit. Die Syntax ist dieselbe wie bei anderen NetScaler-Typecast-Ausdrücken.

Beispiel:

Der ADC unterstützt Ausdrücke zur Typisierung von RADIUS-AVP-Werten in die Datentypen Text, Integer, unsigned Integer, Long, unsigned Long, IPv4-Adresse, IPv6-Adresse, IPv6-Adresse, IPv6-Präfix und Zeit. Die Syntax ist dieselbe wie bei anderen NetScaler-Typecast-Ausdrücken.

RADIUS.REQ.AVP(8).VALUE(0).typecast_ip_address_at
<!--NeedCopy-->

Ausdrücke vom Typ AVP:

Der NetScaler unterstützt Ausdrücke zum Extrahieren von RADIUS-AVP-Werten mithilfe der in RFC2865 und RFC2866 beschriebenen zugewiesenen Integer-Codes. Sie können auch Text-Aliase verwenden, um dieselbe Aufgabe zu erledigen. Es folgen einige Beispiele.

  • RADIUS.REQ.AVP (1).VALUE or RADIUS.REQ.USERNAME.value

    Extrahiert den RADIUS-Benutzernamenwert.

  • RADIUS.REQ.AVP (4). VALUE or RADIUS.REQ. ACCT\_SESSION\_ID.value

    Extrahiert die accT-Session-ID AVP (Code 44) aus der Nachricht.

  • RADIUS.REQ.AVP (26). VALUE or RADIUS.REQ.VENDOR\_SPECIFIC.VALUE

    Extrahiert den herstellerspezifischen Wert.

Die Werte der am häufigsten verwendeten RADIUS-AVPs können auf dieselbe Weise extrahiert werden.

RADIUS-Bindungspunkte:

Vier globale Bindungspunkte sind für Richtlinien verfügbar, die RADIUS-Ausdrücke enthalten.

  • RADIUS_REQ_OVERRIDE

    Warteschlange für Richtlinien zur Priorität/Außerkraftsetzung von Anfragen.

  • RADIUS_REQ_DEFAULT

    Standardwarteschlange für Anforderungsrichtlinien.

  • RADIUS_RES_OVERRIDE

    Warteschlange für Antwortrichtlinien zur Priorität/Außerkraftsetzung.

  • RADIUS_RES_DEFAULT

    Standardwarteschlange für Antwortrichtlinien.

Spezifische RADIUS-Rewrite-Ausdrücke:

  • RADIUS.NEW_AVP

    Gibt den angegebenen RADIUS-AVP als Zeichenfolge zurück.

  • RADIUS.NEW_AVP_INTEGER32

    Gibt den angegebenen RADIUS-AVP als Ganzzahl zurück.

  • RADIUS.NEW_AVP_UNSIGNED32

    Gibt den angegebenen RADIUS-AVP als Ganzzahl ohne Vorzeichen zurück.

  • RADIUS.NEW_VENDOR_SPEC_AVP(<ID>, <definition>)

    Fügt der Verbindung die angegebenen erweiterten herstellerspezifischen AVPs hinzu. Ersetzen Sie durch eine lange Zahl. <ID> <definition>Ersetzen Sie den AVP durch eine Zeichenfolge, die die Daten enthält.

  • RADIUS.REQ.AVP_START

    Gibt die Position zwischen dem Ende des RADIUS-Headers und dem Anfang der AVPs zurück. Wird in Rewrite-Aktionen verwendet.

    Beispiel:

    add rewrite action insert1 insert_after radius.req.avp_start radius.new_avp(33, "NEW AVP")
<!--NeedCopy-->
  • RADIUS.REQ.AVP_END

    Gibt die Position am Ende der Radius-Nachricht (oder mit anderen Worten am Ende aller AVPs) in der Radius-Nachricht zurück. Wird verwendet, wenn Rewrite-Aktionen ausgeführt werden.

    Beispiel:

    add rewrite action insert2 insert_before radius.req.avp_end "radius.new_avp(33, "NEW AVP")"
<!--NeedCopy-->
  • RADIUS.REQ.AVP_LIST

    Gibt die Position am Anfang der AVPs in einer RADIUS-Nachricht und die Länge der RADIUS-Nachricht ohne den Header zurück. Mit anderen Worten, gibt alle AVPs in einer RADIUS-Nachricht zurück. Wird verwendet, um Rewrite-Aktionen auszuführen.

    Beispiel:

    add rewrite action insert3 insert_before_all radius.req.avp_list "radius.new_avp(33, "NEW AVP")" -search "avp(33)"
<!--NeedCopy-->

Gültige Rewrite-Action-Typenfür RADIUS:

Die Rewrite-Aktionstypen, die mit RADIUS-Ausdrücken verwendet werden können, sind:

  • INSERT_AFTER
  • INSERT_BEFORE
  • INSERT_AFTER_ALL
  • INSERT_BEFORE_ALL
  • Löschen
  • DELETE_ALL
  • REPLACE
  • REPLACE_ALL

Alle INSERT_ actions können verwendet werden, um einen RADIUS-AVP in eine RADIUS-Verbindung einzufügen.

Anwendungsfälle

Im Folgenden finden Sie Anwendungsfälle für RADIUS mit Rewrite.

Den Benutzernamen AVP umschreiben

Um die Rewrite-Funktion so zu konfigurieren, dass die Zeichenfolge Domain\ string aus dem RADIUS-Benutzernamen AVP entfernt wird, erstellen Sie zunächst eine REWRITE-REPLACE-Aktion, wie im Beispiel unten gezeigt. Verwenden Sie die Aktion in einer Rewrite-Richtlinie, die alle RADIUS-Anforderungen auswählt. Binden Sie die Richtlinie an einen globalen Bindungspunkt. Wenn Sie dies tun, legen Sie die Priorität auf die entsprechende Stufe fest, damit alle Blockier- oder Ablehnungsrichtlinien zuerst wirksam werden. Stellen Sie jedoch sicher, dass alle Anfragen, die nicht blockiert oder abgelehnt wurden, neu geschrieben werden. Setzen Sie den Goto-Ausdruck (GoToPriorityExpr) auf NEXT, um die Richtlinienauswertung fortzusetzen, und hängen Sie die Richtlinie an die RADIUS_REQ_DEFAULT-Warteschlange an.

Beispiel:

add rewrite action rwActRadiusDomainDel replace radius.req.user_name q/RADIUS.NEW_AVP(1,RADIUS.REQ.USER_NAME.VALUE.AFTER_STR(" "))/
add rewrite policy RadiusRemoveDomainPol true rwActRadiusDomainDel
<!--NeedCopy-->

Hinweis:

Die Rewrite-Richtlinie für RADIUS gilt nicht für einen virtuellen Gateway-Server. Wenn ein virtueller Gateway-Server für den Lastenausgleich verwendet wird, muss RADIUS konfiguriert und die Rewrite-Richtlinie muss an einen virtuellen RADIUS-Lastenausgleichsserver gebunden werden.

Einen herstellerspezifischen AVP einfügen

Um die Rewrite-Aktion so zu konfigurieren, dass ein herstellerspezifisches AVP eingefügt wird, das den Inhalt des MSISDN-Feldes enthält, erstellen Sie zunächst eine INSERT-Aktion zum Umschreiben, die das MSISDN-Feld in die Anfrage einfügt. Verwenden Sie die Aktion in einer Rewrite-Richtlinie, die alle RADIUS-Anforderungen auswählt. Binden Sie die Richtlinie an eine globale Richtlinie, indem Sie die Priorität auf eine entsprechende Ebene und die anderen Parameter festlegen, wie im folgenden Beispiel gezeigt.

Beispiel:

add rewrite action rwActRadiusInsMSISDN insert_after radius.req.avp_start RADIUS.NEW_VENDOR_SPEC_AVP(<VENDOR ID>, "RADIUS.NEW_AVP(<Attribute Code>, <MSISDN>)")
add rewrite policy rwPolRadiusInsMSISDN true rwActRadiusInsMSISDN
bind rewrite global rwPolRadiusInsMSISDN 100 NEXT -type RADIUS_REQ_DEFAULT
<!--NeedCopy-->
RADIUS-Unterstützung für die Rewrite-Funktion