Керування логами необхідне для моніторингу активності системи, усунення неполадок і забезпечення стабільності системи в середовищі Linux. У цій статті розглядаю...
Блог компанії 3v-Hosting
10 хв.
Помилка 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. Ці проблеми можуть виникнути на рівні клієнта, сервера чи мережі. Давайте розглянемо найпоширеніші причини:
Служба не запущена: якщо служба, до якої ви намагаєтеся підключитися, наприклад, веб-сервер, сервер SSH або база даних, не запущена на сервері, клієнт зіткнеться з помилкою connection denied;
Порт не прослуховується: навіть якщо служба запущена, певний порт може бути не відкритий або не прослуховувати вхідні з'єднання. Це часто відбувається, коли служба неправильно настроєна або прив'язана до неправильної IP-адреси;
Перевантаження сервера: сервер може відхиляти нові з'єднання, якщо він перебуває під великим навантаженням або досяг межі з'єднань;
Блокування брандмауером: брандмауер, локальний або мережний, може блокувати вхідні з'єднання на порті, що призводить до помилки Unified Connection;
Неправильна конфігурація в налаштуваннях сервера: Неправильні налаштування конфігурації служби (наприклад, Apache, NGINX або SSHD) можуть перешкодити серверу правильно обробляти запити на підключення.
Неправильний IP або порт: Якщо клієнт намагається підключитися до неправильної IP-адреси або порту, сервер може не прийняти підключення.
Проблеми з роздільною здатністю DNS: Якщо DNS не може правильно вирішити IP-адресу сервера, клієнт не зможе підключитися до сервера, що призведе до помилки відмови в підключенні.
Проблеми з підключенням до мережі: Погане мережне підключення або налаштування маршрутизатора/брандмауера на стороні клієнта також можуть бути причиною цієї проблеми.
Застаріле клієнтське програмне забезпечення: Іноді застаріле клієнтське програмне забезпечення може не підтримувати необхідні протоколи або функції безпеки, потрібні сервером, що призводить до збоїв підключення.
Проблеми з маршрутизацією: Неправильна маршрутизація в мережі може призвести до втрати або відхилення запитів на підключення.
Проблеми з трансляцією мережних адрес (NAT): Неправильно налаштований NAT може перешкодити серверу правильно приймати вхідні підключення.
Перш ніж переходити до активної діагностики, важливо зрозуміти, на якому рівні виникає збій - на стороні клієнта, сервера або самої мережі. Це допоможе уникнути хаотичних перевірок і відразу вибрати правильний напрямок аналізу.
Щоб уточнити джерело, застосовуються базові утиліти (ping, traceroute, telnet, ss, ufw status та ін.), кожна з яких показує стан з'єднання на своєму рівні.
У наступному розділі наведено конкретні приклади і команди для діагностики на стороні сервера, клієнта і мережі, а також таблицю, яка допоможе швидко визначити, де саме відбувається відмова.
Перед усуненням проблеми важливо точно визначити, де відбувається збій підключення. Ось кілька кроків, які ви можете зробити для визначення основної причини:
Перевірте стан служби: використовуйте такі інструменти, як 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
Якщо з'єднання відхилено, проблема полягає в конфігурації сервера або настройках мережі.
| Симптом | Ймовірна причина | Рівень | Команда / інструмент | Наступний крок / Рекомендація |
|---|---|---|---|---|
| Сервер не відповідає, з’єднання одразу відхиляється | Служба зупинена або аварійно завершилася | Сервер | 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, перш ніж переходити до її усунення.
Після того, як причину буде визначено, ви можете реалізувати відповідне рішення. Розгляньмо, як виправити помилку в залежності від ситуації.
Якщо потрібна служба сервера (наприклад, 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 denied також може виникати на стороні клієнта. Ось як виправити найпоширеніші проблеми на стороні клієнта.
Переконайтеся, що клієнт підключається до правильної IP-адреси, імені хоста та порту. Двічі перевірте настройки клієнтської програми, особливо під час роботи з такими службами, як SSH, FTP або веб-програмами.
Якщо ви зіткнулися з повідомленням ERR_CONNECTION_REFUSED у браузері, очищення кешу браузера та файлів cookie може вирішити проблему. Перейдіть до настройок браузера, очистіть кеш і спробуйте повторно підключитися.
Якщо проблема пов'язана з помилками вирішення DNS, можна змінити налаштування DNS, щоб використовувати загальнодоступний DNS, наприклад Google (8.8.8.8) або Cloudflare (1.1.1.1). Це можна зробити або на клієнтському комп'ютері або на маршрутизаторі.
Проблеми мережі, такі як неправильна маршрутизація, неправильна конфігурація NAT або блокування ISP також можуть викликати помилки відмови в підключенні. Ось як вирішити такі проблеми:
Переконайтеся, що маршрутизатор перенаправляє правильні порти, якщо сервер знаходиться за NAT. За потреби відкрийте порти та переконайтеся, що брандмауер не блокує їх.
Якщо помилка виникає через географічні обмеження або блокування ISP, використання VPN може допомогти обійти ці обмеження та підключитися до сервера.
Після усунення проблеми важливо не лише відновити з’єднання, але й запобігти повторному виникненню помилки Connection Refused. Регулярний моніторинг і базова автоматизація дозволяють вчасно виявляти неполадки та зменшити ризик простоїв сервісів.
Використовуйте інструменти моніторингу, такі як Netdata, Prometheus, Zabbix або Uptime Kuma, щоб відстежувати доступність портів, сервісів і мережевих підключень.
Ці рішення сповіщають у режимі реального часу про збої, блокування портів чи перевантаження, дозволяючи усунути проблему ще до того, як її помітять користувачі.
Для системних демонів і мережевих сервісів використовуйте параметр Restart=always у файлах unit для systemd.
Це забезпечить автоматичний перезапуск служби після збою або оновлення.
Приклад:
[Service]
ExecStart=/usr/bin/myservice
Restart=always
RestartSec=5
Періодичне оновлення безпекових пакетів і бібліотек зменшує ризик сумісності або вразливостей.
Очищення та оновлення 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 може виникнути через різні проблеми як на стороні клієнта, так і на стороні сервера. Методично діагностуючи проблему за допомогою перевірок стану служби, конфігурацій брандмауера та мережевих тестів, ви можете визначити першопричину та застосувати відповідні виправлення. Чи це неправильно налаштований сервер, проблеми з мережею або проста помилка на стороні клієнта, розуміння потенційних причин відмови в підключенні допоможе ефективно вирішити проблему.
Прискорення WordPress на рівні Nginx: правильні налаштування PHP-FPM, try_files, статика, кешування, Brotli, захист wp-login і безпечні заголовки для стабільної...
Ефективні стратегії резервного копіювання Docker-додатків: як захищати томи, дані та конфігурації, уникаючи при цьому типових помилок, а також швидко відновлюва...
Повний огляд застосувань VPS: реальні приклади, інфраструктура для бізнесу, VPN, CI/CD та середовища розробки. Допомагає вибрати оптимальний сервер.