Блог компании 3v-Hosting
Как исправить ошибку «Connection Refused»
6 мин.
Ошибка «Connection Refused» — это распространенная проблема, возникающая при попытке доступа к веб-сайтам, службам или серверам по сети. Эта ошибка обычно указывает на то, что клиент (браузер или приложение) не смог установить соединение с целевым хостом, который «отклонил» попытку соединения. Понимание основных причин этой проблемы и ее эффективное решение имеют решающее значение для системных администраторов, разработчиков и пользователей.
В этой статье мы рассмотрим различные причины ошибки «Connection Refused», ее различные контексты и решения для ее устранения как с точки зрения клиента, так и с точки зрения сервера.
1. Причины появления ошибки «Connection Refused»
Сообщение об ошибке «Connection Refused» может отображаться в разных форматах на разных платформах и в разных инструментах, например:
«ERR_CONNECTION_REFUSED» (в веб-браузерах)
«Connection denied» (в инструментах командной строки, таких как curl или telnet)
«Site denied to connect» (в браузерах, когда веб-сайт недоступен)
Эти сообщения означают, что целевой компьютер или сервер доступен, но отказывается разрешить запрос на подключение. Обычно это происходит, когда сервер или порт не прослушивается, брандмауэр блокирует запрос или конфигурация подключения настроена неправильно.
С технической точки зрения, когда клиент отправляет запрос на подключение по протоколу (например, HTTP, SSH и т. д.), он проходит через несколько уровней (сетевой стек, брандмауэр и т. д.) перед тем, как достичь приложения. Если подключение отклоняется в какой-либо момент, клиент получает сообщение «Connection Refused».
2. Распространенные причины ошибки «Connection Refused»
Несколько факторов могут вызвать ошибку «Connection Refused». Эти проблемы могут возникнуть на уровне клиента, сервера или сети. Давайте рассмотрим распространенные причины:
a. Проблемы на стороне сервера
Служба не запущена: если служба, к которой вы пытаетесь подключиться (например, веб-сервер, сервер SSH или база данных), не запущена на сервере, клиент столкнется с ошибкой «connection denied».
Порт не прослушивается: даже если служба запущена, определенный порт может быть не открыт или не прослушивать входящие соединения. Это часто происходит, когда служба неправильно настроена или привязана к неправильному IP-адресу.
Перегрузка сервера: сервер может отклонять новые соединения, если он находится под большой нагрузкой или достиг предела соединений.
Блокировка брандмауэром: брандмауэр (локальный или сетевой) может блокировать входящие соединения на порту, что приводит к ошибке «Unified Connection».
Неправильная конфигурация в настройках сервера: Неправильные настройки в конфигурации службы (например, Apache, NGINX или SSHD) могут помешать серверу правильно обрабатывать запросы на подключение.
б. Проблемы на стороне клиента
Неправильный IP или порт: Если клиент пытается подключиться к неправильному IP-адресу или порту, сервер может не принять подключение.
Проблемы с разрешением DNS: Если DNS не может правильно разрешить IP-адрес сервера, клиент не сможет подключиться к серверу, что приведет к ошибке отказа в подключении.
Проблемы с сетевым подключением: Плохое сетевое подключение или настройки маршрутизатора/брандмауэра на стороне клиента также могут быть причиной этой проблемы.
Устаревшее клиентское программное обеспечение: Иногда устаревшее клиентское программное обеспечение может не поддерживать необходимые протоколы или функции безопасности, требуемые сервером, что приводит к сбоям подключения.
в. Проблемы с сетью
Проблемы с маршрутизацией: Неправильная маршрутизация в сети может привести к потере или отклонению запросов на подключение.
Проблемы с трансляцией сетевых адресов (NAT): Неправильно настроенный NAT может помешать серверу правильно принимать входящие подключения.
3. Диагностика ошибки «Отказано в подключении»
Перед устранением проблемы важно точно определить, где происходит сбой подключения. Вот несколько шагов, которые вы можете предпринять для определения основной причины:
a. Проверьте состояние сервера
Проверьте состояние службы: используйте такие инструменты, как systemctl или service (Linux), чтобы проверить, запущена ли требуемая служба:
systemctl status apache2
systemctl status ssh
Проверьте прослушивание порта: используйте netstat или ss, чтобы проверить, открыт ли и прослушивается ли определенный порт:
ss -tuln | grep :80
Если порт не открыт, сервер откажется подключаться.
b. Конфигурация брандмауэра и сети
Проверьте правила брандмауэра: на сервере используйте iptables или инструменты управления брандмауэром (например, firewalld, ufw или брандмауэр Windows), чтобы убедиться, что порт не блокируется:
sudo ufw status
sudo iptables -L
Убедитесь, что брандмауэр разрешает входящие соединения на требуемом порту.
Traceroute/Tracerpath: используйте traceroute или tracerpath, чтобы проверить, правильно ли маршрутизируются пакеты на целевой сервер:
traceroute example.com
c. Диагностика на стороне клиента
Проверьте IP и порт: убедитесь, что клиент подключается к правильному IP-адресу и порту, перепроверив файл конфигурации или настройки подключения.
DNS-поиск: выполните запрос nslookup или dig, чтобы убедиться, что доменное имя разрешается правильно:
nslookup example.com
dig example.com
Проверьте наличие проблем с кэшем браузера: иногда кэширование браузера может приводить к постоянным ошибкам «отказано в подключении». Очистка кэша и повторная попытка могут решить проблему.
d. Тестирование на уровне сети
Тест Telnet: используйте telnet для проверки соединения с сервером. Это помогает определить, связана ли проблема с сетью или службой:
telnet example.com 80
Если соединение отклонено, проблема заключается в конфигурации сервера или сетевых настройках.
Другие статьи по теме администрирования в нашем Блоге:
- Как удаленно подключиться к MySQL
- IP-адреса: краеугольный камень Интернета
- Установка конкретной версии cPanel на сервер
- 10 самых часто употребляемых примеров для IPTABLES
4. Исправление ошибки «Connection Refused»: решения на стороне сервера
После того, как причина будет определена, вы можете реализовать соответствующее решение. Давайте рассмотрим, как исправить ошибку в зависимости от ситуации.
a. Убедитесь, что служба запущена
Если требуемая служба сервера (например, HTTP или SSH) не запущена, перезапустите службу:
sudo systemctl restart apache2
sudo systemctl restart ssh
Если служба не запускается, проверьте журналы в /var/log/ или в каталоге журналов конкретной службы для получения более подробных сообщений об ошибках.
b. Откройте требуемый порт
Убедитесь, что сервер прослушивает требуемый порт. Отредактируйте файлы конфигурации (например, /etc/apache2/ports.conf для Apache), чтобы убедиться, что привязан правильный порт. Перезапустите службу после внесения изменений.
Например, если сервер должен прослушивать порт 8080, но не прослушивает, вы можете вручную изменить настройки порта:
Listen 8080
c. Обновите правила брандмауэра
Откройте нужный порт с помощью ufw или других инструментов управления брандмауэром:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Для iptables вам может потребоваться добавить правило для приема подключений к порту:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
d. Проверьте наличие проблем, характерных для приложений
Для веб-приложений, работающих на таких серверах, как NGINX или Apache, неправильные настройки виртуальных хостов или параметров обратного прокси-сервера могут привести к тому, что сервер будет отклонять подключения. Дважды проверьте файлы конфигурации (например, /etc/nginx/nginx.conf) и убедитесь в отсутствии синтаксических ошибок:
sudo nginx -t
sudo apachectl configtest
Исправьте все обнаруженные проблемы в этих файлах конфигурации и перезапустите службу.
5. Решения на стороне клиента для ошибки «Connection Refused»
Ошибка «connection denied» также может возникать на стороне клиента. Вот как исправить распространенные проблемы на стороне клиента.
a. Проверьте сведения о подключении
Убедитесь, что клиент подключается к правильному IP-адресу, имени хоста и порту. Дважды проверьте настройки клиентского приложения, особенно при работе с такими службами, как SSH, FTP или веб-приложениями.
b. Очистите кэш браузера
Если вы столкнулись с сообщением «ERR_CONNECTION_REFUSED» в браузере, очистка кэша браузера и файлов cookie может решить проблему. Перейдите к настройкам браузера, очистите кэш и попробуйте подключиться повторно.
c. Конфигурация сети и DNS
Если проблема связана с ошибками разрешения DNS, вы можете изменить настройки DNS, чтобы использовать общедоступный DNS, например Google (8.8.8.8) или Cloudflare (1.1.1.1). Это можно сделать либо на клиентском компьютере, либо на маршрутизаторе.
6. Решение проблем на уровне сети
Проблемы сети, такие как неправильная маршрутизация, неправильная конфигурация NAT или блокировки ISP, также могут вызывать ошибки отказа в подключении. Вот как решить такие проблемы:
a. Проверьте настройки маршрутизатора и брандмауэра
Убедитесь, что ваш маршрутизатор перенаправляет правильные порты, если сервер находится за NAT. Откройте порты по мере необходимости и убедитесь, что брандмауэр не блокирует их.
b. Используйте VPN
Если ошибка возникает из-за географических ограничений или блокировок ISP, использование VPN может помочь обойти эти ограничения и подключиться к серверу.
Заключение
Ошибка «отказано в подключении» может возникнуть из-за различных проблем как на стороне клиента, так и на стороне сервера. Методично диагностируя проблему с помощью проверок состояния службы, конфигураций брандмауэра и сетевых тестов, вы можете определить первопричину и применить соответствующие исправления. Будь то неправильно настроенный сервер, проблемы с сетью или простая ошибка на стороне клиента, понимание потенциальных причин отказа в подключении поможет эффективно решить проблему.