Блог компанії 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 може допомогти обійти ці обмеження та підключитися до сервера.
Висновок
Помилка «відмовлено у підключенні» може виникнути через різні проблеми як на стороні клієнта, так і на стороні сервера. Методично діагностуючи проблему за допомогою перевірок стану служби, конфігурацій брандмауера та мережевих тестів, ви можете визначити першопричину та застосувати відповідні виправлення. Чи це неправильно налаштований сервер, проблеми з мережею або проста помилка на стороні клієнта, розуміння потенційних причин відмови в підключенні допоможе ефективно вирішити проблему.