我正在尝试使用RabbitMQ实现MQTT协议 . 我已经安装了RabbitMQ服务器并将MQTT端口从1883更改为80.我能够从网络发布和订阅服务器 . 但是当我尝试使用外部IP发布或订阅时,我收到“超时”错误 . 任何人都可以分享如何使用外部IP发布或订阅?
从网络拓扑结构的问题来看,这并不是很清楚,但我会猜测 .
您正在连接到专用IP范围(例如192.168 . *)的计算机上运行MQTT代理,您可以从同一网络上的另一台计算机连接到此计算机 .
您现在正尝试从此网络外部的计算机进行连接 . 您的私有IP范围网络是在做NAT的路由器后面 . 您需要在路由器上启用端口转发,以将所需端口(在本例中为端口80)上的所有流量发送到代理计算机 . 如何执行此操作取决于您的路由器 .
编辑:鉴于新的信息,有2种可能的选择:
您的RabbitMQ实例仅绑定到您的私有IP地址,请在rabittmq.conf文件中查找以 RABBITMQ_NODE_IP_ADDRESS= 开头的条目 . 如果您有一条评论,那么rabbitmq将默认绑定到所有地址 . 更多细节可以在这里找到:https://www.rabbitmq.com/configure.html
RABBITMQ_NODE_IP_ADDRESS=
您的计算机上启用了防火墙,该防火墙以静默方式将所有流量丢弃到公共IP地址上的端口80 . 我建议它默默地丢弃流量,因为你看到超时而不是连接拒绝消息 . 您还没有说过您正在使用的操作系统,因此我无法就如何更改防火墙规则提出建议
1 回答
从网络拓扑结构的问题来看,这并不是很清楚,但我会猜测 .
您正在连接到专用IP范围(例如192.168 . *)的计算机上运行MQTT代理,您可以从同一网络上的另一台计算机连接到此计算机 .
您现在正尝试从此网络外部的计算机进行连接 . 您的私有IP范围网络是在做NAT的路由器后面 . 您需要在路由器上启用端口转发,以将所需端口(在本例中为端口80)上的所有流量发送到代理计算机 . 如何执行此操作取决于您的路由器 .
编辑:鉴于新的信息,有2种可能的选择:
您的RabbitMQ实例仅绑定到您的私有IP地址,请在rabittmq.conf文件中查找以
RABBITMQ_NODE_IP_ADDRESS=
开头的条目 . 如果您有一条评论,那么rabbitmq将默认绑定到所有地址 . 更多细节可以在这里找到:https://www.rabbitmq.com/configure.html您的计算机上启用了防火墙,该防火墙以静默方式将所有流量丢弃到公共IP地址上的端口80 . 我建议它默默地丢弃流量,因为你看到超时而不是连接拒绝消息 . 您还没有说过您正在使用的操作系统,因此我无法就如何更改防火墙规则提出建议