好的,在过去的几天里,这已经让我陷入了一个循环。
我有Mosquitto MQTT 1.4.10,启用了WebSocket并在Ubuntu Server 14.4上运行。 我局域网上的任何客户端都可以使用端口1883(mqtt)和9001(websockets)连接到代理,一切工作正常。 现在,我的DD-WRT路由器上还有一个公共IP地址和设置端口转发,以将1883和9001路由到服务器的地址。 我已禁用我的防火墙( sudo ufw禁用 ),并确认它被禁用。
检查我看到的日志:
New connection from <<external_ip>> on port 1883 Socket error on client <unknown>, disconnecting
检查我的configuration文件,并在那里看起来很好:
pid_file /var/run/mosquitto.pid persistence true persistence_location /var/lib/mosquitto/ log_dest file /var/log/mosquitto/mosquitto.log log_type all include_dir /etc/mosquitto/conf.d listener 1883 protocol mqtt listener 9001 127.0.0.1 protocol websockets
检查以确保Ubuntu正在侦听指定的端口:
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:2216 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:9001 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN tcp6 0 0 :::1883 :::* LISTEN tcp6 0 0 :::2216 :::* LISTEN
最后一件让我难过的事情是,我可以使用任何连接到局域网或广域网的客户端的networking套接字连接9001。 我认为绑定到本地环回地址将允许它只接受来自其自身的连接。
关于如何让1883从我的局域网外部接受客户端的任何想法?