17

У меня сервер 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          

4 ответа4

25

"Отказ в соединении" означает, что целевой компьютер активно отклонил соединение. С портом 80 в качестве контекста одна из следующих вещей, вероятно, является причиной:

  • Ничто не слушает 127.0.0.1:80 и 132.70.6.157:80
  • Ничего не слушает *:80
  • Брандмауэр блокирует соединение с REJECT

Так что проверьте ваш конфиг Apache и iptables.

"Нет маршрута к хосту" относится к проблеме сети. Это не ответ от целевой машины.

13

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

Что касается второго компьютера, его сетевое подключение выглядит нарушенным. netstat -rn даст некоторое представление о проблеме там.

Чтобы получить более качественный совет, необходимо больше подробностей относительно общей конфигурации сети и конфигурации IP на обоих компьютерах.

Редактировать:

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

Информация о конфигурации IP и конфигурации сети все еще необходима для анализа другой проблемы. Информация трассировки ничего не раскрыла.

1

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

Эта команда сделала свое дело для меня:

iptables -F

Эта команда сбрасывает, т.е. очищает правила брандмауэра, которые установлены внутри системы Linux.

Предостережение: поскольку я использую распределенный брандмауэр, который является частью Public Cloud VCN, я на самом деле не использовал брандмауэр моей ОС. Если у вас нет внешнего брандмауэра, обязательно добавьте правило брандмауэра в iptables.

0

Ссылаясь на ответ Рона Мопина из https://networkengineering.stackexchange.com/questions/33397/debugging-no-route-to-host-over-ethernet:

Сообщение ICMP «нет маршрута к хосту» означает, что ARP не может найти адрес уровня 2 для хоста назначения. Обычно это означает, что хост с таким IP-адресом не подключен или не отвечает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .