wake-up-neo.com

Was kann die Ursache für Fehler bei der Verbindungsverweigerung sein?

Ich versuche, ein Serverprogramm in C, Zu schreiben, wobei ein anderer Client verwendet wird. Ich erhalte diese Fehlermeldung, wenn ich versuche, eine Verbindung über Port 2080 herzustellen.

connection refused

Was kann der Grund für diesen Fehler sein?

77
Zenet

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

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

  2. Der Port ist auf dem Zielcomputer geöffnet, der Rückstand der ausstehenden Verbindungen ist jedoch voll.

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

Wenn Sie nach Firewalls gesucht haben und der Port offen ist, verwenden Sie Telnet, um eine Verbindung mit der IP/dem Port herzustellen, um die Konnektivität zu testen. Dadurch werden mögliche Probleme aus Ihrer Anwendung entfernt.

69
a'r

Der Fehler bedeutet, dass das Betriebssystem des abhörenden Sockets die eingehende Verbindungsanforderung erkannt hat, diese jedoch absichtlich zurückgewiesen hat. 

Angenommen, eine zwischengeschaltete Firewall stört nicht, gibt es nur zwei Gründe (die ich kenne), die das Betriebssystem für das Ablehnen einer eingehenden Verbindungsanfrage hält. Ein Grund wurde bereits mehrfach erwähnt - der angeschlossene Listening-Port ist nicht geöffnet. 

Es gibt noch einen anderen Grund, der noch nicht erwähnt wurde - der Überwachungsport ist tatsächlich offen und wird gerade verwendet, aber sein Rückstand an eingehenden Verbindungsanforderungen in der Warteschlange hat das Maximum erreicht, sodass für die eingehende Verbindungsanforderung kein Speicherplatz zur Verfügung steht Moment. Der Servercode hat bisher noch nicht genug Accept () aufgerufen, um das Löschen der verfügbaren Slots für neue Warteschlangenelemente zu beenden. 

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

59
Remy Lebeau

Wenn Sie versuchen, eine TCP - Verbindung zu einem anderen Host zu öffnen und der Fehler "Verbindung abgelehnt" angezeigt wird, bedeutet dies

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

RST ist ein Bit im TCP - Paket, das angibt, dass die Verbindung zurückgesetzt werden soll. Normalerweise bedeutet dies, dass der andere Host Ihren Verbindungsversuch erhalten hat und Ihre TCP - Verbindung aktiv ablehnt, aber manchmal blockiert eine dazwischen liegende Firewall Ihr TCP SYN-Paket und sendet eine TCP -RST an Sie.

Siehe https://tools.ietf.org/html/rfc793 Seite 69:

SYN-RECEIVED STATE

   If the RST bit is set

     If this connection was initiated with a passive OPEN (i.e.,
     came from the LISTEN state), then return this connection to
     LISTEN state and return.  The user need not be informed.  If
     this connection was initiated with an active OPEN (i.e., came
     from SYN-SENT state) then the connection was refused, signal
     the user "connection refused".  In either case, all segments
     on the retransmission queue should be removed.  And in the
     active OPEN case, enter the CLOSED state and delete the TCB,
     and return.
16
James Brock

Verbindung abgelehnt bedeutet, dass der Port, zu dem Sie eine Verbindung herstellen möchten, nicht tatsächlich geöffnet ist. 

Entweder stellen Sie eine Verbindung zur falschen IP-Adresse oder zum falschen Port her oder der Server überwacht den falschen Port oder läuft nicht wirklich.

Ein häufiger Fehler ist die Angabe der Portnummer beim Binden oder Verbinden in der Netzwerk-Bytereihenfolge ...

8
RedPandaCurios

Überprüfen Sie auf der Serverseite, ob sie am Port 2080 abhört . Versuchen Sie zunächst, dies auf dem Server-Computer zu bestätigen, indem Sie an diesem Port Telnet ausgeben: 

telnet localhost 2080 

Wenn es zuhört, kann es antworten.

5
Adil

Obwohl dies für Ihre Situation nicht der Fall zu sein scheint, kann ein Fehler bei einer Verbindungsverweigerung manchmal auch darauf hinweisen, dass in Ihrem Netzwerk ein IP-Adressenkonflikt vorliegt. Sie können nach möglichen IP-Konflikten suchen, indem Sie Folgendes ausführen:

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

und 

arping <ipaddress>

Diese AskUbuntu-Frage enthält einige weitere Informationen.

1
SnapShot

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 beispielsweise 3306 hinzu

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

Ich bekomme das gleiche Problem mit meinem Arbeitscomputer ... Das Problem ist, dass bei Eingabe von localhost die Adresse des Proxys und nicht die lokale Adresse angegeben werden

Chrome => Einstellungen => Proxy-Einstellungen ändern => LAN-Einstellungen => Proxyserver für lokale Adressen umgehen.

0

Vom Standpunkt einer Checkpoint-Firewall aus wird eine Nachricht von der Firewall angezeigt, wenn Sie tatsächlich die Option "Ablehnen als Aktion" wählen und damit einem potenziellen Angreifer die Anwesenheit einer Firewall vor dem Server zeigen. Die Firewall löscht im Hintergrund alle Verbindungen, die nicht der Richtlinie entsprechen. Die abgelehnte Verbindung kommt fast immer vom Server

0

Versuchen Sie in Ubuntu Sudo ufw allow <port_number> , Um den Firewall-Zugriff auf Ihren Server und Ihre Datenbank zuzulassen.

0
rajeeva9