将所有stream量redirect到NAT后面的指定主机

是否有可能将所有stream量redirect到NAT后面的指定主机?

例如,我有一个服务器,一个域“mydomain.com”和3个NAT后面的主机。 我希望configuration3个子域名

host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
并且它们中的每一个都将本地networking中的所有端口redirect到指定的主机。

这个redirect应该提供这样的funcionality:
http://host1.mydomain.com (可以用apache实现)
ssh [email protected](???)
和其他协议在不同的端口

谢谢你的帮助。

这可以通过HTTP和HTTPS来完成,它使用“反向代理”来检查HTTP请求中的主机头信息,获取适当的内容并将其返回。 微软的ISA(互联网安全和加速)可以做到这一点,Linux上的apache / squid也可以。

对于所有其他端口你有一个困难的时间,因为大多数stream量不包括所需的主机名,只是一个目标IP(例如:“我想SSH 1.2.3.4”,而不是“我想SSH到host1.mydomain。 COM)

将特定的外部端口映射到内部端口很容易(端口22 – >主机1:22,端口23 – 主机2:22,端口24 – >主机3:22等),有时只需要这些。

如果您真的需要将所有端口映射到不同的内部服务器,您将需要多个外部IP地址,大多数ISP可以提供(至less如果您有业务连接)

Apache的mod_proxy?

不,不可能根据DNS名称进行端口转发。 域名不是IP数据包的一部分,因此您的路由器无法使用此名称来区分传入的连接。

当远程主机连接到host1.mydomain.com时,它将把这个名字parsing成放在IP数据包中的IP地址。 如果host2.mydomain.comparsing为相同的IP地址,则构造的数据包将看起来与host1.mydomain.com完全相同。

由于这个原因,当你在服务器上configuration了多个IP地址的时候是可能的。

Apache可以区分传入的域名,但这是在应用程序级别。 在HTTP 1.1中,浏览器将在HTTP标头中发送域名,Apache可以使用虚拟主机进行过滤。