EMQX 版本
EMQX 5.10.0
EMQX 安装部署方式
在群晖NAS的Docker容器中安装
EMQX 集群情况
未使用集群,仅单节点;
服务器(运行 EMQX 的机器)硬件配置
4核 16GB,CPU 型号: Intel Celeron N5095 [detail])
服务器操作系统和平台
DSM 7.1.1-42962 Update 2
使用的测试工具
arduino IDE
node-red
测试场景
EMQX安装在群晖NAS的Docker容器中,管理页面IP:192.168.2.3:18083;TCP服务器IP:192.168.2.3:1883和192.168.2.3:31883
端口映射:
18083/tcp → 0.0.0.0:18083
1883/tcp → 0.0.0.0:1883
8081/tcp → 0.0.0.0:8081
8883/tcp → 0.0.0.0:8883
31883/tcp → 0.0.0.0:31883
8083/tcp → 0.0.0.0:8083
8084/tcp → 0.0.0.0:8084
上级路由是openwrt,IP是192.168.2.1
端口转发规则:
监视:1883,8081,8083,8084,8085,8883,18083,31883,38831
目标:1883,8081,8083,8084,8085,8883,18083,31883,38831
测试工具是ESP-01S用arduino编写连接MQTT的程序:
// MQTT配置
const char* mqttServer = “herofence.eu.org”;
const int mqttPort = 1883;
具体问题
我在家里ESP-01S单片机连接openwrt(192.168.2.1)这个路由器时,我的ESP-01S这个单片机是能正常连接MQTT的TCP服务器的(192.168.2.3:1883)
但是如果在外网,我想用域名连接这个TCP服务器,比如:herofence.eu.org:1883,是连接不成功的
我做过的排除:
1、域名是正常的,我用herofence.eu.org:18083是能正常打开EMQX的管理页面
2、是所有的TCP服务器端口都不能连接,我自己新建了一个31883的也不能连接
3、我修改端口映射,本地端口:容器端口修改为41883:1883,herofence.eu.org:41883也是不能连接
4、我直接把1883改成51883,本地端口:容器端口修改为51883:51883,herofence.eu.org:51883也是不能连接
也就是说只要是TCP服务器端口,无论改成哪个都不行.
另外补充一下,我在外网用公网的服务器是能正常连接的:
// MQTT配置
const char* mqttServer = “broker emqx io”; //提示不能发链接,我把点去了
const int mqttPort = 1883;
串口打印:
192.168.229.178
Attempting MQTT connection…connected
Published discovery configs
请求大家帮帮我,因为我大部分给单片机做测试是在外地,如果不能用域名连家里的TCP服务器,就没法做测试了。谢谢大家了!