Citrix ADC

MQTT-Unterstutzung毛皮重写

Die Rewrite-Funktion unterstützt das MQTT-Protokoll。Sie können Rewrite-Richtlinien so konfigureren, dass Sie Aktionen basierend auf den Parametern in den MQTT-Clientanforderungen und Serverantworten ausführen。

Rewrite-Aktion毛皮MQTT

修改für MQTT zeigt Die Änderungen an der MQTT- anforderung oder -Antwort an, bevor sie an einen Server oder Client gesendet wurde。

Ausdruck

添加重写动作

Rewrite-Typ毛皮MQTT

Abhängig vom Typ der verwendeten Regel zum Neuschreiben Ausdrücken werden die folgenden mqtt - rewrite typen unterstützt:

  • replace_mqtt
  • insert_before_mqtt
  • insert_after_mqtt
  • delete_mqtt
  • insert_mqtt

Rewrite-Ziel毛皮MQTT

mqtt -重写Richtlinienausdrücke, um den Teil der zu ändernden Anforderung (Ziel) und die durchzuführende Änderung (Zeichenfolgenausdruck) anzugeben:

  • 重写einer Client-ID im Verbindungspaket über den Aktionstypreplace_mqtt

    添加重写操作rwact1 replace_mqtt MQTT.CONNECT.CLIENTID "\"xyz\""

  • 重写von Topic在der Veröffentlichungsanforderung über den Aktionstypreplace_mqtt

    添加重写操作rwact1 replace_mqtt MQTT.PUBLISH.TOPIC "\"testing/test123\""

  • 重写zum Einfügen einer Eigenschaft mit dem Aktionstyp insert_mqtt。

    添加重写操作rwact1 insert_mqtt MQTT。NEW_PROPERTY(“prop1”、“测试”)

  • Löschen Sie ein Thema mit dem Aktionstyp delete_mqtt。

    添加重写操作rwact2 delete_mqtt MQTT.SUBSCRIBE.TOPIC_FILTERS.TOPIC(1)

Rewrite-Aktion毛皮MQTT

Im Folgenden sind die vordefinierten Rewrite-Aktionen für MQTT aufgeführt:

  • MQTT.NEW_KEEPALIVE(间隔)
  • MQTT.NEW_PACKET_IDENTIFIER (packetID)
  • MQTT.NEW_REASON_CODE (retCode)
  • MQTT。NEW_PUBLISH (topic_name有效负载)
  • MQTT.NEW_CONNECT_USERNAME(用户名)
  • MQTT。NEW_CONNECT_WILL_MESSAGE(will_topic, will_payload, will_Qos, will_retain)
  • MQTT。NEW_TOPIC(主题、qos)
  • MQTT.NEW_TOPIC(主题)
  • MQTT。NEW_PROPERTY(关键字,值)

贝斯皮尔für die vordefinierte Rewrite-Aktion

添加重写操作rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE(90)

贝斯皮尔für die benutzerdefinierte rewriteaktion

添加重写操作rwact1 replace_mqtt MQTT.CONNECT.USERNAME“\”user1“”

Rewrite-Richtlinie毛皮MQTT

Eine Rewrite-Richtlinie für MQTT besteht aus einer Regel und einer Aktion。思citrix ADC-Appliance auszuführende Aktion。

Ausdruck

添加重写策略 <改写规则> <改写动作>

Beispiel

添加重写操作insert_mqtt_username ("user1")

添加重写策略rewrite_mqtt_username "MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.USERNAME.LENGTH.EQUALS(0) insert_mqtt_username

Bindungspunkte毛皮MQTT

Sie können eine Rewrite-Richtlinie global orderan einen bestimmten virtuellen Lastausgleichsserver oder virtuellen内容切换服务器绑定。Im Folgenden sind die globalen Bindepunkte:

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_RES_DEFAULT
  • MQTT_RES_OVERRIDE

