我有一个网页来控制覆盆子pi上的恒温器,当我尝试从远程客户端使用websockets时,我遇到了困难。然而,在LAN上似乎工作正常。我显然缺少一些东西(可能是基本的东西),但我似乎无法弄清楚它是什么。
pi的本地IP为192.168.1.134。网页(从apache服务器提供)具有URL http://192.168.1.134:8010/thermostat.html。该页面启动了一些javascript,然后尝试使用websockets通过ws://192.168.1.134:9000连接到pi的主程序。 (pi上的服务器正在运行libwebsockets)。 websocket出现了,似乎工作正常。然后我尝试通过http:\\23.239.99.99:8010\thermostat.html的远程客户端(一个关闭wifi的手机)进行连接。 html / js文件加载正常,但是Web套接字尝试连接到uri ws:\\23.239.99.99:9000和这个fials。
据我所知,NAT似乎配置正确:
name ext ext protocol int int ip addr interface
port port port port
start end start end
Thermostat3 8010 8010 TCP 8010 8010 192.168.1.134 eth3.1
Thermostat5 8000 8000 TCP/UDP 80 80 192.168.1.134 eth3.1
Thermostat_ws 9000 9000 TCP/UDP 9000 9000 192.168.1.134 eth3.1
我查了一下,路由器没有设置任何防火墙,我的调制解调器也没有。我没有在pi上安装防火墙(我检查过,并没有奇怪的iptables规则)。有谁知道我错过了什么?
---编辑---
我仍然坚持这一点。我打电话给我的ISP,他们向我保证他们的服务器上没有防火墙。有没有办法判断端口9000是否被阻止,以及由谁控制?