我希望可以从家庭网络外部访问我的MQTT代理,但是我有点不愿意在防火墙中打开端口。而且我想避免使用我的家庭IP。

在家中使用未加密的开放代理非常方便,但是如果我要公开它,那是行不通的。我还有什么其他选择?

评论

@Bence Kaulics对我的答案遗漏了什么建议?

@hardillb您的回答是一个很好的总结,但我认为对每个要点有更多详细信息可能会有所帮助。例如。如何在两个经纪人之间建立这样的桥梁。同样,如果有任何其他想法,我也很想得出来,这种赏金描述是我能找到的最好的描述,您的答案也将独立存在。也许我应该选择“没有得到足够关注”的原因。
作为非专家,我同意可以对第二点(似乎是答案中最有价值的部分)进行详细说明。也许现在有指向操作方法的链接。

不幸的是,每种不同类型的代理都有不同的方式来配置网桥,因此不可能给出通用答案(与身份验证/ TLS设置类似)

#1 楼

如果您不希望转发端口,则基本上有3个选择。使用TLS和身份验证,以便其他人无法窃听或注入不需要的消息
使用云代理并在内部代理和云代理之间建立桥梁(您仍想在云代理上加密和设置用户名/密码) 。这样做的好处是,如果Internet连接断开,内部事物仍然可以正常工作。
所有外部设备上的VPN都可以访问您的家庭网络(但是,老实说,您可能必须打开其中一个VPN的端口或具有支持作为VPN服务器的路由器)

,但是将端口转发到正确配置的端口(与云代理大致相同)并不是真正的风险。 >

评论


我喜欢云家庭桥接的想法,它具有额外的好处,即如果我的本地代理退出,我的家庭网络之外的所有报告服务仍将正常运行。当本地代理返回在线状态时,它将获得“丢失”的数据。大! :)

–托马斯·詹森(Thomas Jensen)
17年7月7日在18:44

#2 楼

由于代理是服务器,因此必须打开至少一个端口以供客户端连接。

因此,您的问题就成了在Internet上公开服务的特殊情况。 >这是通过DMZ通过代理或其他方式实施的,以比默认服务更严格的身份验证。如果您的代理位于云中,那只会将DMZ扩展到云中。

您最简单的方法可能是加强代理(禁用匿名客户端)并限制可以通过防火墙连接到它的人(如果您事先知道某些客户端IP地址,则仅允许使用。)

评论


那是不正确的,我已经将本地经纪人与云经纪人联系起来。而且由于网桥连接是从我的家庭网络内部启动的,因此不需要打开端口。

–托马斯·詹森(Thomas Jensen)
17年9月15日在7:04

#3 楼

@hardillb提供了一个很好的答案,但让我尝试添加一些细节,添加一些“真实的”感觉:

选择一些公开的MQTT经纪人。 HiveMQ可能是一个很好的示例,您可以从描述如何连接到代理的试用页面开始:


连接到公共代理
主机:broker.hivemq。 com
端口:1883
Websocket端口:8000



选择最适合您的客户端,并将其用于与公共MQTT进行内部代理互连经纪人。例如,您的C客户端可以是Paho MQTT。客户端支持SSL / TLS,因此您的安全性始终处于较高水平。



HiveMQ拥有随用随付的许可政策,因此您可以谨慎考虑。无论如何,您可以查看此页面以获取可用的云列表和测试可用的MQTT代理。