2026年1月18日注:这一篇文章写于2023年6月22日(具体时间难以考证,这是一个大致的日期),经过多次迁移且旧的系统写的不好,部分文章格式已经错乱,将就着看吧。或者去上一个版本:https://www.imxb.de/www/read.do?post=9
背景
之前有在使用Hyper-V的过程中遇到过问题,那就是关于虚拟机的联网。
Server系统下没有默认的Default Switch,桥接也在当时的场景下不起作用,当时可头疼了好久。
那么,我们必须知道 ”外部“ 和 Default Switch 都是什么东西。
两种结构
桥接
这是 Hyper-V 中最简单的一种连接外网的方法(在 Windows Server 且无 Default Switch的情况下),但是有时可能因物理路由器的配置而无法连接。Windows Server开启Hyper-V时显示的创建虚拟交换机使用的就是这个模式。(在物理机路由没有DHCP的情况下,选择用于远程连接的网卡或许会导致断网)
简单来讲, 桥接网络的意思就是在两个网络之间搭上一座桥。他们会共用网段和网段。因此,物理机和虚拟机在同一个网络下,在路由器里面可以看到虚拟机上线。
这种方法可能会因为路由器而无法连接外网。那么我们就需要知道另一种方法了。
NAT
这种虚拟交换机不能直接在Hyper-V中创建,但是普通版本Windows自带一个Default Switch使用的是这个模式。但是Hyper-V本身支持,没有需要在Powershell中开启,下文中会写到。
这玩意叫做 网络地址转换(Network Address Translation) ,是为了IPv4不足而诞生的。这种模式下,虚拟机间是一个局域网,是与外部分离的,连接外网时通过物理机网卡上网,路由器只能看到一个物理机IP。
这种情况,物理机也能得到一个与NAT虚拟机网络同网段的内网IP,用于与内部通信。
Hyper-V中配置NAT网络
请注意:这个交换机和Default Switch会冲突,一台物理机只能有一个NAT网络,因为他们的网段都是192.168.137.
创建交换机
首先,你需要在 Hyper-V管理器 中,新建一个虚拟交换机。
给他命名一个英文名字,这里以“nat” 为例,配置完成后虚拟机可以选择这个网卡来上网。
注意:这个交换机的类型选择内部!!
配置NAT
以管理员身份打开 PowerShell,运行以下命令
首先查询nat虚拟网卡的ifindex(千万不要看成物理网卡的!!),后面需要用到:
Get-NetAdapter建立网关,分配IP给适配器
New-NetIpAddress -IPAddress 192.168.137.1 -PrefixLength 24 -InterfaceIndex 你刚刚获取到的NAT网卡的ifindex 配置一下网段
New-NetNat -Name vmnat -InternalIPInterfaceAddressPrefix 192.168.137.0/24完成,现在可以给虚拟机选择nat网卡来上网了。
注意:如果没有自动分配IP,请手动分配。ip为 192.168.137.(2-255),掩码为255.255.255.0,网关为192.168.137.1,记得配置dns。
补充:桥接网络的简单配置方法
创建界面选择外部即可,如图

时隔两年多,做一点补充。
文章中出现的两个方法,适用于不另外安装虚拟机的情况,让虚拟机通网。
如果需要更高级的功能来做NAT(例如网络审查),应创建虚拟机(iKuai OpenWRT RouteOS)来实现。虚拟机需要两个网卡,一个桥接出去,一个专用。不过多赘述。
另外还有一个方法,来实现不需要虚拟机的NAT转发,就是使用Windows自带功能(WIN2003自带,更高系统需要在服务器管理器安装)。这个功能叫做:路由和远程访问(Routing and Remote Access)。
挺老的东西了,管理器几乎没变过。评价是介于命令行NAT和虚拟机NAT之间,折腾他没啥意义。一般在老系统里用这个功能的比较多,依稀记得用VPC2007的时候接触过,并不是很好用。或许是我玩不明白罢。
关于 Default Switch ,是只在普通版Windows中的Hyper-V才存在,Windows Server不会默认提供。它就是一个现成的NAT网卡,并且配置了DHCP等,旨在让用户快速上手。显然,服务器“并不需要”这个交换机。
再次补充,关于WIN2003那个路由与远程访问。
没有多余的网卡,直接在设备管理器添加一个 Microsoft Loopback Adapter 回环虚拟网卡,然后虚拟机桥接上来,就通网了,相当于接入了你的NAT网。
这个虚拟网卡,高版本WINDOWS下似乎变成了什么KM-TEST回环适配器?没有见过。刚刚查资料看见的,供参考。