通过PowerShell创建跨宿主机虚拟网络需四步:1.每台宿主机创建Internal虚拟交换机;2.为虚拟网卡分配统一子网内不同IP并启用IP转发;3.配置相同前缀的NAT实例;4.在各宿主机添加指向其他宿主机虚拟网卡IP的静态路由。
要通过 powershell 快速创建支持跨宿主机通信的虚拟网络,核心是构建一个**内部(internal)或专用(private)虚拟交换机 + nat 网络栈**,再配合静态路由或端口转发实现宿主机间互通。外部交换机(external)本身不直接解决跨宿主机问题,它只让 vm 访问物理网络;真正实现“跨宿主机虚拟网络”的关键,在于统一规划 ip 地址段、在各宿主机上部署一致的 nat 规则,并确保宿主机之间网络可达。
1. 创建内部虚拟交换机(每台宿主机都要执行)
这是跨宿主机虚拟网络的底层基础。内部交换机会在宿主机上生成一块虚拟网卡(如 vEthernet (NATNetwork)),供后续配置 IP 和 NAT 使用:
- 以管理员身份运行 PowerShell
- 执行:New-VMSwitch -Name "NATNetwork" -SwitchType Internal
- 记录返回的 ifIndex 值(后续绑定 IP 需用):
Get-NetAdapter | Where-Object { $_.Name -eq "vEthernet (NATNetwork)" } | Select-Object ifIndex
2. 为虚拟网卡分配固定子网 IP(每台宿主机独立配置)
所有宿主机必须使用**相同网段但不同主机地址**,例如统一用 192.168.100.0/24,然后各自设为 .1、.2、.3……这样 VM 才能通过宿主机网关互相访问:
- 给虚拟网卡设置 IP:
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 -InterfaceIndex [ifIndex]
(将 [ifIndex] 替换为上一步查到的数值;第二台宿主机改为 192.168.100.2,依此类推) - 启用 IP 转发(允许该网卡转发 VM 流量):
Set-NetIPInterface -Forwarding Enabled -InterfaceIndex [ifIndex]
3. 配置 NAT 网络(每台宿主机独立执行)
让本机上的 VM 能通过该宿主机访问其他宿主机及其 VM:
直播话术巡检系统(Windows版) — 实时语音转写、关键词检测、场景自动切换、告警推送、大屏可视化。支持 Windows VB-Cable 虚拟声卡音频采集,阿里云 ASR 实时识别。一键启动脚本,自动安装环境。
- 创建 NAT 实例(名称需统一,如 NATNetwork):
New-NetNat -Name "NATNetwork" -InternalIPInterfaceAddressPrefix 192.168.100.0/24 - 此命令会自动关联到已配置好 IP 的虚拟网卡,无需指定接口
- 确保所有宿主机使用完全相同的 -InternalIPInterfaceAddressPrefix 值,否则 NAT 不生效
4. 让宿主机之间可路由(关键一步)
仅靠 NAT 不足以让 A 宿主机的 VM 访问 B 宿主机的 VM——还需在每台宿主机上添加静态路由,指向其他宿主机的虚拟网卡 IP:
- 假设三台宿主机 IP 分别为:
HostA:192.168.100.1(物理网卡实际 IP 是 10.0.1.10)
HostB:192.168.100.2(物理网卡 10.0.1.11)
HostC:192.168.100.3(物理网卡 10.0.1.12) - 在 HostA 上添加路由,使发往 192.168.100.2/32 的流量走物理网卡:
New-NetRoute -DestinationPrefix 192.168.100.2/32 -NextHop 10.0.1.11 -InterfaceIndex [物理网卡 ifIndex] - 同理,在 HostA 上加一条指向 192.168.100.3/32 的路由,NextHop 为 10.0.1.12
- 其他宿主机做对称配置(即每台都添加其余宿主机的 /32 路由)
完成以上四步后,各宿主机上的 VM 只要设置网关为本机的 192.168.100.x(如 HostA 上的 VM 设网关为 192.168.100.1),就能相互 ping 通、访问服务,真正实现跨宿主机的虚拟局域网效果。










