Was können die Gründe für Verbindungsverweigerungsfehler sein?

Lesezeit: 6 Minuten

Benutzeravatar von Zenet
Zenet

Ich versuche, ein Serverprogramm in C zu schreiben, indem ich einen anderen Client verwende. Ich erhalte diesen Fehler, wenn ich beispielsweise versuche, eine Verbindung über Port 2080 herzustellen.

connection refused

Was können die Gründe für diesen Fehler sein?

  • Ich habe gerade diesen Fehler aufgrund eines Fehlers des Servers erhalten, auf dem ich meine Website hoste. Der Server könnte noch sein pinged, downforeveryoneorjustme.com zeigte, dass es nicht nur mir so geht und ich auch noch per FTP darauf zugreifen konnte. Nach ein paar Minuten wurden die Fehler behoben.

    – Martin Thoma

    1. Dezember 2014 um 16:39 Uhr

  • @moose: Ping sagt Ihnen nicht, ob ein bestimmter Port zugänglich ist, sondern nur, ob die IP-Adresse erreichbar ist. Aber connect() hängt davon ab, ob eine bestimmte IP und ein bestimmter Port einsatzbereit sind.

    – Rémy Lebeau

    21. Mai 2015 um 19:02 Uhr

  • Server Fault hat eine kanonische Frage zu Verbindung abgelehnt.

    – Raedwald

    30. September 2015 um 12:34 Uhr

  • Hier ist eine kurze Erklärung von Verbindung abgelehnt.

    – rbinnun

    9. Mai 2018 um 13:47 Uhr

  • Ich habe eine Verbindung unter Ubuntu abgelehnt bekommen, weil ich versucht habe, eine Verbindung auf „localhost“ zu erhalten, aber „localhost“ auf meinem Computer nicht richtig konfiguriert war. Das Ändern von „localhost“ in „“ (Python) löste das Problem.

    – Benutzer1097111

    12. März 2019 um 23:42 Uhr

Benutzeravatar von a'r
a’r

Es kann viele Gründe geben, aber die häufigsten sind:

  1. Der Port ist auf dem Zielcomputer nicht geöffnet.

  2. Der Port ist auf dem Zielcomputer geöffnet, aber sein Rückstand an ausstehenden Verbindungen ist voll.

  3. Eine Firewall zwischen Client und Server blockiert den Zugriff (auch lokale Firewalls prüfen).

Nachdem Sie überprüft haben, ob Firewalls vorhanden sind und ob der Port geöffnet ist, verwenden Sie Telnet, um eine Verbindung mit IP/Port herzustellen und die Konnektivität zu testen. Dadurch werden potenzielle Probleme aus Ihrer Anwendung entfernt.

  • Firewalls geben normalerweise Zeitüberschreitungsfehler aus, da das Verbindungspaket (SYN) einfach verworfen wird. Die Verbindung wird abgelehnt, weil der Server das SYN-Paket empfangen und abgelehnt hat.

    – RedPandaCurios

    25. Februar 2010 um 11:04 Uhr

  • Nicht immer, da Firewalls so konfiguriert werden können, dass sie die Pakete ablehnen, anstatt sie zu verwerfen.

    – a’r

    25. Februar 2010 um 11:05 Uhr

  • connect() mit falscher Konfiguration der Server-IP-Adresse und Portnummer im Client-Programm führt ebenfalls zu Fehler Nr. 111.

    – sm Raj

    14. Januar 2015 um 21:59 Uhr

  • Außerdem: Wenn Sie auf https zugreifen müssen, aber http://… angegeben haben, kann dieser Fehler ebenfalls auftreten.

    – Fico

    10. April 2015 um 7:11 Uhr

  • @a’r Woher wissen Sie den Status des Rückstands?

    – Naveen Verma

    15. Januar 2019 um 12:31 Uhr


Benutzeravatar von Remy Lebeau
Rémy Lebeau

Der Fehler bedeutet, dass das Betriebssystem des lauschenden Sockets die eingehende Verbindungsanforderung erkannt hat, sich aber dafür entschieden hat, sie absichtlich abzulehnen.

Unter der Annahme, dass eine zwischengeschaltete Firewall nicht im Weg steht, gibt es nur zwei (mir bekannte) Gründe, warum das Betriebssystem eine eingehende Verbindungsanforderung ablehnt. Ein Grund wurde bereits mehrfach genannt – der Listening Port, mit dem verbunden wird, ist nicht offen.

Es gibt noch einen weiteren Grund, der noch nicht erwähnt wurde: Der Listening-Port ist tatsächlich geöffnet und wird aktiv verwendet, aber sein Rückstand an eingehenden Verbindungsanforderungen in der Warteschlange hat sein Maximum erreicht, sodass kein Platz mehr verfügbar ist, um die eingehende Verbindungsanforderung in die Warteschlange einzureihen Moment. Der Servercode hat Accept() noch nicht oft genug aufgerufen, um das Leeren verfügbarer Slots für neue Warteschlangenelemente abzuschließen.

