使用单一公共 IP 运行 IIS 的多台计算机如何处理传入通信?

使用单一公共 IP 运行 IIS 的多台计算机如何处理传入通信?

我们公司目前有三台独立的服务器,用于安装 IIS。这三台服务器均具有相同的公共 IP 地址,并且实际上位于同一网络的不同子网中。

我们正在尝试找到一种相对简单的方法来访问所有三台机器。有什么想法吗?

答案1

您可以在不同的端口上运行它们,也可以在它们前面放置一个反向代理。

使用不同的端口是最简单的,但您的用户需要知道端口以及名称才能到达正确的服务器。

反向代理规则根据请求的主机名确定要获取哪个内部 IIS 服务器。

答案2

我在这里要做一些假设。你说“我们目前有三台独立的服务器,用于安装 IIS。这三台服务器都有相同的公共 IP 地址“我猜想这意味着它们只面向公众提供非常特定的服务。它们可能允许在端口 80、433 和其他几个端口上进行外部访问。如果是这样的话,我不会设置通过该外部地址进行远程连接的方法。由于该地址对 Web 服务是公开的,因此无论采用何种形式,都可以对其进行扫描以找到您的“访问门”。

选项1: 最简单的解决方案是设置 4 个公共地址:

1 用于提供 Web 服务的负载平衡的公有地址。 3 用于重定向到每个服务器上的端口以进行连接的公有地址管理。

设置管理地址的 NAT 重定向是一个简单的防火墙配置。它看起来像这样。

  1. 公有地址 1 > 服务器 1 的私有地址
  2. 公有地址 2 > 服务器 2 的私有地址
  3. 公有地址 3 > 服务器 3 的私有地址

您也可以选择使用一个公共地址来提供服务,使用一个公共地址来进行管理,但每个服务器使用不同的入站端口。假设您有端口 1000、1001 和 1002。如果您的管理服务是 SSH,端口为 22,则如下所示。

  1. 公有地址,端口 1000 > 服务器 1 的私有地址,端口 22
  2. 公有地址,端口 1001 > 服务器 2 的私有地址,端口 22
  3. 公有地址,端口 1002 > 服务器 3 的私有地址,端口 22

选项 2: 设置管理服务器或软件,然后使用它内部连接到每个 IIS 服务器。

因此,您将拥有一个用于 Web 服务的公共地址和一个用于管理服务器的公共地址。第一个地址将负载平衡到您的 IIS 服务器,第二个地址将发送到您的管理服务器,可能是远程桌面服务器、SSH 服务器或为 ISS 服务器提供 VNC 连接的服务器。有许多第三方选项(免费和付费)可以实现第二个选项。

选项 3: 设置VPN(虚拟专用网络)

如果您的防火墙能够充当 VPN 集中器,那么您可以设置 VPN 服务。这将允许您使用 VPN 进行远程连接。连接后,您可以使用其内部 IP 地址连接到每个 IIS 服务。

答案3

如果您想通过相同的外部 IP 地址访问每个,那么您必须使用不同的端口并使用基于端口的 NAT。

如果您可以使用不同的主机名/域名,那么您可以设置一个反向代理根据主机名将请求分发到不同的服务器。例如 server1.example.com、server2.example.com 等

要做到这一点,您需要有第四个盒子或者选择其中一个现有服务器来执行此任务。

设置 NATing 来指向该服务器(可能仅针对端口 80)。

选择一个代理包。你可以使用类似乌贼阿帕奇或者Apache 流量服务器(其中一些也可以进行缓存)。

配置代理以将对 server1.example.com 的请求转发到 server1 的内部 IP 或主机名,对服务器 2 和 3 也同样如此。

要注意的一点是,如果代理在其中一个 Web 服务器上运行,则代理监听的端口不能与 Web 服务器相同。

因此,要么将代理配置在端口 8080 上,然后配置 NAT 规则以将端口 80 上的请求转发到端口 8080,要么将所有 Web 服务器配置为在该端口上运行。但我建议使用第一种方案。这样,您的内部访问会更简洁,并绕过代理。

希望这一切都有意义。如果需要,很乐意进一步澄清。

答案4

我建议你使用反向代理应用程序请求路由,微软提供的免费 IIS 插件。

您从三台服务器中挑选一台并为其指定公网 IP。安装并设置 ARR 来处理所有请求并将其转发到三个端点中的任何一个。

从硬件和软件方面来说,这是一个免费的解决方案,但您需要了解 ARR。我建议在虚拟机中设置三个测试服务器并试用它。

相关内容