我在 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 -L
或iptables -L
列出防火墙规则。
答案2
谢谢大家的评论,让我把所有东西都整理好了,也让我学到了很多东西。我找到了一个很好的解决方案,不需要对运行 NAT 的路由器做任何事情。 本文描述了我的问题并给出了一个很好的解决方案,我认为与 mc0e 建议的方向一致。
下面是我为获取此路由而运行的命令:
iptables -t nat -A OUTPUT -d <external ip addr> -s <subnet range> -j DNAT --to-destination <internal ip addr>