我让Mosquitto在本地服务器上运行,我的目标是拥有3个侦听器:
使用此配置的效果很好;
# 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
并且这将导致蚊帐记录健康;
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').
BUT ...我想确保只有140.238.70.128
上的客户端能够在端口8880上连接(TLS不是选项),所以我将IP地址添加到了配置中;
# Insecure MQTT
listener 8880 140.238.70.128
# End Insecure MQTT
但是这会使蚊子停下来,并且显示日志;
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
listen
指令只能采用本地代理运行的计算机的地址。这用于将套接字绑定到所需端口上的该地址。您不能将其用作远程计算机的筛选器,实际上无法配置端口以仅接受来自mosquitto
**]中特定IP地址的连接(或我知道的任何其他代理)的)。