Блог компанії 3v-Hosting

Як виправити помилку “Connection refused” - покроковий чек-лист

Адміністрування

10 хв.


Помилка Connection Refused — це поширена проблема, яка виникає при спробі доступу до веб-сайтів, служб або серверів через мережу. Ця помилка зазвичай вказує на те, що клієнт (браузер або програма) не зміг встановити з'єднання з цільовим хостом, який відхилив спробу з'єднання. Розуміння основних причин цієї проблеми та її ефективне вирішення мають вирішальне значення для системних адміністраторів, розробників та користувачів.

У цій статті ми розглянемо різні причини помилки Connection Refused, її різні контексти та рішення для її усунення як з точки зору клієнта, так і сервера.

 

 

 

 

 

Що означає помилка Connection Refused простими словами

 

Помилка Connection Refused означає, що комп'ютер або сервер, з яким ви намагаєтеся встановити з'єднання, існує і відповідає, але не приймає ваше підключення. Це як якщо б ви зателефонували — і людина на іншому кінці зняла трубку, але відразу поклала її назад.

Така поведінка свідчить про те, що з'єднання фізично можливе, але або сервіс не слухає потрібний порт, або брандмауер блокує спробу.

 

 

 

 


Причини появи помилки Connection Refused

Повідомлення про помилку Connection Refused може відображатись у різних форматах на різних платформах та у різних інструментах, наприклад:

     ERR_CONNECTION_REFUSED - у веб-браузерах;
     Connection denied - в інструментах командного рядка, таких як curl або telnet;
     Site denied to connect - у браузерах, коли веб-сайт недоступний.

 

Ці повідомлення означають, що цільовий комп'ютер або сервер доступний, але відмовляється дозволити запит на підключення. Зазвичай це відбувається, коли сервер або порт не прослуховуються, брандмауер блокує запит або конфігурація підключення налаштована неправильно.

З технічної точки зору, коли клієнт відправляє запит на підключення по протоколу (наприклад, HTTP, SSH і т. д.), він проходить через кілька рівнів (мережевий стек, брандмауер і т. д.), перш ніж досягти програми. Якщо підключення відхиляється в будь-який момент, клієнт отримує повідомлення "Connection Refused".

 

 

 

Поширені причини помилки Connection Refused

Декілька факторів можуть викликати помилку Connection Refused. Ці проблеми можуть виникнути на рівні клієнта, сервера чи мережі. Давайте розглянемо найпоширеніші причини:

 

• Проблеми на стороні сервера

  Служба не запущена: якщо служба, до якої ви намагаєтеся підключитися, наприклад, веб-сервер, сервер SSH або база даних, не запущена на сервері, клієнт зіткнеться з помилкою connection denied;
  Порт не прослуховується: навіть якщо служба запущена, певний порт може бути не відкритий або не прослуховувати вхідні з'єднання. Це часто відбувається, коли служба неправильно настроєна або прив'язана до неправильної IP-адреси;
  Перевантаження сервера: сервер може відхиляти нові з'єднання, якщо він перебуває під великим навантаженням або досяг межі з'єднань;
  Блокування брандмауером: брандмауер, локальний або мережний, може блокувати вхідні з'єднання на порті, що призводить до помилки Unified Connection;
  Неправильна конфігурація в налаштуваннях сервера: Неправильні налаштування конфігурації служби (наприклад, Apache, NGINX або SSHD) можуть перешкодити серверу правильно обробляти запити на підключення.

 


• Проблеми на стороні клієнта

  Неправильний IP або порт: Якщо клієнт намагається підключитися до неправильної IP-адреси або порту, сервер може не прийняти підключення.
  Проблеми з роздільною здатністю DNS: Якщо DNS не може правильно вирішити IP-адресу сервера, клієнт не зможе підключитися до сервера, що призведе до помилки відмови в підключенні.
  Проблеми з підключенням до мережі: Погане мережне підключення або налаштування маршрутизатора/брандмауера на стороні клієнта також можуть бути причиною цієї проблеми.
  Застаріле клієнтське програмне забезпечення: Іноді застаріле клієнтське програмне забезпечення може не підтримувати необхідні протоколи або функції безпеки, потрібні сервером, що призводить до збоїв підключення.

 


• Проблеми з мережею

  Проблеми з маршрутизацією: Неправильна маршрутизація в мережі може призвести до втрати або відхилення запитів на підключення.
  Проблеми з трансляцією мережних адрес (NAT): Неправильно налаштований NAT може перешкодити серверу правильно приймати вхідні підключення.

 

 

 

Як розпізнати джерело помилки

Перш ніж переходити до активної діагностики, важливо зрозуміти, на якому рівні виникає збій - на стороні клієнта, сервера або самої мережі. Це допоможе уникнути хаотичних перевірок і відразу вибрати правильний напрямок аналізу.

  • Сервер не відповідає взагалі - найчастіша ситуація, коли служба не запущена, порт не слухає або з'єднання блокується міжмережевим екраном.
  • Сервер відповідає, але з'єднання відразу закривається - можлива помилка в конфігурації додатка, невідповідність протоколів, ліміт з'єднань або фільтрація запитів на рівні сервера.
  • Помилка проявляється періодично - найімовірніше, проблема в мережі: перевантаження маршрутизатора, нестабільний NAT або тимчасові обмеження з боку провайдера.
  • Відхилення спостерігається тільки у окремих клієнтів - варто перевірити локальний брандмауер, DNS-кеш і правильність IP/порту.

Щоб уточнити джерело, застосовуються базові утиліти (ping, traceroute, telnet, ss, ufw status та ін.), кожна з яких показує стан з'єднання на своєму рівні.

У наступному розділі наведено конкретні приклади і команди для діагностики на стороні сервера, клієнта і мережі, а також таблицю, яка допоможе швидко визначити, де саме відбувається відмова.

 

 

 

Діагностика помилки Connection Refused

Перед усуненням проблеми важливо точно визначити, де відбувається збій підключення. Ось кілька кроків, які ви можете зробити для визначення основної причини:


• Перевірте стан сервера

Перевірте стан служби: використовуйте такі інструменти, як systemctl або service (Linux), щоб перевірити, чи запущено необхідну службу:

  systemctl status apache2
  systemctl status ssh

Перевірте прослуховування порту: використовуйте netstat або ss, щоб перевірити, чи відкритий чи прослуховується певний порт:

  ss-tuln | grep :80

Якщо порт не відкритий, сервер відмовиться підключатися.

 

• Конфігурація брандмауера та мережі

Перевірте правила брандмауера: на сервері використовуйте iptables або інструменти керування брандмауером (наприклад, firewalld, ufw або брандмауер Windows), щоб переконатися, що порт не блокується:

  sudo ufw status
  sudo iptables -L

Переконайтеся, що брандмауер дозволяє вхідні з'єднання на потрібному порту.

 

Traceroute/Tracerpath: використовуйте traceroute або tracerpath, щоб перевірити, чи правильно маршрутизуються пакети на цільовий сервер:

  traceroute example.com

 

• Діагностика на стороні клієнта

Перевірте IP і порт: переконайтеся, що клієнт підключається до правильної IP-адреси та порту, перевіряючи файл конфігурації або налаштування підключення.


DNS-пошук: виконайте запит nslookup або dig, щоб переконатися, що доменне ім'я дозволяється правильно:

  nslookup example.com
  dig example.com

 

Перевірте наявність проблем із кешем браузера: іноді кешування браузера може призвести до постійних помилок Connection Refused. Очищення кешу та повторна спроба можуть вирішити проблему.

 

• Тестування на рівні мережі

Тест Telnet: використовуйте telnet для перевірки з'єднання із сервером. Це допомагає визначити, чи пов'язана проблема з мережею або службою:

  telnet example.com 80

Якщо з'єднання відхилено, проблема полягає в конфігурації сервера або настройках мережі.

 

 

Таблиця: Визначення джерела помилки Connection Refused