Warten Sie einen Moment oder so und versuchen Sie die Verbindung erneut. Leider gibt es keine Möglichkeit, zwischen “der Port ist überhaupt nicht offen” und “der Port ist offen, aber momentan zu beschäftigt” zu unterscheiden. Beide verwenden denselben generischen Fehlercode.

  • Es gibt auch einen Grenzfall, wie hier erklärt: softlab.ntua.gr/facilities/documentation/unix/unix-socket-faq/… . Im Grunde, wenn Sie Ihre Client/Server-App einem Stresstest unterziehen und den naiven Ansatz wie in 3.6 erwähnt verwenden, kann der Fehler „Verbindung abgelehnt“ auftreten, und es ist ein anderer Fall als die beiden oben genannten.

    – Ernst

    17. April 2014 um 7:26 Uhr


  • Dies muss positiv bewertet werden. Sobald die offensichtliche Ursache (kein Zuhören) behoben wurde, ist dies tatsächlich die wahrscheinlichste Erklärung, und die Behebung kann eine komplexe Angelegenheit sein.

    – Graham Nicholls

    29. November 2017 um 12:11 Uhr

  • Wenn der Rückstand an eingehenden Anfragen in der Warteschlange sein Maximum erreicht hat, wie können wir das beheben?

    – ACarter

    26. Januar 2018 um 11:45 Uhr

  • wird ein Rückstand von IP in die Warteschlange gestellt? Ich habe versucht, Telnet email-smtp.eu-west-1.amazonaws.com 25 von einer EC2-Instanz und meinem lokalen Computer aus zu verwenden. Der Telnet-Anruf der EC2-Instanz gibt die Verbindung zurück, während sie von meinem lokalen Computer aus funktioniert

    – dress

    10. März 2019 um 9:48 Uhr


  • “Nichts hört zu” wird wahrscheinlich dadurch verursacht, dass die Maschine läuft, aber der Server (Software), zB Apache, nicht läuft.

    – ttulinsky

    25. Oktober 2019 um 17:04 Uhr


Benutzeravatar von James Brock
Jakob Brock

Wenn Sie versuchen, eine TCP-Verbindung zu einem anderen Host herzustellen, und der Fehler „Verbindung abgelehnt“ angezeigt wird, bedeutet dies Folgendes

  1. Sie haben ein TCP-SYN-Paket an den anderen Host gesendet.
  2. Dann haben Sie ein TCP-RST-Paket als Antwort erhalten.

RST ist ein Bit im TCP-Paket, das anzeigt, dass die Verbindung zurückgesetzt werden sollte. Normalerweise bedeutet dies, dass der andere Host Ihren Verbindungsversuch erhalten hat und Ihre TCP-Verbindung aktiv ablehnt, aber manchmal kann eine eingreifende Firewall Ihr TCP-SYN-Paket blockieren und ein TCP-RST an Sie zurücksenden.

Sehen https://www.rfc-editor.org/rfc/rfc793 Seite 69:

SYN-EMPFANGSZUSTAND

Wenn das RST-Bit gesetzt ist

Wenn diese Verbindung mit einem passiven OPEN initiiert wurde (dh aus dem LISTEN-Zustand kam), dann bringe diese Verbindung in den LISTEN-Zustand zurück und kehre zurück. Der Benutzer muss nicht informiert werden. Wenn diese Verbindung mit einem aktiven OPEN initiiert wurde (dh aus dem SYN-SENT-Zustand kam), dann wurde die Verbindung abgelehnt, signalisiert dem Benutzer “Verbindung abgelehnt”. In jedem Fall sollten alle Segmente in der Neuübertragungswarteschlange entfernt werden. Und im aktiven OFFEN-Fall gehe in den CLOSED-Zustand und lösche den TCB und kehre zurück.

  • Gute Antwort. Dies sollte derjenige sein, der akzeptiert wird!

    – Andrés Mejía

    11. März 2021 um 0:45 Uhr

Verbindung verweigert bedeutet, dass der Port, zu dem Sie eine Verbindung herstellen möchten, nicht wirklich geöffnet ist.

Entweder Sie verbinden sich mit der falschen IP-Adresse oder mit dem falschen Port, oder der Server lauscht am falschen Port oder läuft nicht wirklich.

Ein häufiger Fehler besteht darin, die Portnummer beim Binden oder Verbinden nicht in der Netzwerk-Byte-Reihenfolge anzugeben …

Überprüfen Sie auf der Serverseite, ob Port 2080 überwacht wird. Versuchen Sie zunächst, dies auf dem Servercomputer zu bestätigen, indem Sie Telnet an diesen Port senden:

telnet localhost 2080

Wenn es zuhört, kann es antworten.

Benutzeravatar von Jack Sun
Jack Sonne

1.Überprüfen Sie Ihren Serverstatus.

2.Überprüfen Sie den Portstatus.

Zum Beispiel 3306 netstat -nupl|grep 3306.

3.Überprüfen Sie Ihre Firewalls. Fügen Sie zum Beispiel 3306 hinzu

vim /etc/sysconfig/iptables
# add
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

Benutzeravatar der Community
Gemeinschaft

Obwohl dies in Ihrer Situation nicht der Fall zu sein scheint, kann manchmal ein Verbindungsverweigerungsfehler auch darauf hindeuten, dass in Ihrem Netzwerk ein IP-Adresskonflikt besteht. Sie können nach möglichen IP-Konflikten suchen, indem Sie Folgendes ausführen:

 arp-scan -I eth0 -l | grep <ipaddress>

und

arping <ipaddress>

Dies Die AskUbuntu-Frage enthält auch einige weitere Informationen.

1424240cookie-checkWas können die Gründe für Verbindungsverweigerungsfehler sein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy