"З'єднання відмовлено" проти "Нема маршруту до хоста"


20

У мене на сервері працює сервер Apache:

[root@te-srv2 ~]# ps -ecf|grep httpd
root       698 32047 TS   19 10:45 pts/24   00:00:00 grep httpd
root     32081     1 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32083 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
apache   32084 32081 TS   19 10:16 ?        00:00:00 /usr/sbin/httpd
....

Однак, коли я намагаюся підключитися до локального хоста, я отримую "З'єднання відмовлено":

[root@te-srv2 ~]# wget http://127.0.0.1
--2014-02-24 10:46:16--  http://127.0.0.1/
Connecting to 127.0.0.1:80... failed: Connection refused.

Те саме відбувається, коли я намагаюся підключитися до локальної IP-адреси:

[root@te-srv2 ~]# wget http://132.70.6.157
--2014-02-24 10:46:40--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: Connection refused.

З іншого боку, коли я спробую те ж саме з іншого комп’ютера в тій же мережі, я отримую іншу помилку "Нема маршруту до хоста":

[erelsgl@erel-biu ~]$ wget http://132.70.6.157
--2014-02-24 10:49:11--  http://132.70.6.157/
Connecting to 132.70.6.157:80... failed: No route to host.

Чому я отримую ці помилки? І що мені робити, щоб мати змогу підключитися до http-сервера як з того самого комп’ютера, так і з інших комп’ютерів у мережі?

ОНОВЛЕННЯ: На підставі коментарів та відповідей, ось додаткова інформація:

[root@te-srv2 ~]# traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.082 ms  0.007 ms  0.005 ms

[erelsgl@erel-biu ~]$ traceroute 132.70.6.157
traceroute to 132.70.6.157 (132.70.6.157), 30 hops max, 60 byte packets
 1  te-srv2 (132.70.6.157)  0.446 ms !X  0.431 ms !X  0.420 ms !X

[root@te-srv2 ~]# netstat -lnp|grep http
tcp        0      0 :::443                      :::*                        LISTEN      5756/httpd          

Чи можете ви traceroute 132.70.6.157з обох серверів і порівняти вихід?
Вернер Гензе

1
443 - порти SSL (https). Перевірте конфігурацію, щоб переконатися, що ви слухаєте http-порт 80.
Mikpa

Відповіді:


13

Покажіть вихід netstat -lnp, щоб ми могли бачити, які процеси насправді прослуховують, які порти на сервері та які IP-адреси вони пов'язані.

Щодо другого комп’ютера, його мережеве підключення виглядає порушеним. netstat -rnдасть деяке розуміння проблеми.

Для того, щоб дати кращі поради, потрібно більше детальних даних щодо загальної конфігурації мережі та конфігурації IP на обох комп'ютерах.

Редагувати:

Ви повинні змінити конфігурацію Apache, щоб це був HTTP-сервер, а не SSL-сервер. Файли конфігурації більшу частину часу знаходяться під / etc / apache2.

Інформація про конфігурацію IP та мережу конфігурації все ще потрібна для аналізу іншої проблеми. Інформація про слідування не виявила нічого.


Дійсно, немає прослуховування порту 80! Сервер Apache прослуховує порт 443. Але чому це?
Ерел Сегал-Халеві

@ErelSegalHalevi: зазвичай 80 - це HTTP, 443 - HTTPS (якщо ви не зміните ці порти за замовчуванням). Тож, можливо, додаток очікує лише HTTPS?
Олів'є Дулак,

Завдяки netstat ми з’ясували, що це справді проблема конфігурації в Apache.
Ерел Сегал-Халеві

26

"Підключення відмовлено" означає, що цільова машина активно відхиляла з'єднання. Якщо порт 80 є контекстом, ймовірно, є одна з наступних речей:

  • Нічого не слухає на 127.0.0.1:80 та 132.70.6.157:80
  • Нічого не слухає на *: 80
  • Брандмауер блокує з'єднання з REJECT

Тому перевірте конфігурацію Apache та iptables.

"Нема маршруту до хоста" посилається на мережеву проблему. Це не відповідь цільової машини.


проблема з мережею? тож як один і той же домен може повернути "відмовлено в з’єднанні" для одного і "немає маршруту для розміщення" для іншого порту, на тому ж домені?
phil294

Можливо, ваш брандмауер або проксі блокує інший порт, тому це проблема з мережею?
croraf

3

Я знайшов цю публікацію, що описує проблему, з якою я стикався, намагаючись налаштувати просту сторінку http за допомогою nodejs на обчислювальному вузлі Public Cloud.

Ця команда зробила для мене хитрість:

iptables -F

Ця команда змиває, тобто очищує правила брандмауера, які встановлюються всередині системи Linux.

Слово застереження: Оскільки я використовую розподілений брандмауер, який є частиною Public Cloud VCN, я дійсно не використовував брандмауер своєї ОС. Якщо у вас немає зовнішнього брандмауера, обов’язково додайте правило брандмауера в iptables.


1

Посилаючись на відповідь Рона Маупіна з /networkengineering/33397/debugging-no-route-to-host-over-ethernet :

Повідомлення ICMP "немає маршруту до хоста" означає, що ARP не може знайти адресу рівня 2 для хоста призначення. Зазвичай це означає, що хост з цією IP-адресою не в мережі або не відповідає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.