如何在 Linux 服务器中设置 mosquitto 公共代理?

物联网 MQTT 蚊子 linux
2021-06-02 08:04:27

我有运行公共 ip 的 linux 服务器。我已经使用以下命令设置了 mosquitto 代理。

apt-get install mosquitto
apt-get install libmosquitto-dev
apt-get install mosquitto-clients

我的代理正在 linux 服务器上运行。我正在侦听端口 1883。当我尝试使用以下命令在服务器中运行它时,它工作正常。

mosquitto_sub -h localhost -t "mqtt" -v
mosquitto_pub -h localhost -t "mqtt" -m "Testing"

但是当我尝试从家庭网络访问此代理时,它无法从外部工作。我正在尝试将 MQTTlens 作为测试代理的工具。

1个回答

如果我理解您的问题没有错,您正在尝试通过与代理不在同一网络上的设备连接到代理。

如果是这种情况,那么问题是 MQTT 代理仅存在于您的专用网络中,即使您知道公共 IP,因为公共 IP 地址由路由器上的 NAT 处理,它也不是公开的。

要使您的代理公开,您需要在路由器中转发端口 1883,以便将该端口上的任何请求转发到运行您的代理的设备。您可以在线查看如何在您的特定路由器型号上进行端口转发。

Tl; dr转发您在路由器上侦听的端口,然后使用公共IP进行连接。