Wat kunnen de redenen zijn voor fouten bij het weigeren van verbinding?

Ik probeer een serverprogramma in C te schrijven,
als ik een andere client gebruik, krijg ik deze foutmelding wanneer ik bijvoorbeeld probeer verbinding te maken via poort 2080.

connection refused

Wat kunnen de redenen zijn voor deze fout?


Antwoord 1, autoriteit 100%

Er kunnen veel redenen zijn, maar de meest voorkomende zijn:

  1. De poort is niet open op de bestemmingscomputer.

  2. De poort is open op de doelcomputer, maar de achterstand van in behandeling zijnde verbindingen is vol.

  3. Een firewall tussen de client en de server blokkeert de toegang (controleer ook de lokale firewalls).

Nadat u heeft gecontroleerd op firewalls en dat de poort open is, gebruikt u telnet om verbinding te maken met de ip/poort om de connectiviteit te testen. Hiermee worden eventuele problemen met uw toepassing verwijderd.


Antwoord 2, autoriteit 70%

De fout betekent dat het besturingssysteem van de luisterende socket het inkomende verbindingsverzoek heeft herkend, maar ervoor heeft gekozen om het opzettelijk te weigeren.

Ervan uitgaande dat een tussenliggende firewall niet in de weg zit, zijn er slechts twee redenen (voor zover ik weet) voor het besturingssysteem om een ​​inkomend verbindingsverzoek te weigeren. Een reden is al meerdere keren genoemd – de luisterpoort waarmee verbinding wordt gemaakt, is niet open.

Er is nog een andere reden die nog niet is genoemd – de luisterpoort is eigenlijk open en wordt actief gebruikt, maar de achterstand van inkomende verbindingsverzoeken in de wachtrij heeft zijn maximum bereikt, dus er is geen ruimte beschikbaar voor het inkomende verbindingsverzoek stond op dat moment in de rij. De servercode heeft accept() nog niet vaak genoeg aangeroepen om de beschikbare plaatsen voor nieuwe wachtrij-items vrij te maken.

Wacht even en probeer opnieuw verbinding te maken. Helaas is er geen manier om onderscheid te maken tussen “de haven is helemaal niet open” en “de haven is open maar te druk op dit moment”. Ze gebruiken allebei dezelfde algemene foutcode.


Antwoord 3, autoriteit 26%

Als u een TCP-verbinding met een andere host probeert te openen en de fout ‘Verbinding geweigerd’ ziet, betekent dit dat

  1. Je hebt een TCP SYN-pakket naar de andere host gestuurd.
  2. Vervolgens heb je als antwoord een TCP RST-pakket ontvangen.

RST is een bit op het TCP-pakket dat aangeeft dat de verbinding opnieuw moet worden ingesteld. Meestal betekent dit dat de andere host uw verbindingspoging heeft ontvangen en actief uw TCP-verbinding weigert, maar soms kan een tussenliggende firewall uw TCP SYN-pakket blokkeren en een TCP RST naar u terugsturen.

Zie https://tools.ietf.org/html/rfc793pagina 69:

SYN-RECEIVED STATE

Als de RST-bit is ingesteld

Als deze verbinding is gestart met een passieve OPEN (d.w.z. kwam
vanuit de LISTEN-status), en breng deze verbinding vervolgens terug naar de LISTEN-status
En terugkomen. De gebruiker hoeft niet geïnformeerd te worden. Als deze verbinding was
gestart met een actieve OPEN (d.w.z. kwam uit de SYN-SENT-status) en vervolgens
de verbinding is geweigerd, geef de gebruiker het signaal “verbinding geweigerd”. In
in beide gevallen moeten alle segmenten in de wachtrij voor herverzending:
VERWIJDERD. En in het actieve geval OPEN, voer de status GESLOTEN in en
verwijder de TCB en keer terug.


Antwoord 4, autoriteit 17%

Verbinding geweigerd betekent dat de poort waarmee u verbinding probeert te maken niet echt open is.

Dus je maakt ofwel verbinding met het verkeerde IP-adres, of met de verkeerde poort, of de server luistert op de verkeerde poort, of is niet actief.

Een veelgemaakte fout is het niet specificeren van het poortnummer bij het binden of verbinden in netwerkbytevolgorde…


Antwoord 5, autoriteit 5%

Controleer aan de serverzijde of deze luistert op poort 2080.
Probeer het eerst op de servermachine te bevestigen door telnet naar die poort te sturen:

telnet localhost 2080

Als het luistert, kan het reageren.


Antwoord 6, autoriteit 3%

1.Controleer uw serverstatus.

2.Controleer de poortstatus.

Bijvoorbeeld 3306 netstat -nupl|grep 3306.

3.Controleer uw firewalls.
Voeg bijvoorbeeld 3306

. toe

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

Antwoord 7

Hoewel dit in uw situatie niet het geval lijkt te zijn, kan een foutmelding over een geweigerde verbinding er soms ook op wijzen dat er een ip-adresconflict is op uw netwerk. U kunt zoeken naar mogelijke ip-conflicten door het volgende uit te voeren:

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

en

arping <ipaddress>

DezeAskUbuntu-vraag bevat meer informatie ook.


Antwoord 8

Ik heb hetzelfde probleem met mijn werkcomputer.
Het probleem is dat wanneer u localhost invoert, het naar het adres van de proxy gaat, niet naar het lokale adres, u moet het omzeilen door deze stappen te volgen

Chrome => Instellingen => Proxy-instellingen wijzigen => LAN-instellingen => controleer Proxyserver omzeilen voor lokale adressen.


Antwoord 9

Vanuit het standpunt van een Checkpoint-firewall ziet u een bericht van de firewall als u daadwerkelijk Weigeren als actie kiest, waardoor een potentiële aanvaller de aanwezigheid van een firewall voor de server wordt blootgesteld. De firewall verbreekt stil alle verbindingen die niet overeenkomen met het beleid. Verbinding geweigerd komt bijna altijd van de server


Antwoord 10

Probeer in Ubuntu
sudo ufw allow <port_number>
om firewall-toegang tot zowel uw server als db toe te staan.


Antwoord 11

In mijn geval gebeurt het wanneer de site in mijn land wordt geblokkeerd en ik geen VPN gebruik.
Bijvoorbeeld wanneer ik vanuit Indonesië toegang probeer te krijgen tot vimeo.com, wat geblokkeerd is.


Antwoord 12

Ik had hetzelfde bericht met een totaal andere oorzaak: de wsock32.dllwerd niet gevonden. De ::socket(PF_INET, SOCK_STREAM, 0);-aanroep bleef een INVALID_SOCKETretourneren, maar de reden was dat de winsock-dll niet was geladen.

Uiteindelijk lanceerde ik de procesmonitor van Sysinternals en merkte dat het ‘overal’ naar de dll zocht, maar het niet vond.

Stille mislukkingen zijn geweldig!

LEAVE A REPLY

Please enter your comment!
Please enter your name here

four × 4 =

Other episodes