我在 Hyper-V 中为我的 Ubuntu VM 配置了网络,使其连接到内部网络虚拟交换机,该交换机通过 Internet 连接共享(网络连接 > 以太网 > 属性 > 共享)连接到我的工作以太网互联网连接。以下是相关设置的图片:
我在下拉菜单中选择了内部网络的虚拟适配器,它为内部网络分配了一个 IP 192.168.137.1 作为网关,并且我将我的 Ubuntu VM 配置为在 192.168.137.XXX 范围内的静态 IP 上运行。我决定为虚拟交换机选择一个内部网络,因为我不想修改主机的静态 IP 地址,如果我选择外部网络以这种方式共享互联网连接,由于某种原因我无法保持主机的静态 IP 地址不变。
问题是我托管虚拟机是为了运行 docker 服务,我打算这样做,我需要做的就是能够将端口 3000(例如从内部 NAT IP 192.168.137.2:3000)暴露给我的主机 IP 地址 192.168.0.2:3000。我输入了以下命令:
New-NetNat-名称 UbuntuNAT-内部IP接口地址前缀 192.168.137.0/24
添加NetNatStaticMapping -NatName UbuntuNAT -协议TCP -外部IP地址0.0.0.0 -外部端口3000 -内部IP地址192.168.137.2 -内部端口3000
并且它工作了一秒钟,然后虚拟机失去了互联网连接,现在将不再连接到互联网。也许在 192.168.137.0/24 上创建 NAT 会以某种方式扰乱互联网连接共享?我不知道有什么其他方法可以对内部 NAT 进行端口映射。我需要找到一种方法将内部 NAT 连接到主机的 IP,或者如果此方法不实用,则需要另一种方法来完成整个设置。
答案1
由于某种原因,通过适配器设置进行端口转发对我来说不起作用,但使用命令行中的 netsh 确实:
netsh interface portproxy add v4tov4 listenport=3000 listenaddress=0.0.0.0 connectport=3000 connectaddress=192.168.137.2
答案2
控制面板 > 网络和 Internet > 网络连接 > 更改适配器设置
选择要共享的连接到 Internet 的连接,转到“属性”、“共享”选项卡,选中“允许其他用户连接到此 Internet 连接”,在下拉列表中选择虚拟交换机内部网络,然后选择“设置”进行端口转发。在地址字段中使用虚拟机的静态 IP。