Ошибка ERR_CONNECTION_REFUSED: диагностика и способы решения

Иван Корнев·23 июля 2026·4 мин

Ошибка ERR_CONNECTION_REFUSED возникает, когда клиент пытается установить TCP-соединение с сервером, но получает явный отказ. Это происходит потому, что ни один процесс не слушает указанный порт или соединение блокируется фаерволом, который отправляет пакет сброса (RST) вместо игнорирования запроса.

Оглавление

Механизм возникновения ошибки

Основной механизм отказа соединения заключается в том, что сервер отправляет пакет TCP RST (reset) в ответ на SYN-запрос клиента. Это приводит к немедленному разрыву попытки соединения.

Важно различать эту ошибку с ERR_CONNECTION_TIMED_OUT. REFUSED означает активный отказ сервера (получен RST-пакет), тогда как TIMED_OUT означает, что пакеты теряются или игнорируются без ответа из-за отсутствия маршрута или молчаливого дропания пакетов фаерволом.

Основные причины отказа соединения

Наиболее типичные причины появления ошибки делятся на две основные категории:

  1. Отсутствие слушающего сервиса. Порт закрыт, потому что соответствующий сервис (веб-сервер, база данных и т.д.) не запущен или не настроен на прослушивание указанного порта. Для веб-сервисов это чаще всего порты 80 (HTTP) и 443 (HTTPS).

  2. Блокировка фаерволом. Локальный или сетевой фаервол активно отклоняет входящие соединения на определенный порт, отправляя RST-пакет вместо молчаливого игнорирования.

  3. Неверная привязка IP-адреса. Сервис может быть настроен на прослушивание только localhost (127.0.0.1), что делает его недоступным извне. В этом случае необходимо изменить конфигурацию на 0.0.0.0 или конкретный внешний IP.

  4. Проблемы с DNS-разрешением. Ошибка может возникнуть, если доменное имя разрешается в неверный IP-адрес.

Диагностика проблемы

Для точного определения причины ошибки используйте следующие инструменты диагностики:

Проверка состояния порта

На Linux:

netstat -tlnp | grep <port>

или

ss -tlnp | grep <port>

Эти команды показывают, слушает ли какой-либо процесс указанный порт.

На Windows:

netstat -an | findstr <port>

Команда отображает состояние всех активных соединений и слушающих портов.

Тестирование подключения

Через telnet:

telnet <host> <port>

При отказе соединения появится сообщение "Connection refused".

Через curl:

curl -v http://<host>:<port>

Эта команда показывает детальный процесс подключения, включая момент отказа с ошибкой "Connection refused".

Проверка DNS

Для проверки корректности разрешения доменного имени используйте:

nslookup <domain>

или

dig <domain>

Анализ логов

Логи веб-сервера могут содержать информацию о причинах остановки или сбоя сервиса. Проверьте файлы:

  • /var/log/nginx/error.log для Nginx
  • /var/log/apache2/error.log для Apache

Способы устранения ошибки

Запуск сервиса

Убедитесь, что целевой сервис (Apache, Nginx, MySQL и др.) запущен и настроен на прослушивание правильного порта. Если сервис остановлен, запустите его согласно документации конкретного приложения.

Проверка конфигурации фаервола

На Linux:

ufw status

или

iptables -L

На Windows: проверьте правила входящих подключений в Windows Defender Firewall. Убедитесь, что нет правил, активно блокирующих нужный порт.

Корректировка привязки IP-адреса

Если сервис доступен только локально, измените его конфигурацию для прослушивания внешнего интерфейса. Например, в Nginx укажите listen 0.0.0.0:80; вместо listen 127.0.0.1:80;.

Частые ошибки

  • Попытка лечения таймаута методами для REFUSED. Не путайте ERR_CONNECTION_REFUSED с ERR_CONNECTION_TIMED_OUT. При таймауте пакеты не получают ответа вообще, а при отказе приходит явный сигнал сброса.
  • Игнорирование привязки к localhost. Сервис работает и порт открыт, но только для локальных подключений. Внешние запросы будут получать отказ.
  • Проверка не того порта. Убедитесь, что проверяете именно тот порт, к которому обращается клиент. HTTP использует порт 80, HTTPS — порт 443.
  • Отсутствие анализа логов. Часто причина остановки сервиса или ошибок конфигурации четко зафиксирована в логах приложения.

FAQ

В чем главное отличие ERR_CONNECTION_REFUSED от ERR_CONNECTION_TIMED_OUT?
REFUSED означает, что сервер активно отклонил соединение, отправив TCP RST-пакет. TIMED_OUT означает, что пакеты теряются или игнорируются без какого-либо ответа, что обычно указывает на проблемы с маршрутизацией или фаервол, который молча дропает пакеты.

Как быстро проверить, слушает ли сервер нужный порт?
Используйте команду telnet <host> <port> или curl -v http://<host>:<port>. На Linux также эффективны netstat -tlnp | grep <port> или ss -tlnp | grep <port>, на Windows — netstat -an | findstr <port>.

Может ли ошибка возникать из-за проблем с DNS?
Да, если доменное имя разрешается в неверный IP-адрес, клиент будет пытаться подключиться к неправильному серверу, который может не слушать нужный порт. Проверьте разрешение через nslookup <domain> или dig <domain>.

Что делать, если сервис запущен, но соединение все равно отказывается?
Проверьте, не настроен ли сервис на прослушивание только localhost (127.0.0.1). Также убедитесь, что фаервол не блокирует входящие соединения на этот порт, и проверьте логи сервиса на наличие ошибок конфигурации.