Naar hoofdinhoud springen

Handleidingen / Oplossen: handleidingen voor veelvoorkomende foutmeldingen

ERR_CONNECTION_REFUSED: wat het betekent en hoe u het oplost

ERR_CONNECTION_REFUSED betekent dat de doelmachine de TCP-verbinding actief afwees met een resetpakket, meestal omdat er niets luistert op die poort. Het netwerk deed gewoon zijn werk en leverde een antwoord, alleen niet het antwoord dat uw browser wilde.

Wat ERR_CONNECTION_REFUSED betekent

Een TCP-verbinding begint met een handshake: de client stuurt een SYN-pakket, en de server antwoordt met SYN-ACK als er een proces aan die poort gebonden is. Luistert er niets, dan stuurt de netwerkstack van het besturingssysteem in plaats daarvan een RST-pakket terug, waarmee de poging meteen wordt afgesloten. Die RST is wat ERR_CONNECTION_REFUSED oplevert in Chrome en de equivalenten daarvan in andere browsers. De verbinding bereikte de doelmachine en kreeg een duidelijk nee, wat deze fout onderscheidt van een timeout, waarbij helemaal niets antwoordt.

Het RST-antwoord komt van de TCP-stack van de kernel, niet van applicatiecode, wat is waarom het binnen enkele milliseconden aankomt in plaats van na een wachttijd van meerdere seconden. Dit betekent ook dat de machine zelf aan staat en netwerkverkeer beantwoordt; er is alleen niets gebonden aan de specifieke poort waarop het verzoek zich richtte. Dat onderscheid is belangrijk bij het bepalen waar u eerst moet kijken: een geweigerde verbinding wijst op de poort en het proces erachter, niet op de voeding van de server of zijn netwerkverbinding.

Hoe de fout verschijnt

Chrome toont een eenvoudige pagina "This site can't be reached ... ERR_CONNECTION_REFUSED" zonder verder detail. Firefox meldt "Unable to connect" en noemt de host en poort die het probeerde. De commandoregel geeft een preciezer beeld:

curl -v https://example.com:8443/
* Trying 203.0.113.10:8443...
* connect to 203.0.113.10 port 8443 failed: Connection refused
* Failed to connect to example.com port 8443 after 2 ms: Connection refused

De melding noemt de exacte poort die curl probeerde en rapporteert de weigering binnen een paar milliseconden, snel genoeg om een timeout uit te sluiten. telnet host port of nc -zv host port geven dezelfde regel "Connection refused" terug.

Wat ERR_CONNECTION_REFUSED veroorzaakt

  • Er luistert niets op die poort. De webserver, applicatie, of proxy die aan de poort gebonden zou moeten zijn draait niet.
  • De dienst is gestopt of gecrasht. Een proces dat afsloot, werd beëindigd voor te veel geheugengebruik, of werd voor onderhoud gestopt laat de poort onbezet achter.
  • Een firewallregel weigert de verbinding ronduit. Een REJECT-regel stuurt dezelfde RST terug die een gesloten poort zou geven, dus ziet het er van buitenaf identiek uit aan niets dat er is.
  • De verkeerde poort staat in de URL. Een typefout, een oude bladwijzer van vóór een poortwijziging, of een dienst die naar een andere poort is verhuisd leveren allemaal deze fout op tegen de oude poort.
  • Een lokale ontwikkelserver draait niet. localhost:3000 geweigerd betekent vrijwel altijd dat de dev-server gestopt is of nooit gestart in deze terminalsessie.
  • Een proxy of VPN is verkeerd geconfigureerd. Een proxy die naar een backend wijst die down is, of een VPN-client die verzoeken herschrijft naar een poort waarop niets luistert, weigert de verbinding namens zichzelf.
  • De poortmapping van een container komt niet overeen met de applicatie erbinnen. Een Docker- of Kubernetes-dienst waarvan de gepubliceerde poort verschilt van de poort waaraan de applicatie daadwerkelijk bindt, levert deze fout op ook al draait het proces zelf gezond.

Hoe u vaststelt wiens fout het is

Laadt de site nu voor andere mensen wel, of laadde hij een minuut geleden voor u, dan ligt het probleem waarschijnlijker lokaal: een VPN, een proxy-instelling, of een firewallregel op uw eigen machine of netwerk. Faalt hij op dezelfde manier vanaf een telefoon op mobiele data, dan weigert de serverkant verbindingen voor iedereen. Een HTTP- of poortcontrole vanaf meerdere locaties tegelijk beslecht dit in één verzoek; rapporteren meetpunten in meerdere landen allemaal dat de verbinding werd geweigerd, dan ligt de oorzaak bij de server of diens firewall, niet bij uw netwerk.

Hoe u ERR_CONNECTION_REFUSED oplost

