【发布时间】:2019-12-07 13:54:41
【问题描述】:
我在本地服务器上运行 Mosquitto,我的目标是拥有 3 个侦听器:
- 所有本地网络客户端在端口 1883 上无需 TLS 连接(端口 1883 已被路由器对公共关闭)
- 外部客户端使用 TLS 连接端口 8883
- 外部客户端在端口 8880 上不使用 TLS 进行连接
使用此配置可以正常工作;
# Local MQTT
listener 1883
# End Local MQTT
# Insecure MQTT
listener 8880
# End Insecure MQTT
# Secure MQTT
listener 8883
## This is standard and should always be this
cafile /etc/ssl/certs/DST_Root_CA_X3.pem
## These are from your installation of LE
certfile /home/pi/.node-red/certs/fullchain.pem
keyfile /home/pi/.node-red/certs/privkey.pem
## Force all clients in this listener to provide a valid certificate, change th$
require_certificate true
## Stop all unauthorised connections
allow_anonymous false
## Use password file
password_file /etc/mosquitto/passwordfile
这会产生健康的 Mosquitto 日志条目;
1575720819: Opening ipv4 listen socket on port 1883.
1575720819: Opening ipv6 listen socket on port 1883.
1575720819: Opening ipv4 listen socket on port 8883.
1575720819: Opening ipv6 listen socket on port 8883.
1575720819: Opening ipv4 listen socket on port 8880.
1575720819: Opening ipv6 listen socket on port 8880.
1575720820: New connection from 140.238.70.128 on port 8880.
1575719390: New client connected from 140.238.70.128 as telegraf (c1, k60, u'raspPi').
但是...我想确保只有140.238.70.128 的客户端能够连接到端口 8880(TLS 不是一个选项),所以我将 IP 地址添加到了配置中;
# Insecure MQTT
listener 8880 140.238.70.128
# End Insecure MQTT
但这会导致 Mosquitto 停止,并且日志显示;
1575720699: Opening ipv4 listen socket on port 1883.
1575720699: Opening ipv6 listen socket on port 1883.
1575720699: Opening ipv4 listen socket on port 8883.
1575720699: Opening ipv6 listen socket on port 8883.
1575720699: Opening ipv4 listen socket on port 8880.
1575720699: Error: Cannot assign requested address
我将不胜感激任何关于为什么这不起作用的建议或替代解决方案。
编辑。我还尝试将侦听器限制为 ipv4,但结果完全相同;
# Insecure MQTT
listener 8880 140.238.70.128
socket_domain ipv4
# End Insecure MQTT
【问题讨论】: