为什么我的服务器无法访问自己的地址?

为什么我的服务器无法访问自己的地址?

我在 CentOS 6.5 上有两个虚拟机,运行 Plesk 12,Web 服务器是 Apache 2.2。其中一个是另一个的克隆,我继承了其他人的设置。我的问题是,我可以从任何计算机访问服务器上托管的网站除了这些服务器本身

假设 example.com 指向我的其中一台服务器。如果我通过 SSH 连接到其中任意一台服务器并运行, wget example.com我将得到以下结果:

--2014-10-20 18:01:42--  http://example.com/ Resolving example.com... <ip address>
Connecting to example.com|<ip address>|:80... failed:
Connection timed out. Retrying.

它解析的 IP 地址是正确的。如果我wget直接使用该 IP 地址在服务器上运行,我也会得到相同的负面结果。

如果我wget在这些虚拟机之外的计算机上运行同一个域,我会解析到相同的正确 IP,并且我已连接。在虚拟机上使用 localhost 确实可以正常工作:

wget localhost
--2014-10-20 18:12:35--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.

问题似乎是服务器在获取 IP 地址后不知道该做什么,而我在这方面的知识已经所剩无几了。任何有关这方面的指导都将不胜感激!

答案1

您需要一条将流量引导至本地接口的路由,并且可能会遇到防火墙问题。

添加路由的输出netstat -an。可能是ipchains -Liptables -L列出防火墙规则。

答案2

谢谢大家的评论,让我把所有东西都整理好了,也让我学到了很多东西。我找到了一个很好的解决方案,不需要对运行 NAT 的路由器做任何事情。 本文描述了我的问题并给出了一个很好的解决方案,我认为与 mc0e 建议的方向一致。

下面是我为获取此路由而运行的命令:

iptables -t nat -A OUTPUT -d <external ip addr> -s <subnet range> -j DNAT --to-destination <internal ip addr>

相关内容