2014-02-24 08:49:11 +0000 2014-02-24 08:49:11 +0000
20
20

"连接被拒绝 "VS "没有通往主机的路由"

我有一个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)

26
26
26
2014-02-24 09:11:38 +0000

“连接拒绝 "表示目标机器主动拒绝连接。以80端口为上下文,可能是以下原因之一:

  • 127.0.0.1:80和132.70.6.157:80上没有任何东西在监听
  • *:80上没有任何东西在监听
  • 防火墙用REJECT阻断了连接

所以检查你的Apache和iptables配置。

"No route to host” 指的是网络问题。这不是目标机器的回复。

13
13
13
2014-02-24 09:09:12 +0000

显示netstat -lnp的输出,这样我们就可以看到哪些进程到底在监听服务器上的哪些端口,以及它们绑定的IP地址。

关于第二台计算机,它的网络连接看起来已经中断了。netstat -rn会让我们对那里的问题有一些了解。

为了给出更好的建议,需要更多关于两台电脑的一般网络配置和IP配置的细节。

编辑:

你必须改变你的Apache配置,使它成为一个HTTP服务器,而不是SSL服务器。大多数情况下,配置文件位于/etc/apache2下。

要分析另一个问题,还需要IP配置和网络配置信息。traceroute信息没有发现任何问题。

3
3
3
2018-06-14 09:23:31 +0000

我找到了这个帖子,描述了我在公有云计算节点上使用nodejs设置一个简单的http页面时遇到的问题。

这个命令帮我解决了这个问题。

iptables -F

这条命令刷新即清除Linux系统内部设置的防火墙规则。

需要注意的是。由于我使用的是公有云VCN中的分布式防火墙,所以我并没有真正使用操作系统的防火墙。如果你没有外部防火墙,一定要在iptables中添加一个防火墙规则。

1
1
1
2017-08-01 08:16:53 +0000

引用Ron Maupin在 https://networkengineering.stackexchange.com/questions/33397/debugging-no-route-to-host-over-ethernet 的回答。

ICMP信息 “没有通往主机的路由 "意味着ARP找不到目标主机的2层地址。通常情况下,这意味着拥有该IP地址的主机没有在线或响应。