我希望可以从我的家庭网络外部访问我的 MQTT 代理,但我不太愿意在防火墙中打开一个端口。我想避免使用我的家庭 IP。
在家里有一个未加密的开放代理非常方便,但是如果我要公开它,那将不起作用。我还有什么其他选择?
我希望可以从我的家庭网络外部访问我的 MQTT 代理,但我不太愿意在防火墙中打开一个端口。我想避免使用我的家庭 IP。
在家里有一个未加密的开放代理非常方便,但是如果我要公开它,那将不起作用。我还有什么其他选择?
如果您不想转发端口,您基本上有 3 个选项。
但是将端口转发到正确配置的(与云代理大致相同)并不是真正的风险。
由于代理是服务器,您必须至少打开一个端口供客户端连接。
因此,您的问题成为在 Internet 上公开服务的特例。
这是通过 DMZ 完成的,通过代理或其他方式强制执行比默认服务更严格的身份验证。如果您的代理位于云端,那只会将您的 DMZ 扩展到云端。
您最简单的方法可能是强化您的代理(禁用匿名客户端)并限制可以通过防火墙连接到它的人(仅允许某些客户端 IP 地址,如果您事先知道它们)。
@hardillb 给出了一个很好的答案,但让我尝试添加一些细节,增加一些“现实生活”的感觉:
连接到公共经纪人
主机:broker.hivemq.com
端口:1883
Websocket 端口:8000
选择最适合您的客户端,并将其用于与公共 MQTT 代理的内部代理互连。例如,您的 C 客户端可能是Paho MQTT。客户端支持 SSL/TLS,因此您的安全性保持在高水平。
Paho MQTT 嵌入式可以是您外部设备的选择。
HiveMQ 具有即用即付许可政策,因此您可以谨慎考虑。无论如何,您可以查看此页面以获取可用云和测试可用 MQTT 代理的列表。