本文分为两节,分别是如何在 Windows 上利用 Hyper-V 交换机实现对 VLAN 的支持;以及如何利用 Hyper-V 交换机功能创建多块虚拟网卡,实现单线多拨叠加网速。可以只使用 Hyper-V 交换机而不使用 Hyper-V 虚拟机,所以这不会影响你电脑的性能。以上功能均不需要网卡驱动支持。
效果图:
ℹ️ 使用 Hyper-V 功能需要 Windows 10 专业版 或以上版本,如果你使用的是家庭版,可以通过断网更改产品密钥、再通过KMS服务器激活的方式原地升级到专业版。
配置 Hyper-V
首先需要启用 Hyper-V,在管理员 Powershell 输入以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
然后重启电脑。
(可选)禁用 Hyper-V 虚拟化
如果你不使用 Hyper-V 虚拟机,可以禁用 Hyper-V 虚拟化,避免被 HV 虚拟化平台降低性能。关闭 Hyper-V 虚拟化平台的方法可以参考这篇知乎回答。
配置虚拟网卡
按照以下步骤添加数块虚拟网卡即可实现单线多拨以及 VLAN 功能。
安装 Hyper-V 虚拟交换机
在管理员 Powershell 输入以下命令。name
参数后面的 Ethernet-Virt
是虚拟交换机的名称,可以任取。 NetAdapterName
参数后面的 Ethernet
代表你要桥接的物理网卡的名称,中文版系统一般为 以太网
,英文版为 Ethernet
。注意 AllowManagementOS
需要为 $false
,否则 Hyper-V 会创建一个和物理网卡一样 MAC 地址的虚拟网卡妨碍我们使用。
New-VMSwitch -name Ethernet-Virt -NetAdapterName Ethernet -AllowManagementOS $false
向宿主机添加虚拟网卡
在管理员 Powershell 输入以下命令。Switch
参数后面的 Ethernet-Virt
是虚拟交换机的名称。 Name
参数后面的 Ethernet-Virt-Main
是虚拟网卡的名称,可以任取。注意要有 ManagementOS
参数,代表向宿主机添加网卡而不是某个虚拟机。StaticMacAddress
后面的 e0-00-00-00-ca-01
是虚拟网卡的 MAC 地址,可以任取,但必须唯一并且是单播地址(不懂单播、多播地址的话就无脑e0开头,然后后面的数字随便换)。
Add-VMNetworkAdapter -Switch Ethernet-Virt -ManagementOS -Name "Ethernet-Virt-Main" -StaticMacAddress e0-00-00-00-ca-01
如果你需要使用VLAN的话
可以再执行下面的命令为虚拟网卡设置 VLAN。VMNetworkAdapterName
参数后面的 Ethernet-Virt-Main
是虚拟网卡的名称,VlanID
后面的 10
就是你想用的 VLAN 编号。
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Ethernet-Virt-Main" -Access -VlanID 10
或者你反悔了,设置为 Untagged 删除 VLAN ID:
Set-VMNetworkAdapterVlan -ManagementOS -VMNetworkAdapterName "Ethernet-Virt-Main" -Untagged
关于 VLAN 的配置项目还有很多,例如 Trunk 模式、端口隔离,可以参考官方文档
(可选)设置网卡网络为专用网络
默认可能是公用网络,会施加严格的防火墙策略,如果需要的话,可以用下面的命令设置网卡为专用网络:
Get-NetConnectionProfile # 首先找到网卡编号
Set-NetConnectionProfile -InterfaceIndex 13 -NetworkCategory Private # 13是刚才找到的编号
解决使用虚拟交换机后无法从外网连入的问题
暴力方法
控制面板 – 网络和 Internet – 网络连接 – 以太网 – 把下图打勾的的全勾上(没出现的不用管)
然后使用电脑原来的 IP 连入即可。
解决使用虚拟交换机后VMWare等软件无法桥接网卡的问题
这是因为安装虚拟交换机的时候除了 Hyper-V 交换机功能以外的模块全被去掉了,再加回来即可。控制面板 – 网络和 Internet – 网络连接 – 以太网 – 勾选 “VMware bridge protocol” – 确定
删除虚拟网卡
如果你不需要使用虚拟网卡了,可以通过以下命令卸载虚拟网卡和虚拟交换机。
删除虚拟网卡:
Remove-VMNetworkAdapter -Name "Ethernet-Virt-Main" -Confirm
删除虚拟交换机:
Remove-VMSwitch -name Ethernet-Virt -Force -Confirm
拨号上网?负载均衡?
本文提供的方法主要是为 IPoE / Portal / 802.1X 接入方式编写的,Windows 并未提供并发 PPPoE 所需的功能,因此较难实现 PPPOE 并发拨号,不过你也可以同时执行 rasdial Broadband_Connection username password
命令试试
Windows的负载均衡功能似乎只在Server版提供。