Was können die Gründe für Verbindungsverweigerungsfehler sein?
Lesezeit: 6 Minuten
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.
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
a’r
Es kann viele Gründe geben, aber die häufigsten sind:
Der Port ist auf dem Zielcomputer nicht geöffnet.
Der Port ist auf dem Zielcomputer geöffnet, aber sein Rückstand an ausstehenden Verbindungen ist voll.
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
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
Jakob Brock
Wenn Sie versuchen, eine TCP-Verbindung zu einem anderen Host herzustellen, und der Fehler „Verbindung abgelehnt“ angezeigt wird, bedeutet dies Folgendes
Sie haben ein TCP-SYN-Paket an den anderen Host gesendet.
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.
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.
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
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.
14242400cookie-checkWas können die Gründe für Verbindungsverweigerungsfehler sein?yes
Ich habe gerade diesen Fehler aufgrund eines Fehlers des Servers erhalten, auf dem ich meine Website hoste. Der Server könnte noch sein
ping
ed, 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