EMQX TCP服务域名无法连接

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服务器,就没法做测试了。谢谢大家了!

我查看你的域名 herofence.eu.org 解析到了国内的一个ip地址,但是据我所知 eu.org 域名是无法备案的,未备案域名解析到大陆 ip 会被阻断;

另外还需要确认这个 ip 是你家宽带的独立公网ip吗?如果不是,那也是无法连接的。