Симптом Ймовірна причина Рівень Команда / інструмент Наступний крок / Рекомендація
Сервер не відповідає, з’єднання одразу відхиляється Служба зупинена або аварійно завершилася Сервер systemctl status nginx або systemctl status ssh Перезапустіть службу та перевірте журнали: journalctl -u <service>
Порт закритий або не прослуховується Програма не прив’язана до правильного адреси або порту Сервер `ss -tuln | grep :80` Перезапустити сервіс, який має слухати порт
Брандмауер блокує підключення Неправильні правила iptables, ufw або firewalld Сервер sudo ufw status або sudo iptables -L -n -v Дозвольте потрібний порт: sudo ufw allow 80/tcp
З’єднання встановлюється, але одразу обривається Помилка конфігурації застосунку або перевищення ліміту з’єднань Сервер sudo tail -n 50 /var/log/nginx/error.log Виправте конфігурацію і перезапустіть службу
Неможливо розпізнати доменне ім’я Помилка DNS або неправильний запис Клієнт dig example.com або nslookup example.com Оновіть DNS-сервери або файл /etc/resolv.conf
З’єднання працює з однієї мережі, але не з іншої Проблеми з маршрутизацією, NAT або фільтрацією провайдера Мережа traceroute example.com Перевірте налаштування маршрутизатора/NAT або скористайтеся VPN
Помилка з’являється час від часу Перевантаження сервера або нестабільність мережі Мережа / Сервер mtr example.com або ping -c 10 example.com Перевірте навантаження та стабільність мережі
Відмова лише на одному клієнті Локальний брандмауер або антивірус блокує вихідні підключення Клієнт sudo iptables -L або перевірка правил антивірусу Дозвольте підключення або додайте виняток у брандмауері

Ці перевірки допоможуть швидко визначити, на якому рівні - клієнт, сервер чи мережа - виникає помилка Connection Refused, перш ніж переходити до її усунення.

 

 

 

Виправлення помилки Connection Refused на стороні сервера

Після того, як причину буде визначено, ви можете реалізувати відповідне рішення. Розгляньмо, як виправити помилку в залежності від ситуації.


• Переконайтеся, що служба запущена

Якщо потрібна служба сервера (наприклад, HTTP або SSH) не запущена, перезапустіть службу:

  sudo systemctl restart apache2
  sudo systemctl restart ssh

Якщо служба не запускається, перевірте журнали в /var/log/ або в каталозі журналів конкретної служби, щоб отримати докладніші повідомлення про помилки.

 

• Відкрийте потрібний порт

Переконайтеся, що сервер прослуховує потрібний порт. Відредагуйте файли конфігурації (наприклад, /etc/apache2/ports.conf для Apache), щоб переконатися, що порт правильний. Перезапустіть службу після внесення змін.

Наприклад, якщо сервер повинен прослуховувати порт 8080, але не прослуховує, ви можете вручну змінити налаштування порту:

  Listen 8080

 

• Оновіть правила брандмауера

Відкрийте порт за допомогою ufw або інших інструментів керування брандмауером:

  sudo ufw allow 80/tcp
  sudo ufw allow 443/tcp

Для iptables вам може знадобитися додати правило для прийому підключень до порту:

  sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

 

• Перевірте наявність проблем, характерних для програм

Для веб-застосунків, що працюють на таких серверах, як NGINX або Apache, неправильні налаштування віртуальних хостів або параметрів зворотного проксі-сервера можуть призвести до того, що сервер відхилятиме підключення. Двічі перевірте файли конфігурації (наприклад, /etc/nginx/nginx.conf) і переконайтеся у відсутності синтаксичних помилок:

  sudo nginx -t
  sudo apachectl configtest

Виправте всі виявлені проблеми в цих конфігураційних файлах і перезапустіть службу.

 

 

 

Рішення помилки Connection Refused на стороні клієнта

Помилка connection denied також може виникати на стороні клієнта. Ось як виправити найпоширеніші проблеми на стороні клієнта.


• Перевірте інформацію про підключення

Переконайтеся, що клієнт підключається до правильної IP-адреси, імені хоста та порту. Двічі перевірте настройки клієнтської програми, особливо під час роботи з такими службами, як SSH, FTP або веб-програмами.


• Очистіть кеш браузера

Якщо ви зіткнулися з повідомленням ERR_CONNECTION_REFUSED у браузері, очищення кешу браузера та файлів cookie може вирішити проблему. Перейдіть до настройок браузера, очистіть кеш і спробуйте повторно підключитися.


• Конфігурація мережі та DNS

