Quais podem ser as razões dos erros recusados de conexão?
connection refused
Quais podem ser as razões deste erro?
11 answers
Pode haver muitas razões, mas as mais comuns são:
O porto não está aberto na máquina de destino.
A porta está aberta na máquina de destino, mas o seu backlog de conexões pendentes está cheio.
Um firewall entre o cliente e o servidor está bloqueando o acesso (também verifique firewalls locais).
Depois de verificar se há firewalls e se a porta está aberta, use o telnet para se ligar ao ip/porto para testar a conectividade. Isto remove quaisquer problemas potenciais da sua aplicação.
O erro significa que o SO do SO do soquete de escuta reconheceu o pedido de ligação de entrada, mas escolheu rejeitá-lo intencionalmente.
Assumindo que uma firewall intermédia não está a atrapalhar, só há duas razões (que eu saiba) para o sistema operacional rejeitar um pedido de ligação de entrada. Uma razão já foi mencionada várias vezes-a porta de escuta a que está ligada não está aberta.Há outra razão que ainda não foi mencionada-a a porta de escuta está de facto aberta e activamente utilizada, mas o seu atraso de pedidos de ligação em fila de espera atingiu o seu máximo, pelo que não há espaço disponível para o pedido de ligação em fila de espera nesse momento. O código do servidor não chamou accept () tempo suficiente para terminar a limpeza dos 'slots' disponíveis para novos itens da fila.
Espera um pouco e tenta a ligação outra vez. Infelizmente, não há maneira de diferenciar entre "o porto não está aberto de todo" e"o porto está aberto, mas muito ocupado agora". Ambos usam o mesmo código de erro genérico.Se tentar abrir uma ligação TCP a outra máquina e ver o erro "ligação recusada", significa que
-
Enviaste um pacote de SYN TCP para a outra máquina.
- então você recebeu um pacote TCP RST em resposta.
O primeiro é um pouco no pacote TCP, o que indica que a ligação deve ser reposta. Normalmente isso significa que o outro host recebeu a sua tentativa de conexão e está ativamente recusando a sua conexão TCP, mas às vezes uma firewall pode intervir bloqueie o seu pacote de SYN TCP e envie um RST TCP de volta para você.
Ver https://tools.ietf.org/html/rfc793 Página 69:
ESTADO RECEBIDO PELA SYN
If the RST bit is set If this connection was initiated with a passive OPEN (i.e., came from the LISTEN state), then return this connection to LISTEN state and return. The user need not be informed. If this connection was initiated with an active OPEN (i.e., came from SYN-SENT state) then the connection was refused, signal the user "connection refused". In either case, all segments on the retransmission queue should be removed. And in the active OPEN case, enter the CLOSED state and delete the TCB, and return.
A ligação recusada significa que a porta a que está a tentar ligar não está realmente aberta.
Por isso, ou está a ligar-se ao endereço IP errado, ou ao porto errado, ou o servidor está a ouvir no Porto errado, ou não está realmente a correr.
Um erro comum não é especificar o número do porto ao ligar ou ligar-se na ordem de 'bytes' da rede...
Verifica no lado do servidor que ele está a ouvir na porta 2080. Primeiro tente confirmá-lo na máquina do servidor, emitindo telnet para esse porto:
Telnet localhost 2080
Se está a ouvir, é capaz de responder.Embora não pareça ser o caso da sua situação, por vezes um erro de conexão recusado também pode indicar que há um conflito de endereço ip na sua rede. Você pode procurar por possíveis conflitos ip executando:
arp-scan -I eth0 -l | grep <ipaddress>
E
arping <ipaddress>
1.Verifique o estado do seu servidor.
2.Verifique o estado do Porto.
Por exemplo 3306 netstat -nupl|grep 3306
.
3.Verifiquem as firewalls. Por exemplo, adicionar 3306
vim /etc/sysconfig/iptables
# add
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
Chrome = > Settings => Change proxy settings => LAN Settings = > check Bypass proxy server for local addresses.
Em Ubuntu, Tenta
sudo ufw allow <port_number>
para permitir o acesso de firewall ao seu servidor e db.
wsock32.dll
não foi encontrado. A chamada continuou retornando um {[[2]} mas a razão era que o dll winsock não estava carregado.
No final, lancei o monitor de processo do Synternals e notei que ele procurava o dll 'em todo o lado', mas não o encontrei.
As falhas silenciosas são grandes!