"Connessione rifiutata" vs "Nessuna route verso l'host"


20

Ho un server Apache in esecuzione su un server:

[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
....

Tuttavia, quando provo a connettermi all'host locale ricevo "Connessione rifiutata":

[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.

Lo stesso succede quando provo a connettermi all'indirizzo IP locale:

[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.

D'altra parte, quando provo lo stesso da un altro computer nella stessa rete, ricevo un errore diverso "Nessun percorso verso l'host":

[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.

Perché ricevo questi errori? E cosa devo fare per essere in grado di connettermi al server http sia dallo stesso computer che da altri computer nella rete?

AGGIORNAMENTI: in base ai commenti e alle risposte, ecco alcune ulteriori informazioni:

[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          

Puoi traceroute 132.70.6.157da entrambi i server e confrontare l'output?
Werner Henze,

1
443 sono le porte SSL (https). Controlla la tua configurazione per assicurarti di ascoltare la porta http 80.
Mikpa,

Risposte:


13

Mostra l'output di netstat -lnp, così possiamo vedere a quali processi stanno effettivamente ascoltando a quali porte sul server e a quali indirizzi IP sono associati.

Per quanto riguarda il secondo computer, la sua connettività di rete sembra interrotta. netstat -rnfornirà alcune informazioni sul problema lì.

Per fornire consigli migliori, sono necessari maggiori dettagli sulla configurazione generale della rete e sulla configurazione IP su entrambi i computer.

Modificare:

Devi modificare la configurazione di Apache in modo che sia un server HTTP, non un server SSL. I file di configurazione si trovano in / etc / apache2 il più delle volte.

Le informazioni sulla configurazione IP e sulla configurazione di rete sono ancora necessarie per analizzare l'altro problema. Le informazioni traceroute non hanno rivelato nulla.


In effetti, non esiste alcun processo che ascolta la porta 80! Il server Apache è in ascolto sulla porta 443. Ma perché?
Erel Segal-Halevi,

@ErelSegalHalevi: in genere 80 è HTTP, 443 è HTTPS (a meno che non si modifichino tali porte predefinite). Quindi forse l'applicazione prevede solo HTTPS?
Olivier Dulac,

Grazie a netstat, abbiamo scoperto che questo era davvero un problema di configurazione in Apache.
Erel Segal-Halevi,

26

"Connessione rifiutata" significa che la macchina target ha rifiutato attivamente la connessione. Con la porta 80 come contesto, una delle seguenti cose è probabilmente la ragione:

  • Niente è in ascolto su 127.0.0.1:80 e 132.70.6.157:80
  • Niente è in ascolto su *: 80
  • Il firewall sta bloccando la connessione con REJECT

Quindi controlla la tua configurazione di Apache e iptables.

"Nessuna route verso l'host" si riferisce a un problema di rete. E ' non è una risposta dal computer di destinazione.


un problema di rete? quindi come può lo stesso dominio restituire "connessione rifiutata" per una e "nessuna route verso l'host" per un'altra porta, sullo stesso dominio?
phil294

Forse il tuo firewall o proxy sta bloccando l'altra porta, quindi è per questo che il problema di rete?
croraf

3

Ho trovato questo post che descrive il problema che stavo affrontando quando provavo a configurare una semplice pagina http usando nodejs su un nodo di calcolo di Public Cloud.

Questo comando ha funzionato per me:

iptables -F

Questo comando cancella cioè cancella le regole del firewall che sono installate all'interno del sistema Linux.

Avvertenza: poiché utilizzo il firewall distribuito che fa parte del VCN di Public Cloud, non ho utilizzato il firewall del mio sistema operativo. Nel caso in cui non si disponga di un firewall esterno, assicurarsi di aggiungere una regola firewall in iptables.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.