Якщо проблема пов'язана з помилками вирішення DNS, можна змінити налаштування DNS, щоб використовувати загальнодоступний DNS, наприклад Google (8.8.8.8) або Cloudflare (1.1.1.1). Це можна зробити або на клієнтському комп'ютері або на маршрутизаторі.

 

 

 

Вирішення проблем Connection Refused на рівні мережі

Проблеми мережі, такі як неправильна маршрутизація, неправильна конфігурація NAT або блокування ISP також можуть викликати помилки відмови в підключенні. Ось як вирішити такі проблеми:


• Перевірте налаштування маршрутизатора та брандмауера

Переконайтеся, що маршрутизатор перенаправляє правильні порти, якщо сервер знаходиться за NAT. За потреби відкрийте порти та переконайтеся, що брандмауер не блокує їх.


• Використовуйте VPN

Якщо помилка виникає через географічні обмеження або блокування ISP, використання VPN може допомогти обійти ці обмеження та підключитися до сервера.

 

 

 

Як запобігти появі помилки Connection Refused у майбутньому

Після усунення проблеми важливо не лише відновити з’єднання, але й запобігти повторному виникненню помилки Connection Refused. Регулярний моніторинг і базова автоматизація дозволяють вчасно виявляти неполадки та зменшити ризик простоїв сервісів.

 

Налаштуйте моніторинг портів і служб

Використовуйте інструменти моніторингу, такі як Netdata, Prometheus, Zabbix або Uptime Kuma, щоб відстежувати доступність портів, сервісів і мережевих підключень.
Ці рішення сповіщають у режимі реального часу про збої, блокування портів чи перевантаження, дозволяючи усунути проблему ще до того, як її помітять користувачі.

 

Автоматизуйте перезапуск служб

Для системних демонів і мережевих сервісів використовуйте параметр Restart=always у файлах unit для systemd.
Це забезпечить автоматичний перезапуск служби після збою або оновлення.

Приклад:

     [Service]
     ExecStart=/usr/bin/myservice
     Restart=always
     RestartSec=5 

 

Регулярно оновлюйте систему та DNS-кеш

Періодичне оновлення безпекових пакетів і бібліотек зменшує ризик сумісності або вразливостей.
Очищення та оновлення DNS-кешу допомагає уникнути проблем через застарілі записи доменів.

 

Додайте автоматичну перевірку з’єднання

Створіть просте завдання cron для регулярної перевірки доступності потрібного порту та запису результатів у журнал. Це особливо корисно для вебсерверів і API.

     */10 * * * * nc -zv your-server.com 80 >> /var/log/conn_check.log 2>&1 

 

Ця команда кожні 10 хвилин перевірятиме доступність порту 80 та записуватиме результат у файл /var/log/conn_check.log.
За потреби можна додати кілька портів або доменів для моніторингу.

 

Рекомендовані інструменти моніторингу

Інструмент Призначення Особливості
Netdata Моніторинг серверів і портів у реальному часі Легка установка, автоматичні метрики
Prometheus Збір метрик з інтеграцією з Grafana Оптимальний для кластерів і контейнерів
Zabbix Повний моніторинг інфраструктури Гнучкі тригери й сповіщення
Uptime Kuma Відстеження доступності HTTP/HTTPS і TCP Зручний вебінтерфейс, графічні звіти
Monit Локальний контроль процесів і служб Автоматичний перезапуск у разі збою

 

 

 

 

Висновок

Помилка Connection Refused може виникнути через різні проблеми як на стороні клієнта, так і на стороні сервера. Методично діагностуючи проблему за допомогою перевірок стану служби, конфігурацій брандмауера та мережевих тестів, ви можете визначити першопричину та застосувати відповідні виправлення. Чи це неправильно налаштований сервер, проблеми з мережею або проста помилка на стороні клієнта, розуміння потенційних причин відмови в підключенні допоможе ефективно вирішити проблему.

Для чого використовуються VPS-сервери?
Для чого використовуються VPS-сервери?

Повний огляд застосувань VPS: реальні приклади, інфраструктура для бізнесу, VPN, CI/CD та середовища розробки. Допомагає вибрати оптимальний сервер.

9 хв