可以从外部访问MQTT代理,而无需在防火墙中打开端口?


9

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

在家里有一个未加密的开放经纪人是很方便的,但是如果我要公开它,那是行不通的。我还有什么其他选择?


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

1
@hardillb您的回答是一个很好的总结,但我认为对每个要点有更多详细信息可能会有所帮助。例如,如何在两个经纪人之间建立这样的桥梁。同样,如果有任何其他想法,我也很想得出来,这种悬赏的描述是我能找到的最好的描述,您的答案也将独立存在。也许我应该选择“没有得到足够关注”的原因。
Bence Kaulics

作为非专家,我同意第2点(这似乎是答案中最有价值的部分)可以进一步阐述。也许现在有指向操作方法的链接。
肖恩·霍利哈内

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

Answers:


10

如果您不希望转发端口,则基本上有3个选项。

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

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


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

3

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

因此,您的问题成为在Internet上公开服务的特殊情况。

这是通过DMZ完成的,可以通过代理或其他方式实施比默认服务更严格的身份验证。如果您的代理位于云中,那只会将DMZ扩展到云中。

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


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

3

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

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

连接到公共经纪人

主持人:broker.hivemq.com

港口:1883年

Websocket端口:8000

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

  2. 嵌入式Paho MQTT可以作为外部设备的选择。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.