将所有流量重定向到 NAT 后面的指定主机

将所有流量重定向到 NAT 后面的指定主机

是否有可能将所有流量重定向到 NAT 后面的指定主机?

例如,我有一台服务器、一个域“mydomain.com”和 3 个位于 NAT 后面的主机。我希望配置 3 个子域:

host1.mydomain.com
host2.mydomain.com
host2.mydomain.com
并且它们每个都将所有端口重定向到本地网络中的指定主机。

该重定向应提供如下功能:
http://host1.mydomain.com(可以使用apache实现)
ssh[电子邮件保护](???)
和其他协议在不同端口上

谢谢你的帮助。

答案1

可以使用“反向代理”对 HTTP 和 HTTPS 执行此操作,该代理检查 HTTP 请求中的主机头信息,获取适当的内容并返回。Microsoft 的 ISA(Internet 安全和加速)可以执行此操作,Linux 上的 apache/squid 也可以执行此操作。

对于所有其他端口,您将会遇到更困难的情况,因为大多数流量不包含所需的主机名,而只包含目标 IP(例如:“我想通过 SSH 连接到 1.2.3.4”而不是“我想通过 SSH 连接到 host1.mydomain.com”)

将特定的外部端口映射到内部端口很容易(端口 22 -> 主机 1:22、端口 23 -> 主机 2:22、端口 24 -> 主机 3:22 等),有时这也是所需要的全部。

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

答案2

Apache mod_proxy?

答案3

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

当远程主机连接到 host1.mydomain.com 时,它会将此名称解析为 IP 地址,并将其放入 IP 数据包中。如果 host2.mydomain.com 解析为相同的 IP 地址,则构建的数据包将与 host1.mydomain.com 完全相同。

因此,当您的服务器上配置多个 IP 地址时,这是可能的。

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

相关内容