wget适用于Web上的所有站点,但不适用于该服务器上托pipe的站点

我目前有2个Ubuntu 12.04服务器负载均衡。 如果我从shell上去找他们,然后input:

wget stackoverflow.com 

该页面被提取到index.html 。 但是,假设在这些服务器上托pipe的网站名为mysite.com ,正在调用

 wget mysite.com 

我得到:

 Resolving mysite.com (mysite.com)... 50.XXX.YY.ZZZ Connecting to mysite.com (mysite.com)|50.XXX.YY.ZZZ|:80... failed: Connection refused. 

其中50.XXX.YY.ZZZmysite.com的公开IP。 任何想法这些服务器上有什么问题?

基本的问题是这样的:

  1. 服务器有一个私人的IP地址。 (为了简单起见,我将它称为192.168.0.2)。

  2. 它从它的私有内部IP地址打开一个连接到它的公共地址。 (从192.168.0.2到59.XXX.YY.ZZ)

  3. 这将发送到路由器,遵循服务器的默认路由。 (因为机器不知道公共地址是与自己关联的。)

  4. 路由器端口将请求转发给公共IP地址并将其转发给机器。 请求仍然有一个来源192.168.0.2,但现在它有一个目的地192.168.0.2。

  5. 机器接收从192.168.0.2到192.168.0.2的连接,接受连接并发送回应。 (因为它知道192.168.0.2是本地的。)

  6. 由于机器预期来自59.XXX.YY.ZZ,机器无法接收来自192.168.0.2的响应,连接尝试失败。

为了使发夹式NAT工作,路由器不仅要将请求转发到正确的内部机器上来重写目的地,而且还必须重写源以确保回复数据包通过路由器返回,以便它们也可以被NAT。 许多路由器不能做到这一点,许多路由器可能需要特定的configuration。

 127.0.0.1 localhost mysite.com 

在/ etc / hosts中

我假设它将你的包装盒外的软件包与公有IP路由,不知何故,他们不会回来。