“连接被拒绝”与“没有到主机的路由”

Ere*_*evi 23 networking apache-http-server routing

我有一个在服务器上运行的 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
....
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试连接到本地主机时,我收到“连接被拒绝”:

[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.
Run Code Online (Sandbox Code Playgroud)

当我尝试连接到本地 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.
Run Code Online (Sandbox Code Playgroud)

另一方面,当我在同一网络中的另一台计算机上尝试相同的操作时,出现不同的错误“没有到主机的路由”:

[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.
Run Code Online (Sandbox Code Playgroud)

为什么我会收到这些错误?我应该怎么做才能从同一台计算机和网络中的其他计算机连接到 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          
Run Code Online (Sandbox Code Playgroud)

Dan*_*l B 32

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

  • 没有在 127.0.0.1:80 和 132.70.6.157:80 收听
  • 什么都没有听 *:80
  • 防火墙阻止了与 REJECT 的连接

因此,请检查您的 Apache 和 iptables 配置。

“没有到主机的路由”是指网络问题。它不是来自目标机器的回复。


Ter*_*nen 16

显示 的输出netstat -lnp,以便我们可以看到哪些进程实际上正在侦听服务器上的哪些端口,以及它们绑定到哪些 IP 地址。

关于第二台计算机,其网络连接看起来已损坏。netstat -rn将对那里的问题提供一些见解。

为了提供更好的建议,需要有关两台计算机上的一般网络配置和 IP 配置的更多详细信息。

编辑:

您必须更改 Apache 配置,使其成为 HTTP 服务器,而不是 SSL 服务器。大多数情况下,配置文件位于 /etc/apache2 下。

其他问题还需要IP配置和网络配置信息来分析。traceroute 信息没有透露任何信息。


小智 5

我发现这篇文章描述了我在公共云计算节点上尝试使用 nodejs 设置简单的 http 页面时遇到的问题。

这个命令对我有用:

iptables -F

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

警告:由于我使用了属于公共云 VCN 的分布式防火墙,因此我并没有真正使用操作系统的防火墙。如果您没有外部防火墙,请确保在 iptables 中添加防火墙规则。