ADC

レスポンダーのMQTTサポート

レスポンダー機能は MQTT プロトコルをサポートします。受信した MQTT メッセージのパラメータに基づいてアクションを実行するようにレスポンダーポリシーを設定できます。

アクションは、新しい接続に対して次のいずれかで応答します。

  • DROP
  • RESET
  • NOOP
  • 新しい MQTT CONNACK レスポンスを開始するためのレスポンダーアクション。

MQTT のレスポンダーポリシーの設定

レスポンダー機能を有効にしたら、MQTT リクエストを処理するための 1 つ以上のアクションを設定する必要があります。次に、レスポンダーポリシーを設定します。レスポンダーポリシーをグローバルにバインドすることも、特定の負荷分散仮想サーバーまたはコンテンツスイッチング仮想サーバーにバインドすることもできます。

レスポンダーポリシーをグローバルにバインドするには、次のバインドポイントを使用できます。

  • MQTT_REQ_DEFAULT
  • MQTT_REQ_OVERRIDE
  • MQTT_JUMBO_REQ_DEFAULT
  • MQTT_JUMBO_REQ_OVERRIDE

レスポンダーポリシーをコンテンツスイッチングまたは負荷分散仮想サーバーにバインドするには、次のバインドポイントを使用できます。

  • REQUEST
  • MQTT_JUMBO_REQ (このバインドポイントはジャンボパケットにのみ使用されます)

CLI を使用して MQTT リクエストに応答するようにレスポンダーを設定するには

コマンドプロンプトで、次のコマンドを入力します。

レスポンダーアクションを設定します。

add responder action <actName> <actType>
<!--NeedCopy-->
  • actnameは、新しいアクションの名前に置き換えてください。名前の長さは 1 ~ 127 文字で、文字、数字、ハイフン (-)、および下線 (_) 記号を使用できます。
  • actTypeについては、レスポンダーアクションタイプを respondで置き換えてください。

例:

add responder action mqtt_connack_unsup_ver respondwith MQTT.NEW_CONNACK(132)
<!--NeedCopy-->

レスポンダーポリシーを設定します。NetScalerアプライアンスは、このレスポンダーポリシーで選択されたMQTTリクエストに応答します。

add responder policy <polName> <rule> <actname>
<!--NeedCopy-->
  • polnameは、新しいポリシーの名前に置き換えてください。
  • actnameは 、作成したアクションの名前の代わりに使用してください。

例:

add responder policy reject_lower_version "MQTT.HEADER.COMMAND.EQ(CONNECT) && MQTT.VERSION.LT(3)" mqtt_connack_unsup_ver
<!--NeedCopy-->

レスポンダーポリシーを特定の負荷分散仮想サーバーまたはコンテンツスイッチング仮想サーバーにバインドします。このポリシーは、宛先IPアドレスがその仮想サーバーのVIPであるMQTTリクエストにのみ適用されます。

bind lb vserver <name> -policyName <policy_name> -priority <priority>

bind cs vserver <name> -policyName <policy_name> -priority <priority>
<!--NeedCopy-->
  • policy_nameは 、作成したポリシーの名前の代わりに使用してください。
  • priorityには、ポリシーの優先度を指定します。

例:

bind lb vserver lb1 -policyName reject_lower_version -priority 50

bind cs vserver mqtt_frontend_cs -policyName reject_lower_version -priority 5
<!--NeedCopy-->

使用例 1: ユーザー名またはクライアント ID に基づいてクライアントをフィルタリングする

管理者は、MQTT CONNECT メッセージ内のユーザー名またはクライアント ID に基づいて接続を拒否するように MQTT レスポンダーポリシーを設定できます。

クライアント ID に基づいてクライアントをフィルタリングするための設定例

add policy patset filter_clients
bind policy patset filter_clients client1

add responder action mqtt_connack_invalid_client respondwith MQTT.NEW_CONNACK(2)

add responder policy reject_clients "MQTT.HEADER.COMMAND.EQ(CONNECT) && mqtt.connect.clientid.equals_any("filter_clients")" mqtt_connack_invalid_client

bind cs vserver mqtt_frontend_cs -policyName reject_clients -priority 5
<!--NeedCopy-->

使用例 2: ジャンボパケットを処理するための MQTT メッセージの最大メッセージ長を制限する

管理者は、メッセージの長さが特定のしきい値を超えた場合にクライアント接続を切断するように MQTT レスポンダーポリシーを設定したり、要件に基づいて必要なアクションを実行したりできます。

ジャンボパケットを処理するには、次のルールパターンのいずれかを含むレスポンダーポリシーがジャンボバインドポイントにバインドされます。

  • MQTT.MESSAGE_LENGTH
  • MQTT.COMMAND
  • MQTT.FROM_CLIENT
  • MQTT.FROM_SERVER

ジャンボバインドポイントにバインドされたポリシーは、ジャンボパケットについてのみ評価されます。

MQTT メッセージの最大メッセージ長を制限する設定例

set lb parameter -dropmqttjumbomessage no

add responder policy drop_large_message MQTT.MESSAGE_LENGTH.GT(100000) reset

bind cs vserver mqtt_frontend_cs -policyName drop_large_message -priority 10
<!--NeedCopy-->

この例では、 dropmqttjumbomessage パラメータは NO に設定されています。したがって、ADCアプライアンスは、長さが64,000バイトを超え、1,000,000バイト未満の長さのメッセージを処理します。長さが 1,00,000 バイトを超えるメッセージはリセットされます。