首页 > 解决方案 > 允许使用一个 NIC 在 Windows Server 2012 R2 上将多个 IP 用于出站流量

问题描述

我有一个Windows Server 2012 R2 VM,它安装了一个 vNIC,有多个 IP。它被用作反向代理服务器(URL 重写),通过IIS. 但是,我观察到出站流量仅在一个 IP 地址上流出。我了解此问题会影响 Windows 2008 和 Windows 2012,SkipAsSource对于非主 IP,我必须将参数设置为 True。而且我可以控制传出请求的源 IP,例如我自己的 .NET 应用程序。但是,这不会解决我的用例,因为我想要多个 IP 上的出站流量,而不是特定 IP,并且我正在使用 IIS URL 重写模块来处理反向代理流量。

除了安装多个 NIC 之外,我可以在 Windows Server VM 中做些什么来解决这个问题吗?Windows 有路由表,但我不能 100% 确定如何为这个用例配置路由表,如果这甚至是一个解决方案的话。

例子:

安装的 IP:192.168.1.100、192.168.1.101、192.168.1.102。

出站流量仅在 192.168.1.100 上流出(最低数量)。我希望出站流量在 IIS 中的所有 IP 上发出。

更新:

也许我不清楚,但将非主 IP 的 SkipAsSource 标志设置为 true 的 Powershell/netsh 命令不是我想要的。我希望所有IP 都能够成为出站流量的源 IP。

在 IIS 中:我有三个网站;每个都有自己的IP。每个网站都通过 URL Rewrite 模块充当反向代理,它们都是独立的应用程序。传入的IP很好。传出 IP 是一个问题,因为它总是选择 0.100。对于每个网站,我希望出站流量匹配其各自的 IP。如果一个请求在 0.100 到达,代理也应该在 0.100 转发它。如果为 .101,则传出流量应使用 .101。.102,传出应使用 .102。因此,服务器上传入流量的 IP = 同一服务器上传出流量的 IP。我不是为所有网站的传出流量寻找一个指定的 IP。除了单独的 NIC 之外,我可以在 Windows 中做些什么来完成这项工作吗?路由表是一种可能的解决方案吗?如果是这样,我将如何准确配置它?

标签: iisvirtual-machinewindows-server-2008windows-server-2012-r2nic

解决方案


Windows 现在根据以下行为选择 IP 地址:

  1. 使用相同地址:如果目标 IP 地址与源 IP 地址之一相同,则使用相同的地址。

  2. 优先出接口:优先选择发送数据包的接口上的 IP 地址。

  3. 使用最长匹配前缀与下一跳 IP 地址:将源 IP 地址与最长的高位匹配到下一跳 IP 地址。

  4. 使用与目标 IP 地址的最长匹配前缀:使用与目标 IP 地址具有最长高位匹配的源 IP。

有关“网卡上具有多个 IP 的源 IP 地址首选项”的更多信息,您可以参考此链接

我们可以使用 PowerShell 通过 SkipAsSource 更改 IP 行为,有关它的更多信息,您可以参考此博客


推荐阅读