Listenerの設定
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接続を待ち受けるネットワークサービスです。TCP/IPネットワーク上でクライアントとEMQX間の接続を確立・管理する上で重要な役割を果たします。
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に接続し、リアルタイムでデータを交換できます。
MQTT over WebSocketの仕組みや典型的な利用シーンについては、MQTT over WebSocket をご参照ください。
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クライアントと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クライアントはそのゾーンの設定を継承します。
詳細は設定ドキュメントのゾーンオーバーライドセクションをご参照ください。