Bent u de bezoeker

  1. Controleer de URL en de poort. Zoek naar een typefout, een oude bladwijzer, of een link die nog naar een uitgefaseerde poort wijst.
  2. Schakel uw VPN of proxy uit en laad opnieuw. Laadt de site daarna wel, dan is de VPN- of proxyconfiguratie de oorzaak; controleer de instellingen ervan of neem contact op met wie hem beheert.
  3. Probeer een ander netwerk, zoals mobiele data in plaats van wifi, om een lokale firewall- of routerregel uit te sluiten.
  4. Wacht en probeer opnieuw. Is de sitebeheerder midden in een deployment of het herstarten van een dienst, dan kan de poort maar een paar seconden onbezet zijn.

Beheert u de site

  1. Bevestig dat het proces draait en aan de verwachte poort gebonden is:
    ss -ltnp | grep :443
    netstat -tlnp | grep :443
    Een leeg resultaat betekent dat er niets luistert; start de dienst of herstel de geconfigureerde poort ervan.
  2. Controleer de status en logs van de dienst:
    systemctl status nginx
    journalctl -u nginx -n 50
    Een gecrashte of mislukte unit verschijnt hier, vaak met de reden waarom hij afsloot.
  3. Controleer de firewall op een REJECT-regel voor de poort:
    iptables -L -n | grep REJECT
    ufw status verbose
    Een REJECT-regel ziet er van buitenaf identiek uit aan een gesloten poort, dus is deze stap makkelijk over het hoofd te zien.
  4. Bevestig dat de dienst op de juiste interface luistert. Een server gebonden aan 127.0.0.1 in plaats van 0.0.0.0 weigert elke verbinding die van buiten de machine komt, ook al werkt hij prima vanuit een lokale shell.
  5. Herstart de dienst zodra de configuratie hersteld is, en bevestig met hetzelfde ss-commando dat de poort weer gebonden is voordat u het probleem als opgelost beschouwt.

Hoe u ERR_CONNECTION_REFUSED voorkomt

Een gecrashte dienst of een per ongeluk toegevoegde firewallregel verschijnt meestal eerst als geweigerde verbindingen in plaats van als een melding van de server zelf, aangezien een proces dat niet draait zijn eigen storing niet kan rapporteren. Regelmatige poortmonitoring vangt dit binnen minuten op door van buiten het netwerk verbinding te maken zoals een bezoeker dat zou doen, en stuurt een melding via e-mail, sms, spraakoproep, Slack, Telegram en andere kanalen zodra een controle faalt.

Gerelateerde fouten

  • ERR_CONNECTION_TIMED_OUT gebeurt wanneer helemaal niets antwoordt op de verbindingspoging, in plaats van hem actief te weigeren.
  • ERR_CONNECTION_RESET gebeurt wanneer een verbinding werd geaccepteerd en daarna halverwege werd afgebroken.
  • This site can't be reached behandelt de volledige verzameling verbindingsfouten die Chrome onder één kop groepeert.

Veelgestelde vragen

Is ERR_CONNECTION_REFUSED hetzelfde als dat een firewall mij blokkeert?

Dat kan. Een REJECT-regel van een firewall levert dezelfde RST op als een gesloten poort, dus zien de twee er vanuit de browser identiek uit. Een DROP-regel gedraagt zich anders en levert in plaats daarvan een timeout op.

Waarom gebeurt dit alleen op localhost?

Vrijwel altijd omdat de lokale dev-server niet draait in die terminal, gestopt is, of bij het opstarten crashte door een fout in code of configuratie. Controleer de terminal waar u hem normaal start op een foutmelding.

Kan een VPN ERR_CONNECTION_REFUSED veroorzaken?

Ja. Een VPN die verkeer via een proxy of gateway routeert kan verbindingen namens die gateway weigeren als de eigen backend ervan down is, ook al is de daadwerkelijke bestemmingsserver gezond.

Betekent ERR_CONNECTION_REFUSED dat de website voor iedereen down is?

Niet per se. Test vanaf een tweede netwerk of voer een controle vanaf meerdere locaties uit voordat u dat concludeert. Eén verkeerd geconfigureerde firewallregel of lokale VPN kan dezelfde fout opleveren terwijl de site voor iedereen anders prima werkt.

Wat is het verschil tussen geweigerd en gereset?

Geweigerd betekent dat de verbindingspoging nooit werd voltooid; het doel wees hem meteen af. Gereset betekent dat de verbinding tot stand kwam en werkte, en daarna halverwege werd afgebroken, meestal door iets verderop in het pad.

Hoe kom ik erachter welk proces zou moeten luisteren?

Controleer de eigen opstartlogs van de applicatie en de configuratie ervan voor de poort die hij verwacht te binden. Draait het proces wel maar is het gebonden aan een andere poort dan de URL gebruikt, werk dan ofwel de URL ofwel de configuratie bij zodat ze overeenkomen, en bevestig daarna met ss -ltnp dat de poort nu gebonden is zoals verwacht.

Nu controleren

Voer de gratis check uit op je eigen site, zonder account.

Port check

Dit permanent monitoren

Ontvang een melding zodra er iets misgaat: HostTracker controleert vanaf meer dan 300 locaties en waarschuwt je via e-mail, sms, Slack, Telegram en meer.

HostTracker-functies

Meer in dit onderdeel: Oplossen: handleidingen voor veelvoorkomende foutmeldingen