Mosquitto MQTT - Não é possível conectar-se a partir do cliente externo

2

Ok, isso tem me dado um loop nos últimos dias.

Informações

Eu tenho o Mosquitto MQTT 1.4.10 com instalação habilitada para WebSockets e rodando no Ubuntu Server 14.4. Qualquer cliente na minha LAN pode se conectar ao broker usando a porta 1883 (mqtt) e 9001 (websockets) e tudo funciona bem. Agora também tenho um endereço IP público e o encaminhamento de porta de configuração em meu roteador DD-WRT para rotear 1883 e 9001 para o endereço do servidor. Desativei meu firewall ( sudo ufw disable ) e confirmei que ele está desativado.

Problema

  1. Eu conecto meu telefone com OwnTracks em execução no meu WiFi local. Eu entro no IP do servidor MQTT com a porta 1883 e ele funciona. Eu entro no IP público com a porta 1883 e funciona. Então eu me desconecto do meu WiFi local, então estou apenas usando minha rede celular. Eu tento me conectar novamente usando meu IP público e a porta 1883 e isso não funciona.

Verificando o log que vejo:

New connection from <<external_ip>> on port 1883
Socket error on client <unknown>, disconnecting

Verifique meu arquivo de configuração e tudo parece ser bom para:

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

Verificado para garantir que o Ubuntu esteja escutando nas portas especificadas:

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    

Uma última coisa que me surpreende é que eu posso conectar no 9001 usando sockets web de qualquer cliente conectado à minha LAN ou WAN. Eu pensaria que estar ligado ao endereço de loop-back local permitiria que ele aceitasse apenas conexões de si mesmo.

Alguma idéia de como conseguir que o 1883 aceite o cliente de fora da minha LAN?

    
por Tom 18.02.2017 / 05:07

0 respostas