Ausdruck

  • 绑定重写global [-type MQTT_REQ_OVERRIDE | MQTT_REQ_DEFAULT | MQTT_RES_OVERRIDE | MQTT_RES_DEFAULT]

  • bind lb|cs vserver -policyName -priority -type REQUEST|RESPONSE

Beispiel

  • 绑定重写全局pol1 10 -type MQTT_REQ_DEFAULT

  • add/bind lb vserver v1 -policyName pol1 -type reqUEST -priority 10

配置figureeren einer Rewrite-Richtlinie für MQTT

Um eine rewriterichtlinie zu konfigureren, führen Sie die Schritte aus und geben Sie die Befehle an der eingabeauforderung ein:

  1. 重写Citrix ADC-Appliance。

    启用ns特性

  2. Fügen Sie eine rewriteaktion hinzu。

    添加重写操作rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE

  3. Fügen Sie eine Rewrite-Richtlinie hinzu。

    添加重写策略pol1 MQTT.COMMAND.EQ(CONNECT) rwact1

  4. 配置MQTT-Lastausgleichsservers。

    添加lb vserver v1 MQTT 1.1.1.1 1883

  5. binen Sie die rewritelinie global order a einen best estimmten virtuellen Lastausgleichsserver。

    绑定重写全局pol1 10 -type MQTT_REQ_DEFAULT

    add/bind lb vserver v1 -policyName pol1 -type REQUEST -priority 10

Anwendungsfall 1: Ersetzen Sie den Benutzernamen in der MQTT CONNECT-Nachricht durch den Zertifikatsnamen

行政长官kann eine mqtt -重写richtlinie konfigureren, um den Benutzernamen durch den Zertifikatsnamen des Clients zu ersetzen。

贝斯彼尔中的背叛。Die Clientanfrage hat eineMQTT连接Nachricht, die den Benutzernamen als“admin”enthält。Dieser Benutzername muss durch die Seriennummer (16-stellig) ersetzt werden, die aus dem Clientzertifikat (Zertifikatsname) extrahiert wird。

Die folgende Abbildung zeigt den Arbeitsablauf:

Anwendungsfall 1

  1. 传输控制协议(TCP)提供了一个负载均衡器。

  2. 我的负载均衡器古怪的der Benutzername durch den Zertifikatsnamen ersetzt。

  3. 死在安弗拉吉的书房里,mqtt broker weitergeleitet。

  4. Dieser neue Benutzername wird für die Autorisierung über die Webhook-Nutzlast verwendet。

Sample-Konfiguration

添加重写操作mqtt_rw_unameact1 replace_mqtt MQTT.CONNECT.USERNAME CLIENT.SSL.CLIENT_CERT.SERIALNUMBER

添加重写策略mqtt_rw_uname_pol1 "MQTT.COMMAND.EQ(CONNECT)" mqtt_rw_unameact1

bind cs vserver mqtt_frontend_cs -policyName mqtt_rw_uname_pol1 -priority 10 -gotoPriorityExpression END -type REQUEST

Anwendungsfall 2: Abonnement für ein neues THEMA bereitstellen

行政长官kann ein Abonnement für ein neues THEMA bereitstellen。贝斯彼尔中的背叛。Eine kundenanfraage hat in Abonnement für THEMA 1。行政长官kann eine rerewrite richtlinie konfigureren, um ein Abonnement für ein neues THEMA 2 bereitzustellen。Das Abonnement kann davor oder danach eingefügt werden。

Sample-Konfiguration

  • 添加重写动作act2 insert_before_mqtt MQTT. topic_filters . topic (1) MQTT。NEW_TOPIC(话题二,2)

  • 添加重写策略policy2”MQTT.COMMAND.EQ(SUBSCRIBE) && MQTT.SUBSCRIBE。TOPIC_FILTERS.TOPIC.CONTAINS act2(\“测试\”)”

MQTT-Unterstutzung毛皮重写