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セクションをご参照ください。