Para verificar se uma porta MQTT está aberta, rode nc -vz -w 5 broker.connectmq.com 1883 no Linux ou macOS, ou Test-NetConnection broker.connectmq.com -Port 1883 no PowerShell. "Succeeded" significa que uma conexão TCP foi aceita; "refused" ou "timed out" dizem onde olhar em seguida. Este guia mostra cada ferramenta, o que a saída significa e como diferenciar um problema de firewall de um problema do broker.
As portas a verificar
| Porta | Transporte | Uso típico |
|---|---|---|
| 1883 | MQTT sobre TCP | MQTT sem criptografia, desenvolvimento, redes confiáveis |
| 8883 | MQTT sobre TLS | Dispositivos em produção |
| 8083 / 8080 | MQTT sobre WebSocket | Navegadores em páginas http, ferramentas locais |
| 8084 / 8443 / 443 | MQTT sobre WebSocket seguro | Navegadores, redes restritivas |
Os números exatos dependem da configuração do broker — veja portas MQTT explicadas. Nos exemplos usamos broker.connectmq.com, que escuta em 1883, 8883, 8083 e 8084.
nc (netcat) — Linux e macOS
nc -z abre uma conexão TCP e fecha sem enviar dados; -v mostra o resultado e -w 5 desiste após cinco segundos.
nc -vz -w 5 broker.connectmq.com 1883Connection to broker.connectmq.com port 1883 [tcp/ibm-mqtt] succeeded!
nc: connect to broker.connectmq.com port 1883 (tcp) failed: Connection refused
nc: connect to broker.connectmq.com port 1883 (tcp) failed: Connection timed outO texto exato varia entre as variantes do netcat (o macOS mostra connectx to ..., algumas versões mostram open), mas os três resultados são sempre os mesmos. Verifique todas as portas MQTT de uma vez:
for p in 1883 8883 8083 8084; do nc -vz -w 5 broker.connectmq.com "$p"; doneNão tem nc? O Bash consegue abrir um socket TCP sozinho:
timeout 5 bash -c '</dev/tcp/broker.connectmq.com/1883' && echo open || echo closedtelnet
O telnet ainda vem instalado em muitos servidores e funciona no Windows depois de ativar o recurso Cliente Telnet:
telnet broker.connectmq.com 1883Trying 203.0.113.10...
Connected to broker.connectmq.com.
Escape character is '^]'.Connected to significa que a porta está aberta. Pressione Ctrl+] e digite quit para sair. Se em vez disso aparecer telnet: Unable to connect to remote host: Connection refused, nada aceitou a conexão; uma longa pausa seguida de Connection timed out aponta para um filtro no caminho. Não digite nada depois de conectar — MQTT é um protocolo binário, e o broker vai fechar a conexão quando o timeout de conexão expirar sem um pacote CONNECT válido. Isso é normal.
nmap — várias portas e seus estados
O nmap informa um estado claro para cada porta, o que o torna a melhor ferramenta para separar "closed" de "filtered":
nmap -Pn -p 1883,8883,8083,8084 broker.connectmq.comPORT STATE SERVICE
1883/tcp open mqtt
8883/tcp open secure-mqtt
8083/tcp open us-srv
8084/tcp filtered websnp| Estado | Significado |
|---|---|
open | Algo aceitou a conexão TCP |
closed | Host acessível, nada escutando (reset TCP) |
filtered | Sem resposta — um firewall descartou a sonda |
-Pn pula o ping inicial, que muitos hosts na nuvem bloqueiam. A coluna SERVICE é só um palpite do nmap pelo número da porta, não prova de que há MQTT ali.
PowerShell Test-NetConnection — Windows
Test-NetConnection broker.connectmq.com -Port 1883ComputerName : broker.connectmq.com
RemoteAddress : 203.0.113.10
RemotePort : 1883
TcpTestSucceeded : TrueEm caso de falha você verá WARNING: TCP connect to (203.0.113.10 : 1883) failed e TcpTestSucceeded : False. Use -InformationLevel Quiet para obter só True / False em scripts. Se um broker local não é acessível de outras máquinas, o Firewall do Windows Defender é uma causa frequente — veja MQTT e o firewall do Windows.
Lendo o resultado: firewall ou broker?
| Resultado | O que significa | Onde olhar |
|---|---|---|
| Open / succeeded | TCP funciona de ponta a ponta | Suba uma camada: TLS e MQTT (abaixo) |
| Connection refused | Host alcançado, sem listener nessa porta | O broker está rodando? Em qual endereço e porta ele escuta? |
| Timed out / filtered | Pacotes descartados em algum ponto | Firewall do host, security group na nuvem, proxy corporativo, IP errado |
| Nome não resolvido | Problema de DNS, não de porta | Confira o nome do host — veja testar DNS e rede |
Depois rode a mesma verificação a partir de uma segunda rede — o hotspot do celular, uma VM na nuvem, a máquina de um colega. Se a porta está aberta de fora, mas não do seu escritório, a sua rede a bloqueia (comum com 1883 e 8883 em redes corporativas e Wi-Fi de visitantes; veja MQTT atrás de um firewall corporativo). Se está fechada de todos os lugares, o problema está do lado do broker.
No host do broker: tem algo escutando?
Se você mesmo roda o broker e vê "refused", verifique o que está escutando:
sudo ss -ltnp | grep -E '1883|8883' # Linux
sudo lsof -iTCP -sTCP:LISTEN -n -P | grep -E '1883|8883' # macOSnetstat -ano | findstr :1883Um listener em 127.0.0.1:1883 aceita apenas conexões locais. O Mosquitto 2.x faz isso por padrão quando nenhum listener está configurado e registra Starting in local only mode. Connections will only be possible from clients running on this machine. Adicione um listener explícito (e autenticação) para aceitar clientes remotos:
listener 1883 0.0.0.0
allow_anonymous false
password_file /etc/mosquitto/passwdO gerador de configuração do Mosquitto monta um arquivo completo com listeners TLS e WebSocket. No Docker, confira também se a porta está publicada (-p 1883:1883).
Porta aberta e ainda sem conexão? Teste a próxima camada
Uma porta aberta prova apenas que o TCP funciona. Duas verificações rápidas cobrem as camadas acima:
openssl s_client -connect broker.connectmq.com:8883 -servername broker.connectmq.com </dev/nullmosquitto_pub -h broker.connectmq.com -p 1883 -t testmqtt/port-check/ping -m ok -dCom -d, um broker saudável mostra uma linha sending CONNECT seguida de received CONNACK (0). Um CONNACK diferente de zero é problema de autenticação ou de protocolo — consulte o código na ferramenta de reason codes. Se o TLS trava na 1883 ou o MQTT falha na 8883, você trocou a porta sem criptografia pela porta TLS. Erros de certificado são tratados em testar uma conexão TLS. Por fim, conecte-se com o cliente MQTT online para confirmar uma ida e volta completa de publish/subscribe.
Confirme com uma ida e volta MQTT real
Verificar uma porta leva segundos e divide o problema em dois: se o TCP falha, é questão de rede, firewall ou listener; se o TCP funciona, olhe para TLS, credenciais e o próprio MQTT. Faça a verificação a partir de mais de uma rede, leia "refused" e "timed out" de formas diferentes e você saberá onde procurar antes de abrir um único arquivo de log.
Perguntas frequentes
Como verifico se a porta 1883 está aberta?
Rode nc -vz -w 5 host 1883 no Linux ou macOS, ou Test-NetConnection host -Port 1883 no PowerShell do Windows. "succeeded" ou TcpTestSucceeded : True significa que uma conexão TCP foi aceita; refused ou timed out significa que não foi.
Qual a diferença entre connection refused e timed out?
Refused significa que o host respondeu, mas nada escuta nessa porta (ou um firewall rejeitou ativamente). Timed out significa nenhuma resposta, o que geralmente indica um firewall ou security group descartando pacotes em silêncio, um IP errado ou um problema de roteamento.
A porta está aberta, mas meu cliente MQTT ainda não conecta. Por quê?
Uma porta aberta prova apenas que o TCP funciona. A falha está então na camada TLS ou MQTT: porta errada para TLS vs TCP puro, problemas de certificado, uma porta WebSocket usada para MQTT puro, credenciais erradas ou um client ID rejeitado. Confira o reason code do CONNACK com mosquitto_pub -d.


