我正在努力将我在Centos7家庭服务器上设置的Mosquitto暴露给外部互联网通过我的路由器。
Mosquitto在我的本地主机上运行正常,并在主页服务器上发布1883。我可以发布/ sub,它正在端口上监听为127.0.0.1:1883(tcp)
我的家用路由器有一个动态IP(现在),比如76.43.150.206。在路由器上我端口转发1883作为我的家庭服务器的内部/外部端口,比如说192.168.1.100。
在mosquitto.conf文件中,我只有一行"听众1883 76.43.150.206"。
当我尝试使用外部计算机上的python客户端发布/ sub作为mqttc.connect(" 76.43.150.206",1883)时,它表示连接被拒绝。
关于我做错了什么或如何让它运作的任何暗示?顺便说一句,我对这个设置的理解是非常基础的,而且我几乎一直在关注博客。
答案 0 :(得分:1)
您不应将外部地址放入mosquitto配置文件中。
你可能根本就没有listen
行,因为mosquitto将绑定到它使用默认端口运行的机器上的所有可用IP地址(1883)。
如果你真的必须使用listen
指令(例如,为了设置SSL),那么它应该配置运行代理的机器的内部IP地址,在这种情况下192.168.1.100
和使用不同的端口号,因此它不会与默认的
listen 1884 192.168.1.100
答案 1 :(得分:1)
以下是它的工作原理:
1。)将mosquitto.conf设置为
listener 1883 0.0.0.0
#cafile <path to ca file>
#certfile <path to server cert>
#keyfile <path to server key>
#require_certificate false
0.0.0.0将服务器绑定到所有存在的接口。
您可以取消注释代码以启用TLS以提高安全性。但是您必须将客户端配置为使用相同的..
2。)端口转发路由器的1883端口号到运行代理的机器的IP端口1883.
3。)启动经纪人并测试您的客户!