Listener Configuration
EMQXでは、リスナーはMQTTクライアントからのリクエストを受け取るために設定されます。EMQXは以下のメッセージ転送プロトコルをサポートしています。
- TCP: ポート
1883 - SSL: ポート
8883 - Websocketリスナー:
8083 - セキュアWebsocketリスナー:
8084
TIP
リスナーはダッシュボードの左側ナビゲーションメニューから Management -> Listeners をクリックして設定することも可能です。
設定ファイルからリスナーを設定する場合は、emqx.confではなくbase.hoconを使用することを推奨します。
これは、emqx.confに設定を記述すると、ダッシュボード経由での変更が一時的なものとなり、EMQX再起動時に失われるためです。
TIP
EMQXはカスタマイズニーズに応じた詳細な設定項目も提供しています。詳細はEMQX Enterprise Configuration Manualをご参照ください。
TCPリスナーの設定
TCPリスナーは特定のネットワークポートで着信TCP接続を待ち受けるネットワークサービスです。
クライアントとEMQX間のTCP/IPネットワーク上の接続確立および管理において重要な役割を果たします。
EMQXでTCPリスナーを設定するには、EMQXインストールディレクトリのetcフォルダ内にあるbase.hoconファイルにlisteners.tcpの設定項目を追加します。
例えば、ポート1883でTCPリスナーを有効化し、最大1,024,000の同時接続を許可する設定は以下の通りです。
listeners.tcp.default {
bind = "0.0.0.0:1883"
max_connections = 1024000
}ここで、
listeners.tcp.defaultはリスナーを有効化する設定で、defaultはリスナー名です。任意の名前に変更可能です。bindはリスナーのIPアドレスとポートを設定します。ここでは任意のIPアドレスからのポート1883への全ての着信を待ち受けます。max_connectionsはリスナーが許可する最大同時接続数を設定します。デフォルト値はinfinityです。
SSLリスナーの設定
SSLリスナーはSSL(Secure Sockets Layer)接続の着信を待ち受けるネットワークサービスです。
EMQXではクライアントとEMQX間のネットワークトラフィックを暗号化し、通信の安全性を確保するために使用されます。
EMQXでSSLリスナーを設定するには、etcフォルダ内のbase.hoconファイルにlisteners.sslの設定項目を追加します。
例えば、ポート8883でSSLリスナーを有効化し、最大1,024,000の同時接続を許可する設定は以下の通りです。
listeners.ssl.default {
bind = "0.0.0.0:8883"
max_connections = 1024000
ssl_options {
cacertfile = "etc/certs/cacert.pem"
certfile = "etc/certs/cert.pem"
keyfile = "etc/certs/key.pem"
verify = verify_none
fail_if_no_peer_cert = false
}
}ここで、
listeners.ssl.defaultはリスナーを有効化する設定です。bindはリスナーのIPアドレスとポートで、任意のIPアドレスからのポート8883への全ての着信を待ち受けます。max_connectionsはリスナーが許可する最大同時接続数で、デフォルトはinfinityです。ssl_optionsはリスナーのSSL/TLS設定で、以下のプロパティがあります。cacertfile: クライアント証明書の正当性を検証するためにリスナーが使用する信頼済みCA(認証局)証明書を含むPEMファイル。certfile: リスナー用のSSL/TLS証明書チェーンを含むPEMファイル。証明書がルートCAから直接発行されていない場合は、中間CA証明書をリスナー証明書の後に連結してチェーンを形成します。keyfile: SSL/TLS証明書に対応する秘密鍵を含むPEMファイル。verify: クライアント証明書の正当性を検証する場合はverify_peer、検証しない場合はverify_noneを設定します。fail_if_no_peer_cert:trueの場合、クライアントが証明書を送信しない(空の証明書を送る)と接続を失敗させます。falseの場合は、無効な証明書を送信した場合のみ失敗し、空の証明書は有効とみなします。
WebSocketリスナーの設定
WebSocketリスナーはWebSocket経由でメッセージを受信・処理するネットワークサービスです。
EMQXのWebSocketサポートにより、クライアントはWebSocketプロトコルを使ってEMQXに接続し、リアルタイムでデータを交換できます。
EMQXでWebSocketリスナーを設定するには、etcフォルダ内のbase.hoconファイルにlisteners.wsの設定項目を追加します。
例えば、ポート8083でWebSocketリスナーを有効化し、最大1,024,000の同時接続を許可する設定は以下の通りです。
listeners.ws.default {
bind = "0.0.0.0:8083"
max_connections = 1024000
websocket.mqtt_path = "/mqtt"
}ここで、
listeners.ws.defaultはリスナーを有効化する設定です。bindはリスナーのIPアドレスとポートで、任意のIPアドレスからのポート8083への全ての着信を待ち受けます。max_connectionsはリスナーが許可する最大同時接続数で、デフォルトはinfinityです。websocket.mqtt_pathはWebSocketのMQTTプロトコル用パスを設定し、デフォルトは/mqttです。
セキュアWebSocketリスナーの設定
セキュアWebSocketリスナーは、SSLまたはTLSプロトコルを使用してWebSocketクライアントとブローカー間のデータを暗号化するWebSocketリスナーです。
EMQXにおけるセキュアWebSocketリスナーは、WebSocketクライアントとEMQX間で交換される機密データを保護する重要なセキュリティ対策です。
EMQXでセキュアWebSocketリスナーを設定するには、etcフォルダ内のbase.hoconファイルにlisteners.wssの設定項目を追加します。
例えば、ポート8084でセキュアWebSocketリスナーを有効化し、最大1,024,000の同時接続を許可する設定は以下の通りです。
listeners.wss.default {
bind = "0.0.0.0:8084"
max_connections = 1024000
websocket.mqtt_path = "/mqtt"
ssl_options {
cacertfile = "etc/certs/cacert.pem"
certfile = "etc/certs/cert.pem"
keyfile = "etc/certs/key.pem"
}
}ここで、
listeners.wss.defaultはリスナーを有効化する設定です。bindはリスナーのIPアドレスとポートで、任意のIPアドレスからのポート8084への全ての着信を待ち受けます。max_connectionsはリスナーが許可する最大同時接続数で、デフォルトはinfinityです。websocket.mqtt_pathはWebSocketのMQTTプロトコル用パスを設定し、デフォルトは/mqttです。ssl_optionsはリスナーのSSL/TLS設定で、以下のプロパティがあります。cacertfile: クライアント証明書の正当性を検証するためにリスナーが使用する信頼済みCA(認証局)証明書を含むPEMファイル。certfile: リスナー用のSSL/TLS証明書チェーンを含むPEMファイル。証明書がルートCAから直接発行されていない場合は、中間CA証明書をリスナー証明書の後に連結してチェーンを形成します。keyfile: SSL/TLS証明書に対応する秘密鍵を含むPEMファイル。
リスナーと設定ゾーンの紐付け
EMQXの各リスナーはゾーンに紐付けられており、デフォルトではdefaultという論理ゾーンに設定されています。
リスナーが特定のゾーンに紐付けられると、そのリスナーに接続するMQTTクライアントはそのゾーンの設定を継承します。
詳細は設定ドキュメントのZone Overrideセクションをご参照ください。