"Connexion refusée" vs "Pas de route vers l'hôte"


20

J'ai un serveur Apache fonctionnant sur un serveur:

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

Cependant, lorsque j'essaie de me connecter à l'hôte local, j'obtiens "Connexion refusée":

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

La même chose se produit lorsque j'essaie de me connecter à l'adresse 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'un autre côté, lorsque j'essaye la même chose à partir d'un autre ordinateur du même réseau, j'obtiens une erreur différente "Pas de route vers l'hôte":

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

Pourquoi ai-je ces erreurs? Et que dois-je faire pour pouvoir me connecter au serveur http à partir du même ordinateur et d'autres ordinateurs du réseau?

MISES À JOUR: Sur la base des commentaires et réponses, voici quelques informations supplémentaires:

[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          

Pouvez-vous traceroute 132.70.6.157des deux serveurs et comparer la sortie?
Werner Henze

1
443 correspond aux ports SSL (https). Vérifiez votre configuration pour vous assurer d'écouter le port http 80.
Mikpa

Réponses:


13

Afficher la sortie de netstat -lnp, afin que nous puissions voir quels processus écoutent réellement quels ports sur le serveur, et à quelles adresses IP ils sont liés.

Concernant le deuxième ordinateur, sa connectivité réseau semble cassée. netstat -rndonnera un aperçu du problème là-bas.

Afin de donner de meilleurs conseils, plus de détails concernant la configuration générale du réseau et la configuration IP sur les deux ordinateurs sont nécessaires.

Éditer:

Vous devez changer votre configuration Apache pour qu'il s'agisse d'un serveur HTTP, pas d'un serveur SSL. La plupart du temps, les fichiers de configuration se trouvent sous / etc / apache2.

Les informations de configuration IP et de configuration réseau sont toujours nécessaires pour analyser l'autre problème. Les informations traceroute n'ont rien révélé.


En effet, il n'y a pas de processus d'écoute du port 80! Le serveur Apache écoute sur le port 443. Mais pourquoi?
Erel Segal-Halevi

@ErelSegalHalevi: généralement, 80 est HTTP, 443 est HTTPS (sauf si vous modifiez ces ports par défaut). Alors peut-être que l'application n'attend que HTTPS?
Olivier Dulac

Grâce à netstat, nous avons découvert que c'était vraiment un problème de configuration dans Apache.
Erel Segal-Halevi

26

"Connexion refusée" signifie que la machine cible a activement rejeté la connexion. Avec le port 80 comme contexte, l'une des choses suivantes est probablement la raison:

  • Rien n'écoute sur 127.0.0.1:80 et 132.70.6.157:80
  • Rien n'écoute *: 80
  • Le pare-feu bloque la connexion avec REJECT

Vérifiez donc votre configuration Apache et iptables.

"Aucune route vers l'hôte" fait référence à un problème de réseau. Ce n'est pas une réponse de la machine cible.


un problème de réseau? alors comment le même domaine peut-il renvoyer "connexion refusée" pour un et "pas de route vers l'hôte" pour un autre port, sur le même domaine?
phil294

Peut-être que votre pare-feu ou votre proxy bloque l'autre port, c'est pourquoi un problème de réseau?
croraf

3

J'ai trouvé cet article décrivant le problème auquel j'étais confronté lorsque j'essayais de configurer une simple page http à l'aide de nodejs sur un nœud de calcul de cloud public.

Cette commande a fait l'affaire pour moi:

iptables -F

Cette commande supprime ie efface les règles de pare-feu qui sont configurées à l'intérieur du système Linux.

Avertissement: étant donné que j'utilise le pare-feu distribué qui fait partie du VCN du cloud public, je n'ai pas vraiment utilisé le pare-feu de mon système d'exploitation. Si vous n'avez pas de pare-feu externe, assurez-vous d'ajouter une règle de pare-feu dans iptables.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.