"Conexão recusada" vs "Nenhuma rota para hospedar"


20

Eu tenho um servidor Apache executando em um servidor:

[root@te-srv2 ~]# ps -ecf|grep httpd
root       698 32047 TS   19 10:45 pts/24   00:00:00 grep httpd
root     32081     1 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32083 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32084 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
....

No entanto, quando tento conectar-me ao host local, recebo "Conexão recusada":

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16--  http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

O mesmo acontece quando tento conectar-me ao endereço IP local:

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

Por outro lado, quando tento o mesmo em outro computador na mesma rede, recebo um erro diferente "Sem rota para hospedar":

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

Por que estou recebendo esses erros? E o que devo fazer para conectar-me ao servidor http a partir do mesmo computador e de outros computadores na rede?

ATUALIZAÇÕES: Com base nos comentários e respostas, aqui estão mais algumas informações:

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.082 ms  0.007 ms  0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.446 ms !X  0.431 ms !X  0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp        0      0 :::443                      :::*                        LISTEN      5756/httpd          

Você pode traceroute 132.70.6.157dos dois servidores e comparar a saída?
Werner Henze

1
443 são as portas SSL (https). Verifique sua configuração para garantir que você escute a porta http 80.
Mikpa

Respostas:


13

Mostre a saída de netstat -lnp, para que possamos ver quais processos estão realmente ouvindo quais portas no servidor e para quais endereços IP eles estão vinculados.

Em relação ao segundo computador, sua conectividade de rede parece interrompida. netstat -rndará algumas dicas sobre o problema lá.

Para dar melhores conselhos, são necessários mais detalhes sobre a configuração geral da rede e a configuração IP nos dois computadores.

Editar:

Você precisa alterar sua configuração do Apache para que seja um servidor HTTP, não um servidor SSL. Os arquivos de configuração estão localizados em / etc / apache2 na maioria das vezes.

As informações de configuração de IP e configuração de rede ainda são necessárias para analisar o outro problema. A informação do traceroute não revelou nada.


De fato, não há processo ouvindo a porta 80! O servidor Apache escuta na porta 443. Mas por que isso?
Erel Segal-Halevi

@ErelSegalHalevi: normalmente, 80 é HTTP, 443 é HTTPS (a menos que você altere essas portas padrão). Então, talvez o aplicativo apenas espere HTTPS?
Olivier Dulac

Graças ao netstat, descobrimos que esse era realmente um problema de configuração no Apache.
Erel Segal-Halevi

26

"Conexão recusada" significa que a máquina de destino rejeitou ativamente a conexão. Com a porta 80 como contexto, é provável que uma das seguintes coisas:

  • Nada está escutando em 127.0.0.1:80 e 132.70.6.157:80
  • Nada está escutando *: 80
  • O firewall está bloqueando a conexão com REJECT

Portanto, verifique sua configuração do Apache e do iptables.

"Nenhuma rota para hospedar" refere-se a um problema de rede. É não uma resposta da máquina de destino.


um problema de rede? então como o mesmo domínio pode retornar "conexão recusada" para um e "nenhuma rota para hospedar" para outra porta, no mesmo domínio?
precisa saber é

Talvez o seu firewall ou proxy esteja bloqueando a outra porta, por isso é que há um problema de rede?
croraf 12/03

3

Encontrei esta postagem descrevendo o problema que eu estava enfrentando ao tentar configurar uma página http simples usando o nodejs em um nó de computação da nuvem pública.

Este comando fez o truque para mim:

iptables -F

Este comando libera, ou seja, limpa as regras de firewall configuradas dentro do sistema Linux.

Aviso: como eu uso o firewall distribuído que faz parte do Public Cloud VCN, eu realmente não usei o firewall do meu sistema operacional. Caso você não tenha um firewall externo, adicione uma regra de firewall no iptables.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.