Distinguindo “recusado” de “nunca alcançado”
bound: 0 sozinho não distingue “ninguém conectou agora” de “nenhum socket foi aberto”.
last_error é o que separa os dois, e ele limpa no momento em que um bind tem sucesso.
Um fornecedor não faz bind
host,port,usernameepasswordestão corretos.connections.transceivers,connections.transmittersouconnections.receiversé maior que zero. Um fornecedor com os três em zero não faz bind e não reporta erro.- Configurações de TLS batem com o que o provedor exige.
- O firewall permite tráfego de saída para o provedor.
- O provedor colocou seu IP de origem na allow-list, se isso for exigido.
O bind de um cliente é rejeitado
- A credencial é
type: SMPP. Uma credencial HTTP não faz bind, e a recusa não diz isso. - O cliente está usando o
systemIdepasswordconfigurados. - Nenhum limite de conexão foi excedido:
srv.maxConnections,srv.maxConnectionsPerIP,conf.maxConnectionsPerUser.default, ou o limite por usuário. - Se
allowedIpsestá configurado, o IP de origem do bind está nela.
O listener nunca abriu
Diferente de todos os casos acima: não é um bind rejeitado, e sim um socket que nunca foi criado. O gateway roda normalmente. Roteamento, tarifação, cobrança e conexões de fornecedor todos up, systemd reportandoactive, enquanto nenhum cliente consegue conectar.
O gateway não sai quando um listener não consegue tomar sua porta. Isso é de propósito: uma porta
ocupada não deve tirar um gateway inteiro do ar, e listeners TLS ou proxy muitas vezes nem estão
configurados. Então a evidência está em três lugares e não no exit status.
Em /ops/health:
A causa comum são dois gateways
Ou uma segunda instância configurada na mesma porta, ou a mesma instância rodando duas vezes sob dois nomes de unit. Que é o que umupdate com o --service-name errado costumava produzir.
1
Liste todas as units
systemctl list-units 'fireflo*' --all2
Compare o PID gerenciado com o que está segurando a porta
systemctl show <unit> -p MainPID. Uma JVM órfã segurando a porta é uma que o systemd não
gerencia mais.3
Pare o serviço, mate a órfã por PID, inicie de novo
Por PID, nunca por padrão de nome. Outras JVMs podem estar no host, e um kill por padrão já
derrubou serviços não relacionados no passado.
Relacionados
Servidores
Configurações de listener e o que cada uma faz.
Fornecedores
Conexões de saída, TPS e holding.