在家庭服务器上设置 Mosquitto

Setting up Mosquitto on home server

我正在努力将我在 Centos7 家庭服务器上设置的 Mosquitto 通过我的路由器暴露给外部互联网。

Mosquitto 在我的本地主机上运行良好,在家庭服务器上运行 post 1883。我能够 pub/sub,它正在侦听端口 127.0.0.1:1883 (tcp)

我家的路由器有一个动态 IP(目前),比如 76.43.150.206。在路由器上,我将 1883 端口作为两个 internal/external 端口转发到我的家庭服务器,比如 192.168.1.100.

在 mosquitto.conf 文件中,我只有一行 "listener 1883 76.43.150.206".

当我尝试 pub/sub 在外部计算机上使用 python 客户端作为 mqttc.connect("76.43.150.206", 1883) 时,它说连接被拒绝。

关于我做错了什么或如何让它工作的任何提示?顺便说一句,我对这个设置的理解是非常基本的,而且我几乎已经不再写博客了。

您不应该将外部地址放入 mosquitto 配置文件中。

你可能根本不应该有 listen 行,因为 mosquitto 会绑定到机器上所有可用的 IP 地址,它是 运行 默认端口 (1883)。

如果你真的必须使用 listen 指令(例如为了设置 SSL),那么它应该配置机器 运行 代理的内部 IP 地址,在这种情况下192.168.1.100 并使用不同的端口号,因此不会与默认

冲突
listen 1884 192.168.1.100

工作原理如下:

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 binds the server to all interfaces present.

You can uncomment the code to enable TLS for better security. But you'll have to configure the client to use the same as well..

2.) 端口转发路由器的1883端口号到机器运行代理IP的1883端口。

3.) 启动代理并测试您的客户端!