Frage Was verursacht die Meldung "Verbindung abgelehnt"?


Das ist ein Kanonische Frage Über Verbindung abgelehnt 

Wir sehen viele Fragen zu diesem Zweck

Wenn ich versuche, eine Verbindung zu einem System herzustellen, erhalte ich eine Nachricht

Verbindung abgelehnt

Warum ist das ?


75
2017-09-28 12:13


Ursprung


Wir bekommen das in Apache Hadoop sehr oft, wo es oft durch Konfigurationsfehler im Client verursacht wird: mit welchem ​​Host zu sprechen ist, wie ihre DNS- oder / etc / host-Tabellen eingerichtet sind, oder eine Nichtübereinstimmung zwischen den von a Service und dass die Kunden denken, es sollte verwenden. Dementsprechend haben wir ein spezieller Wiki-Eintrag zum Thema. Viele der Probleme sind wahrscheinlich anderswo, wenn auch (hoffnungsvoll) in einem kleineren Maßstab. Das Debuggen von Verbindungsproblemen in einem 1000-Knoten-Cluster macht keinen Spaß. - Steve Loughran
Dein spezieller Wiki-Eintrag verweist auf diese Frage;) - Iain
guter Fang. Hier ist der offizielle Link: wiki.apache.org/hadoop/ConnectionRefused. Ich werde einen Querverweis von dort für diese vollständige Schleife hinzufügen. - Steve Loughran
@SteveLoughran Cooler Artikel - ein Kommentar - der Link zurück sagt Stack Overflow und wir sind Server Fault;) - Iain
erledigt. FWIW, dieser Wiki-Link wird den im Hadoop-Stapel übergebenen ConnectionRefused-Ausnahmen hinzugefügt, zusammen mit den zusätzlichen Informationen (Hosts, Ports), die benötigt werden, um herauszufinden, was schief läuft. Wir erhalten immer noch viele Fehlerberichte von Leuten, die den Stack-Trace sehen und nicht dem Link zum Wiki folgen - Steve Loughran


Antworten:


Hinweis: Diese Nachricht ist ein Symptom des Problems, das Sie versuchen zu lösen. Wenn Sie die Ursache der Nachricht verstehen, werden Sie letztendlich Ihr Problem lösen.

Die Nachricht 'Verbindung abgelehnt' hat zwei Hauptursachen:

  1. Nichts hört auf der IP: Port, mit dem du dich verbinden willst.
  2. Der Port ist durch eine Firewall blockiert.

Kein Prozess hört zu.

Dies ist bei weitem der häufigste Grund für die Nachricht. Stellen Sie zunächst sicher, dass Sie versuchen, eine Verbindung zum richtigen System herzustellen. Wenn Sie dann feststellen müssen, ob dies das Problem ist, führen Sie das Remote-System aus Netstat oder ss1 z.B. wenn Sie erwarten, dass ein Prozess Port 22222 abhört

sudo netstat -tnlp | grep :22222

oder

ss -tnlp | grep :22222

Für OSX ist ein geeigneter Befehl

sudo netstat -tnlp tcp | grep '\.80 '

Wenn nichts zuhört, erzeugt das Obige keine Ausgabe. Wenn Sie eine Ausgabe sehen, dann bestätigen Sie, dass es das ist, was Sie erwarten, dann sehen Sie den Firewall-Abschnitt unten.

Wenn Sie keinen Zugriff auf das Remote-System haben und das Problem bestätigen möchten, bevor Sie es an die entsprechenden Administratoren melden, können Sie tcpdump (wireshark o.ä.) verwenden.

Wenn eine Verbindung zu einem IP-Port versucht wird: Port, an dem nichts abhört, ist die Antwort vom fernen System auf das anfängliche SYN-Paket ein Paket mit den Flags RST, ACK gesetzt. Dies schließt die Verbindung und verursacht die Nachricht Verbindung abgelehnt, z.

$ sudo tcpdump -n Host 192.0.2.1 und Port 22222
  tcpdump: ausführliche Ausgabe unterdrückt, verwenden Sie -v oder -vv für die vollständige Protokolldekodierung
  Abhören Enp14s0, Link-Typ EN10MB (Ethernet), Capture-Größe 262144 Bytes

  12: 31: 27.013976 IP 192.0.2.2.34390> 192.0.2.1.22222: Flags [S], seq 1207858804, win 29200, Optionen [mss 1460, sackOK, TS val 15306344 ecr 0, nop, wscale 7], Länge 0

  12: 31: 27.020162 IP 192.0.2.1.22222> 192.0.2.2.34390: Flags [R.], seq 0, ack 1207858805, Gewinn 0, Länge 0

Beachten Sie, dass tcpdump a verwendet . zu repräsentieren die ACK Flagge.

Der Port ist durch eine Firewall blockiert

Wenn der Port von einer Firewall blockiert wird und die Firewall für die Reaktion konfiguriert wurde icmp-port-unreachable Dies wird auch eine Verbindung verweigert Nachricht verursachen. Wieder können Sie dies mit tcpdump (oder ähnlich) sehen

$ sudo tcpdump -n icmp
  tcpdump: ausführliche Ausgabe unterdrückt, verwenden Sie -v oder -vv für die vollständige Protokolldekodierung

  Abhören Enp14s0, Link-Typ EN10MB (Ethernet), Capture-Größe 262144 Bytes   13: 03: 24.149897 IP 192.0.2.1> 192.0.2.2: ICMP 192.0.2.1 TCP Port 22222 nicht erreichbar, Länge 68

Beachten Sie, dass dies auch angibt, wo sich die blockierende Firewall befindet.


Wenn Sie nun wissen, was die Nachricht Verbindung verweigert verursacht, sollten Sie entsprechende Maßnahmen ergreifen, z. Wenden Sie sich an den Firewall-Administrator, oder untersuchen Sie den Grund für das Nichthören des Prozesses.

1Andere Tools sind wahrscheinlich verfügbar.


87
2017-09-28 12:13



ELI5-Version: Das bedeutet, dass die Verbindungsanfrage an den anderen Computer gesendet wurde und der andere Computer keine Ahnung hatte, wovon Sie sprachen. - immibis
"Kein Prozess hört zu." Der Hauptgrund ..! - Samitha Chathuranga
In meinem Fall hörte etwas ... aber auf einem anderen Knoten, mit dem ich mich verbinden wollte. Hoppla. - ijoseph
@ijoseph Also hat nichts zugehört. - Iain
@Iain wenn ein Baum nicht in den Wald fällt und der Wald völlig ruhig ist, hören die anderen Bäume zu? - ijoseph


Für mich auf Debian 6 drückte es so einfach wie Überprüfung des SSH-Dienstes:

sudo service ssh status

Und nichts gefunden zu haben (mit der Nachricht ssh: unrecognized service) gerade Installation des Dienstes:

sudo apt-get install openssh-server

Dies funktioniert auch, wenn Sie keine SFTP-Verbindung erhalten, da SFTP eine Teilmenge von SSH ist (während FTPS eine Teilmenge von FTP ist).


4
2018-05-16 09:39





My Centos Shorewall-Firewall hat keinen Speicherplatz mehr. verwirrenderweise funktionierten einige Seiten wie youtube und MS. Andere wie cnn.com scheiterten. Löschen von Speicherplatz und Neustart des Servers behebt das Problem für mich.


0
2017-11-03 13:19