在 Ubuntu 中将请求从外部主机名路由到内部 IP 地址

在 Ubuntu 中将请求从外部主机名路由到内部 IP 地址

我想使用同一个 IP 地址托管多个网站。我的 ISP 为我提供了一个静态 IP 地址,但是我有三个不同的 Web 服务器(都运行不同的网站)连接到一个廉价交换机后面,它们最终都位于这个 IP 地址后面(其中一个是 Apache,两个是 Windows 机器,所以我无法真正合并它们)。我可以根据端口和传入 IP 地址使用此交换机进行端口转发,但不能根据主机名进行端口转发。这不是一个长期的解决方案,因为区分我尝试访问哪个 Web 服务器的唯一方法是通过端口。这太丑了。

我还有一个带两块网卡的 Linux 机器,希望将其用作更强大的防火墙/路由器。我的问题是 - 将我的 Linux 机器(运行 Xubuntu)变成能够基于主机名而不仅仅是 IP 地址进行路由的路由器的最佳方法是什么?不过我想将 Xubuntu 保留在机器上,所以请不要使用专用的路由器 Linux 发行版。

我查看了 Shorewall,但找不到让它根据主机名而不是 IP 地址路由数据包的方法。IPTables 是可行的方法吗?如果是,有人能给我提供教程或有关如何执行此操作的内容吗?我在 Google 上搜索了一下,我很震惊,这不是一个更常见的场景!

答案1

无法根据主机名进行路由。DNS 的整个概念存在于比基本网络流量更高的层次上。

(欲了解更多信息,请阅读OSI 模型总体而言TCP/IP 模型尤其。)

另一方面,HTTP 协议确实知道主机名。因此,您应该能够在外部地址上设置反向代理,根据传入的主机名将请求转发到不同的内部地址。一种选择是使用 Apache 和mod_proxy

相关内容