我目前有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.ZZZ是mysite.com的公开IP。 任何想法这些服务器上有什么问题?
基本的问题是这样的:
服务器有一个私人的IP地址。 (为了简单起见,我将它称为192.168.0.2)。
它从它的私有内部IP地址打开一个连接到它的公共地址。 (从192.168.0.2到59.XXX.YY.ZZ)
这将发送到路由器,遵循服务器的默认路由。 (因为机器不知道公共地址是与自己关联的。)
路由器端口将请求转发给公共IP地址并将其转发给机器。 请求仍然有一个来源192.168.0.2,但现在它有一个目的地192.168.0.2。
机器接收从192.168.0.2到192.168.0.2的连接,接受连接并发送回应。 (因为它知道192.168.0.2是本地的。)
由于机器预期来自59.XXX.YY.ZZ,机器无法接收来自192.168.0.2的响应,连接尝试失败。
为了使发夹式NAT工作,路由器不仅要将请求转发到正确的内部机器上来重写目的地,而且还必须重写源以确保回复数据包通过路由器返回,以便它们也可以被NAT。 许多路由器不能做到这一点,许多路由器可能需要特定的configuration。
放
127.0.0.1 localhost mysite.com
在/ etc / hosts中
我假设它将你的包装盒外的软件包与公有IP路由,不知何故,他们不会回来。