This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
MQTT 支持重写
重写功能支持 MQTT 协议。您可以配置重写策略以根据 MQTT 客户端请求和服务器响应中的参数执行操作。
重写 MQTT 的操作
MQTT 的重写操作指示在将 MQTT 请求或响应发送到服务器或客户端之前对其所做的更改。
表达式:
add rewrite action <name> <rewrite_type> <target> <rewrite_action>
重写 MQTT 的类型
根据所使用的重写表达式规则的类型,支持以下 MQTT 重写类型:
replace_mqtt
insert_before_mqtt
insert_after_mqtt
delete_mqtt
insert_mqtt
重写 MQTT 的目标
在以下示例示例中,MQTT 重写功能使用策略表达式来指示要修改的请求部分(目标)和要执行的修改(字符串表达式):
-
使用
replace_mqtt
操作类型重写连接数据包中的客户端 ID。add rewrite action rwact1 replace_mqtt MQTT.CONNECT.CLIENTID "\"xyz\""
-
使用
replace_mqtt
操作类型重写发布请求中的主题。add rewrite action rwact1 replace_mqtt MQTT.PUBLISH.TOPIC "\"testing/test123\""
-
重写以使用 insert_mqtt 操作类型插入属性。
add rewrite action rwact1 insert_mqtt MQTT.NEW_PROPERTY("prop1", "test")
-
使用 delete_mqtt 操作类型删除主题。
add rewrite action rwact2 delete_mqtt MQTT.SUBSCRIBE.TOPIC_FILTERS.TOPIC(1)
重写 MQTT 的操作
以下是 MQTT 的预定义重写操作:
MQTT.NEW_KEEPALIVE(interval)
MQTT.NEW_PACKET_IDENTIFIER(packetID)
MQTT.NEW_REASON_CODE(retCode)
MQTT.NEW_PUBLISH(topic_name, payload)
MQTT.NEW_CONNECT_USERNAME(username)
MQTT.NEW_CONNECT_WILL_MESSAGE(will_topic, will_payload, will_Qos, will_retain)
MQTT.NEW_TOPIC(topic, qos)
MQTT.NEW_TOPIC(topic)
MQTT.NEW_PROPERTY(key, value)
预定义重写操作的示例:
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE(90)
用户定义的重写操作示例:
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.USERNAME "\"user1\""
重写 MQTT 的策略
MQTT 的重写策略由规则和操作组成。该规则决定了对哪些 MQTT 流量进行重写,该操作决定了 NetScaler 设备要采取的操作。
表达式:
add rewrite policy <name> <rewrite_rule> <rewrite_action>
示例:
add rewrite action insert_mqtt_username insert_mqtt MQTT.NEW_CONNECT_USERNAME("user1")
add rewrite policy rewrite_mqtt_username "MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.USERNAME.LENGTH.EQUALS(0) insert_mqtt_username
MQTT 的绑定积分
您可以全局绑定重写策略,也可以绑定到特定的负载平衡虚拟服务器或内容交换虚拟服务器。 以下是全局绑定点:
MQTT_REQ_DEFAULT
MQTT_REQ_OVERRIDE
MQTT_RES_DEFAULT
MQTT_RES_OVERRIDE
表达式:
-
bind rewrite global <policyName> <priority> [-type MQTT_REQ_OVERRIDE | MQTT_REQ_DEFAULT | MQTT_RES_OVERRIDE | MQTT_RES_DEFAULT]
-
bind lb|cs vserver <virtualServerName> -policyName <policyName> -priority <positiveInteger> -type REQUEST|RESPONSE
示例:
-
bind rewrite global pol1 10 -type MQTT_REQ_DEFAULT
-
add/bind lb vserver v1 -policyName pol1 -type reqUEST -priority 10
为 MQTT 配置重写策略
要配置重写策略,请按照以下步骤操作,然后在命令提示符下键入命令:
-
在 NetScaler 设备上启用重写功能。
enable ns feature REWRITE
-
添加重写操作。
add rewrite action rwact1 replace_mqtt MQTT.CONNECT.KEEPALIVE MQTT.NEW_KEEPALIVE(10)
-
添加重写策略。
add rewrite policy pol1 MQTT.COMMAND.EQ(CONNECT) rwact1
-
配置 MQTT 负载平衡虚拟服务器。
add lb vserver v1 MQTT 1.1.1.1 1883
-
将重写策略全局绑定或绑定到特定的负载平衡虚拟服务器。
bind rewrite global pol1 10 -type MQTT_REQ_DEFAULT
add/bind lb vserver v1 -policyName pol1 -type REQUEST -priority 10
用例 1:将 MQTT CONNECT 消息中的用户名替换为证书名称
管理员可以配置 MQTT 重写策略,将用户名替换为客户端的证书名称。
让我们来看一个例子。客户端请求包含 MQTT CONNECT
消息,其中包含用户名“admin”。必须将此用户名替换为从客户端证书(证书名称)中提取的序列号(16 位)。
下图显示了工作流程:
-
传输控制协议 (TCP) 请求被发送到负载均衡器。
-
在负载均衡器中,用户名将替换为证书名称。
-
请求将转发给 MQTT 经纪人。
-
此新用户名用于通过 webhook 有效负载进行授权。
配置示例:
add rewrite action mqtt_rw_unameact1 replace_mqtt MQTT.CONNECT.USERNAME CLIENT.SSL.CLIENT_CERT.SERIALNUMBER
add rewrite policy 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
用例 2:提供对新 TOPIC 的订阅
管理员可以提供对新 TOPIC 的订阅。让我们来看一个例子。客户端请求订阅了 TOPIC 1。管理员可以配置重写策略以提供对新 TOPIC 2 的订阅。可以在之前或之后插入订阅。
配置示例:
-
add rewrite action act2 insert_before_mqtt MQTT.TOPIC_FILTERS.TOPIC(1) MQTT.NEW_TOPIC(topic2, 2)
-
add rewrite policy policy2 “MQTT.COMMAND.EQ(SUBSCRIBE) && MQTT.SUBSCRIBE. TOPIC_FILTERS.TOPIC.CONTAINS(\"test\")" act2
共享
共享
This Preview product documentation is Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.