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 Aktionstyp
replace_mqtt
.添加重写操作rwact1 replace_mqtt MQTT.CONNECT.CLIENTID "\"xyz\""
重写von Topic在der Veröffentlichungsanforderung über den Aktionstyp
replace_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:
重写Citrix ADC-Appliance。
启用ns特性
Fügen Sie eine rewriteaktion hinzu。
添加重写操作rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE
Fügen Sie eine Rewrite-Richtlinie hinzu。
添加重写策略pol1 MQTT.COMMAND.EQ(CONNECT) rwact1
配置MQTT-Lastausgleichsservers。
添加lb vserver v1 MQTT 1.1.1.1 1883
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:
传输控制协议(TCP)提供了一个负载均衡器。
我的负载均衡器古怪的der Benutzername durch den Zertifikatsnamen ersetzt。
死在安弗拉吉的书房里,mqtt broker weitergeleitet。
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(\“测试\”)”