适用于 Hyper-V 交换机的 Windows Server 2012R2 NAT

适用于 Hyper-V 交换机的 Windows Server 2012R2 NAT

我有一台运行 Windows Server 2012 R2 的服务器,带有一个物理网卡和一些 Hyper-V VM。主机有 3 个外部 IP 地址。我在主机上配置了一个 Hyper-V 交换机,在主机上为其分配了一个静态 IP,并将 VM 也连接到了此交换机。

我希望能够在主机上配置 NAT,以便我可以分配 3 个外部 IP 地址中的 2 个,将其流量发送到 Hyper-V 交换机,并让连接到此交换机的 VM 接收此流量。

此场景中的外部 IP 为:

  • 10.1.1.1
  • 10.1.2.1
  • 10.1.3.1

注意:实际分配的 IP 不在同一子网中。它们是作为单个 IP 单独购买的。

10.1.1.1 是服务器的主 IP 地址。10.1.2.1 和 10.1.3.1 是我购买的附加 IP 地址,并分配给与 10.1.1.1 相同的 NIC。

主机上分配给连接到 Hyper-V 交换机的 NIC 的 IP 地址是:

  • 192.168.1.1

在虚拟机上,分配给连接到 Hyper-V 交换机的 NIC 的 IP 地址是:

  • 192.168.1.100

我熟悉如何在 Linux 上运行这样的设置,但从未在 Windows 上这样做过。我通常会通过设置虚拟适配器 eth0:1 并为其分配 IP 地址 10.1.2.1 来实现这一点。然后应用以下 iptables 规则:

-A FORWARD -i eth0:1 10.1.2.1 -m state --state NEW -j ACCEPT
-A PREROUTING --destination 10.1.2.1 -j DNAT --to-destination 192.168.1.1
-A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 10.1.2.1

我按照戴尔的指南将 Windows Server 2012 R2 机器设置为路由器 - 网址为:http://www.dell.com/support/article/us/en/19/how10169/configuring-windows-server-2012-r2-as-a-router?lang=en

设置完成后,到 10.1.2.1 的流量确实被 NAT 并发送到 192.168.1.1,我的 VM 可以看到流量。太棒了!问题是来自 10.1.3.1 的流量没有被发送到 192.168.1.1。

我期望在 Windows 中可以说:“任何进入 IP xxxx 的东西,都使用 NAT 并发送到 yyyy 任何从 yyyy 出来的东西,都使用 SNAT 并发送到 xxxx”。

我已阅读有关使用 netsh 配置路由和管理 nat 的 Technet 文章(https://technet.microsoft.com/en-us/library/cc754535(v=ws.10).aspx) - 但到目前为止我还没有找到将单个外部 IP 添加到池中的方法。

我觉得这应该是一项简单的任务,但我还没能设置好。我想为主机添加额外的外部 IP 地址,然后通过 NAT 将它们连接到 Hyper-V 交换机,但我遇到了麻烦!

如何配置主机以对选定的外部 IP 执行 NAT?

编辑:Appleoddity 的回答提出了一个我忘记提出的问题 - 这台机器位于我无法访问的数据中心,并且提供商无法添加额外的 NIC。我也无法将 Hyper-V 交换机设置为外部交换机,因为当我尝试这样做时,主机是从网络启动的。在给提供商打电话后,我了解到他们不允许这种行为。

答案1

我在这里要冒昧地说一下,你的想法太过了。如果你的目的是将你的物理主机和 2 个虚拟客户机分别连接到单个物理接口上可用的 3 个公共 IP 中的 1 个,那么你不需要 NAT。

只需创建一个具有对物理网络适配器的“外部”访问权限的标准 Hyper-V 交换机。

这将在物理主机上创建一个“外部”接口,您可以为连接到该“外部”交换机的每个虚拟主机添加一个网络适配器。

现在,将公有 IP 1 分配给物理主机上的“外部”接口。将公有 IP 2 分配给虚拟机 #1 的接口,将公有 IP 3 分配给虚拟机 #2 的接口。

本质上,所有机器都是桥接的,但由于它们使用不同的公共 IP,因此它们只会响应这些 IP。换个角度来看,可以将其想象为 3 台独立的物理机器,它们插入到您的 ISP 调制解调器/路由器 - 每台机器都插入同一个网络交换机 - 但每台机器的接口都分配有不同的公共 IP。

当您购买公共 IP 时,它们通常以块的形式提供。由于您在上面的示例中使用了“私有”IP,而不是提供真正的公共 IP 和子网掩码,所以我不能说每个 IP 都在同一个子网上 - 但通常情况如此。如果是这种情况,那么这就是您始终使用公共 IP 块的典型方式,因为它们无论如何都在同一个“网络”上。

此外,如果您继续使用 NAT,那么您还必须开始进行端口转发。如果没有 NAT,显然,机器和互联网之间应该有一个防火墙(基于软件或硬件)。

相关内容