Citrix NetScaler – Reverse Proxy with WebSocket

Hallo Freunde der Sonne,

eine kurze Dokumentation einer kleinen Aufgabe: das Weiterleiten einer Website – die WebSocket verwendet.
Im Beispiel die Software: Mattermost.

Citrix NetScaler – Reverse Proxy with WebSocket

Quellen

Voraussetzungen

  1. Zugriff auf das Zielsystem intern (bei uns ein eigenes Netzwerk zum Kunden)
  2. Website erreichbar Überwachung (https-evc)
  3. Zertifikat bereits in den NetScaler importiert (Zertifikat, privater Schlüssel, CA)

Anleitung

Folgende Objekte müssen in dieser Reihenfolge (da aufeinander gründend) angelegt werden.

  1. Traffic-Management/Load Balancing/Server – das Zielobjekt als IP
    Name: _KUNDE_DIENSTNAME, Beispiel: _KUNDE_MATTERMOST
  2. Traffic-Management/Load Balancing/Service Groups – Sammlung der Server die den selben Dienst anbieten,
    als Monitor ob die Quelldienste erreichbar sind verwenden wir: https-ecv
    Name: _PROTOKOLL_KUNDE_DIENSTNAME, Beispiel: _HTTPS_KUNDE_MATTERMOST (Typ SSL)
  3. System/Profiles/HTTP Profiles – hier kann das Profil WebSocketSSL angelegt werden,
    einfach ganz unten in den Features folgende Option aktivieren:
    Enable WebSocket connections
  4. Traffic-Management/Load Balancing/Virtual Servers – Freigabe des Dienstes für die Farm,
    bei uns „non addressable“ – da wir kein Portforwarding sondern den Zugriff über einen Content-Switch wollen (mehrere Dienste über selben Port/IP),
    hier muss ein Zertifikat gesetzt werden,
    hier kann ein Profil für WebSocket verwendet werden,
    Name: _LB_PROTOKOLL_KUNDE_DIENSTNAME, Beispiel: _LB_HTTPS_KUNDE_MATTERMOST
  5. Traffic-Management/Content Switching/Actions – Weiterleitung einen LoadBalancer als Aktion
    Name: _AC_PROTOKOLL_KUNDE_DIENST, Beispiel: _AC_HTTPS_KUNDE_MATTERMOST
  6. Traffic-Management/Content Switching/Policies – Wann findet die Weiterleitung statt, deshalb eine Richtlinie mit folgendem
    Filter: Expression: HTTP.REQ.HOSTNAME.EQ(„mattermost.kunde.tld“)
    und der entsprechenden Aktion zur Weiterleitung zum korrekten Dienst.
    Name: _POL_PROTOKOLL_KUNDE_DIENST, Beispiel: _POL_HTTPS_KUNDE_MATTERMOST
  7. Traffic-Management/Content Switching/Virtual Servers – Freigabe nach außen über Content-Switch außen,
    muss eine Online-IP angegeben werden,
    hier werden die Policies angehängt,
    hier muss ein Zertifikat gesetzt werden,
    hier kann ein Profil für WebSocket verwendet werden,
    pro Kunde wollen wir zum besseren Nachverfolgen eine eigenen Online-IP, also einen eigenen CS,
    Name: _CS_TRAFFICDOMAIN_PROTOKOLL_KUNDE, Beispiel: _CS_TD0_HTTPS_KUNDE

In Bildern zur Vereinfachung.

  1. Traffic-Management/Load Balancing/Server

  2. Traffic-Management/Load Balancing/Service Groups


  3. System/Profiles/HTTP Profiles


  4. Traffic-Management/Load Balancing/Virtual Servers



  5. Traffic-Management/Content Switching/Actions

  6. Traffic-Management/Content Switching/Policies


  7. Traffic-Management/Content Switching/Virtual Servers