"Verbindung abgelehnt" vs "Keine Route zum Host"


19

Ich habe einen Apache-Server auf einem 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
....

Wenn ich jedoch versuche, eine Verbindung zum lokalen Host herzustellen, wird die Meldung "Verbindung abgelehnt" angezeigt:

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

Gleiches passiert, wenn ich versuche, eine Verbindung zur lokalen IP-Adresse herzustellen:

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

Wenn ich dasselbe von einem anderen Computer im selben Netzwerk aus versuche, wird eine andere Fehlermeldung "Keine Route zum Host" angezeigt:

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

Warum erhalte ich diese Fehler? Und was muss ich tun, um von demselben Computer und von anderen Computern im Netzwerk aus eine Verbindung zum HTTP-Server herzustellen?

UPDATES: Auf der Grundlage der Kommentare und Antworten finden Sie hier einige weitere Informationen:

[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          

Kannst du traceroute 132.70.6.157von beiden Servern die Ausgabe vergleichen?
Werner Henze

1
443 sind die SSL-Ports (https). Überprüfen Sie Ihre Konfiguration, um sicherzustellen, dass Sie HTTP-Port 80 hören.
Mikpa

Antworten:


13

Zeigen Sie die Ausgabe von an netstat -lnp, damit wir sehen können, welche Prozesse welche Ports auf dem Server überwachen und an welche IP-Adressen sie gebunden sind.

In Bezug auf den zweiten Computer sieht die Netzwerkverbindung unterbrochen aus. netstat -rnIch werde einen Einblick in das Problem geben.

Für eine bessere Beratung sind weitere Details zur allgemeinen Netzwerkkonfiguration und IP-Konfiguration auf beiden Computern erforderlich.

Bearbeiten:

Sie müssen Ihre Apache-Konfiguration so ändern, dass es sich um einen HTTP-Server handelt, nicht um einen SSL-Server. Konfigurationsdateien befinden sich die meiste Zeit unter / etc / apache2.

Die Informationen zur IP-Konfiguration und Netzwerkkonfiguration werden weiterhin benötigt, um das andere Problem zu analysieren. Die Traceroute-Informationen enthüllten nichts.


In der Tat gibt es keinen Prozess, der Port 80 abhört! Der Apache-Server überwacht Port 443. Aber warum ist das so?
Erel Segal-Halevi

@ErelSegalHalevi: Normalerweise ist 80 HTTP, 443 HTTPS (sofern Sie diese Standardports nicht ändern). Vielleicht erwartet die Anwendung nur HTTPS?
Olivier Dulac

Dank netstat haben wir herausgefunden, dass dies wirklich ein Konfigurationsproblem in Apache ist.
Erel Segal-Halevi

26

"Verbindung abgelehnt" bedeutet, dass der Zielcomputer die Verbindung aktiv abgelehnt hat. Mit Port 80 als Kontext ist wahrscheinlich eines der folgenden Dinge der Grund:

  • Nichts hört auf 127.0.0.1:80 und 132.70.6.157:80
  • Nichts hört zu *: 80
  • Die Firewall blockiert die Verbindung mit REJECT

Also überprüfe deine Apache und iptables Konfiguration.

"Keine Route zum Host" bezieht sich auf ein Netzwerkproblem. Es ist keine Antwort vom Zielcomputer.


ein Netzwerkproblem? Wie kann dieselbe Domain für einen anderen Port auf derselben Domain "Verbindung abgelehnt" und "Keine Route zum Host" zurückgeben?
Blauhirn

Vielleicht blockiert Ihre Firewall oder Ihr Proxy den anderen Port, weshalb also ein Netzwerkproblem?
Croraf

3

In diesem Beitrag wurde das Problem beschrieben, mit dem ich beim Einrichten einer einfachen http-Seite mithilfe von nodejs auf einem Public Cloud-Rechenknoten konfrontiert war.

Dieser Befehl hat den Trick für mich getan:

iptables -F

Dieser Befehl löscht bzw. löscht die Firewall-Regeln, die im Linux-System eingerichtet sind.

Vorsichtshinweis: Da ich die verteilte Firewall verwende, die Teil des Public Cloud VCN ist, habe ich die Firewall meines Betriebssystems nicht wirklich verwendet. Falls Sie keine externe Firewall haben, stellen Sie sicher, dass Sie eine Firewall-Regel in iptables hinzufügen.


1
Ich habe fast einen ganzen Tag lang versucht, herauszufinden, warum ich keine Verbindung zu einem Server in meiner VM herstellen konnte. Das hat es behoben. Vielen Dank!
Alan

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.