我安装了 Hyper-V Server 2012 R2(因为它是免费的)。我在这台服务器上有 2 个虚拟机,一个 Ubuntu Server (vLS) 和一个 Windows Server (vWS)。
我的主机只有 1 个外部 IP 地址,因此虚拟机位于主机 (192.168.110.1) 的内部 192.168.110.0/24 子网中,(我在连接的 Hyper-V 管理器中创建了虚拟交换机) .
我想设置一个基本的 NAT,我想将外部端口 80 绑定到 vWS 上的端口 80,因此服务器充当 Web 服务器(及时我希望允许访问各个端口上的两个虚拟机,所以80 端口只是一个例子)。
问题是 Hyper-V 服务器不允许安装 RRAS 角色,ICS 也不可用。
其他一些问题指向使用New-NetNat
,但由于它还不是 Server 2016,所以InternalIPInterfaceAddressPrefix
不可用。这是在没有 SLAT 的情况下运行的最后一个 Hyper-V 服务器版本,因此不能选择升级到 2016。
我尝试将它与ExternalIPInterfaceAddress
andInternalRoutingDomainId
参数一起使用,但我无法弄清楚有效的内部路由域 ID 是什么,以及如何弄清楚我的(它似乎是某种 GUID)。我用一堆零尝试过,但无济于事。
我看过NAT32,但它似乎在服务器启动时挂起,GUI 从未弹出。我将进一步试验它,但我希望在不安装任何第 3 方的情况下在服务器上实现本机功能(也就是说,如果我可以让它工作,我很乐意接受第 3 方解决方案)。
有没有办法在 Hyper-V Server 2012 R2 中设置 NAT 并将虚拟机的某些端口绑定到外部 IP?如果是,我该怎么做?
您需要两个 vswitch 和一个虚拟机来为您执行 NAT。
Internal
连接到虚拟机和主机,但不能连接到物理网卡。这将是您的 192.168.110.0/24 网络。将所有现有 VM 更改为此 vswitch,以及防火墙 VM 的 NIC 之一。External
连接到物理网卡。防火墙的另一个虚拟 NIC 应连接到此 NIC。您还应该取消选中“允许管理操作系统共享此网络适配器”框。在您的主机上,两个 vswitch 应在您的控制面板中显示为网络适配器。
Internal
在与vswitch匹配的适配器上配置 192.168.110.0/24 IP 。现在主机与外界通信的唯一方法是通过防火墙虚拟机。您可以在 VM 中安装另一个 Windows Server 并设置 RRAS,或者您可以安装和配置 VyOS 虚拟路由器并将其配置为将所有 tcp 端口 80 流量(出于参数考虑)转发到将充当 Web 服务器的 Windows Server .
对于 VyOS 配置,它非常简单。您需要下载 VyOS 虚拟路由器的 .iso 并将其安装在 VM 中。将两个 vNIC 连接到该 VM;一个连接到连接到 LAN 适配器的外部 vSwitch,另一个连接到您的 VM 连接到的内部或私有 vSwitch。所以你的 VyOs 路由器必须连接到两个网络;您的外部 Internet 访问网络和您的私有或内部 VM 网络。
安装 VyOS 映像后,您可以运行一些命令来配置 VyOS 路由器的接口。
上述命令将外部接口设置为通过 DHCP 获取其地址,并将路由器的下一个接口配置为与您的虚拟服务器 (VM) 位于同一网络上。
接下来,您将运行一些简单的命令,将所有 TCP 80 流量转发到您选择的内部服务器。
那里有一个虚拟路由器将所有 TCP 80 数据包转发到地址为 192.168.110.254 的内部服务器(只是为了争论)。