删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

Windows环境下,在更换硬件服务器主板和网卡等硬件、恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题。例如,设备管理器中多了不应该存在的网卡;因命名冲突无法重命名当前网络连接;IP地址冲突却找不到那个与之冲突的网卡;网络虚拟化失败后出现无法删除的虚拟网卡等等。下面我们就来总结一下如何删除这些可见或不可见的Ghost一样的网卡。

一、识别各类网络设备和网络连接

由于网络虚拟化会在物理机上新增许多虚拟网络设备(包括虚拟网卡),情况会变得复杂,因而首先我们需要分清他们。当然如果没有进行网络虚拟化,那么就可以跳过这部分。网络虚拟化环境中,通过设备管理器应该可见:以Intel开始的物理网卡(根据物理网卡厂商而不同);Hyper-V Virtual Ethernet Adapter 虚拟网卡;Microsoft Network Adapter Multiplexor 网卡组(Windows Server 2012开始支持网卡组,通过命令lbfoadmin可以对网卡组进行管理,网卡组在网络虚拟化环境中经常出现);在显示隐藏设备后,还可见Hyper-V Virtual Switch Extension Adapter 虚拟交换机等。

而在网络和共享中心中的网络连接可以简单的认为是上图部分网络设备的配置,其名称和属性可自定义,但其依赖的设备基本与上图对应。

下面我们看看这些网络连接的具体配置。

1、物理网卡的网络连接

其主要的设置是TCP/IPv4、TCP/IPv6协议和两个链路层拓扑发现协议。下图是名为Ethernet 04的物理网卡的网络连接属性。

2、网卡组的网络连接

如果仅仅配置网卡组,那么其网络连接配置和物理网卡基本相同,除了TCP/IPv4、TCP/IPv6协议和两个链路层拓扑发现协议外,还配置了使用Microsoft Load Balancing/Failover Provider协议。网卡组将多个物理网卡聚合,以实现网络连接的故障转移和负载均衡。而那些被聚合的物理网卡的网络连接只有Microsoft Network Adapter Multiplexor Protocol协议了。下图左侧是名为Management网卡组的网络连接属性,右侧是网卡组内名为Ethernet 01的物理网卡(被聚合的网卡之一)的网络连接属性。

3、虚拟网卡的网络连接

虚拟网卡一般情况下是在创建虚拟交换机后创建的,另外通过SCVMM可以在物理主机上创建更多虚拟网卡。虚拟网卡的网络连接和物理网卡的网络连接配置是一样的,因而虚拟网卡的作用和物理网卡原则上是一样,只不过虚拟网卡是建立在物理网卡之上。下图是名为vEthernet(Cluster)的虚拟网卡的网络连接属性。

4、虚拟交换机的网络连接

这里有两种情况:

如果虚拟交换机建立在独立的物理网卡之上(直接在Hyper-V管理器中创建的虚拟交换机属于这种情况),那么被用于创建虚拟交换机的物理网卡的网络连接被配置为只使用Hyper-V Extensible Virtual Switch协议。如下图是在名为Ethernet 01物理网卡上创建虚拟交换机后Ethernet 01物理网卡的网络连接属性

如果虚拟交换机建立在网卡组之上(在SCVMM中为主机配置基于网卡组的逻辑交换机后在主机中创建的虚拟交换机属于这种情况),那么被用于创建虚拟交换机的网卡组的网络连接被配置为只是用Hyper-V Extensible Virtual Switch协议,而被用于该网卡组的物理网卡配置如上面网卡组部分的描述。如下图左侧是创建名为Management Logical Switch的虚拟交换机后,创建了同名的网卡组的网络连接属性,右侧是网卡组内名为Ethernet 01的物理网卡(被聚合的网卡之一)的网络连接属性。

总结以上,创建虚拟网卡和网卡组时除了创建相应的网络设备外,同时会相应的网络连接,但创建虚拟交换机只会创建相应的网络设备,却不会创建网络连接,虚拟交换机是建立在物理网卡或网卡组之上的,仅仅是对物理网卡和网卡组的网络连接进行的重新配置。

二、删除网络设备和网络连接

知道了各种网络设备和网络连接之间的关系后,再来删除目标就更加明确了,原则上应该遵循:

  • 至上而下。先删除最上层网络设备和网络连接,再删除其基础。基本按照 虚拟网卡 > 虚拟交换机 > 网卡组 > 物理网卡 这样是顺序进行删除。否则那些失去依赖的网络设备和网络连接将会是最难对付的。如果涉及到集群,最好将需要删除的网络设备对应的网络不用于集群,可能的话解散集群。
  • 从表及里。在GUI中删除或在PowerShell中删除,如果不行则在注册表中删除。慎用注册表,但往往终极解决方案却是注册表。
  • 在哪里创建在哪里删除。在Hyper-V管理器中创建就在Hyper-V管理器中删除,在SCVMM中创建就在SCVMM中删除。当然事情往往没那么简单,创建却删不掉才是问题。

接下来根据各种场景我们来看看为什么要删除和如何删除。

1、删除虚拟网卡及其网络连接

(1)通过GUI和PowerShell

使用SCVMM控制台或SCVMM PowerShell为主机配置逻辑交换机后创建的虚拟网卡及其网络连接,正常情况下可以在SCVMM控制台或SCVMM PowerShell中进行删除,但有时由于主机硬件变更(主要是主板或网卡)或其他不可预料的情况,创建过程出现异常,试图删除配置进行恢复后,依然在主机上遗留下不应该存在的虚拟网卡或其网络连接,这时SCVMM就束手无策了,而这些虚拟网卡在主机上也无法通过GUI(通过设备管理器或Hyper-V管理器)直接进行删除。由于新的虚拟网卡命名时后缀会自动递增,因而这些多余虚拟网卡不会有太多妨害,但与之关联的网络连接往往也存在命名冲突的问题(由于网络连接名称不能重复,这些遗留的虚拟网卡的网络连接会占用名称),无法按自己的需要命名网络连接,对于许多人是无法接受的。

在主机上可以通过PowerShell查看和删除虚拟网卡及其网络连接。使用get-netadapter命令查看所有网卡,使用get-vmnetworkadapter –all查看所以虚拟网卡,使用get-vmnetworkadapter –managementos命令查看在主机上的虚拟网卡。使用remove-vmnetworkadapter –managementos –name 删除主机上指定的虚拟网卡和网络连接。

 

如果通过PowerShell无法查看和删除虚拟网卡及其网络连接,还可以尝试两个方法:其一是使用DevCon命令行工具,其二是直接操作注册表。

(2)通过DevCon命令行工具

删除网络设备本质上是删除设备的驱动程序,微软自己的DevCon命令行工具可以代替设备管理器来管理计算机设备,特别是那些隐藏的设备,DevCon命令行工具的下载和使用可以参考这里。将相应版本devcon.exe文件放到windows\system32目录中,以备命令行中调用,由于版本和兼容性问题DevCon也不是万能的。使用如下命令查询和删除虚拟网卡,其中为什么是路径root\vms_mp将在下面解释。

(3)通过注册表

作为最后手段,我们还可以通过注册表进行删除,这是件危险的事,请谨慎操作。使用regedit命令打开注册表。

先删除网络连接。打开节点HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318},其下有许多GUID命名的节点,每个节点表示现在或曾今存在的网络连接,通过其下Connection节点中的Name属性可以知道该节点是表示哪个网络连接,删除之前记下这个GUID名称。删除以下路径中具有同样GUID名称的节点,在这些节点中可见网络连接的详细配置,甚至包括IP和子网掩码等:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Adapters\

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\

再删除网络设备。打开节点HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\VMS_MP\,这个位置是虚拟网卡驱动的配置路径,通过其子节点的FriendlyName属性,找到需要删除的网卡子节点,这也就是DevCon命令中出现的路径。

但是要删除这个子节点却不是件容易的事,由于注册表中该路径是系统关键路径,默认情况下这些子节点及其下所有节点和项都只在System账户控制下,其他账号无权操作,因而使用管理员administrator运行注册表也无济于事,但好在通过获取其所有权,可以最终让administrator获得操作权限。由于一次只能设置一个节点或项,这将是一件重复烦闷的工作。具体步骤如下:

在节点右键权限Permissions,虽然提示没有权限,但是却允许进入修改,选择高级Advanced,如下图修改所有者Owner以获取所有权。但需要注意,修改所有者后虽然无法确认对话框,但是选择放弃Cancel也能最终获得所有权。

关闭所有对话框,重新右键权限Permissions,这时已经可以添加用户administrator并授权了。从最深可见的节点中进行设置,直到其下所有节点和项都取得权限,最后删除整个子节点,重启主机。(其实该步骤也同理可用于获取在NTFS下受限的文件或文件夹的权限)

 

(物理网卡也可以按上面注册表的过程删除。另外值得一提的是,在注册表中与CurrentControlSet相同层级会有ControlSet001或ControlSet002等类似命名的节点,这些节点内拥有与CurrentControlSet相同的结构和数据,无需对ControlSet001或ControlSet002内的相应节点做删除,它们只是系统配置的拷贝,系统正常重启后它们将被CurrentControlSet中的修改覆盖。)

2、删除虚拟交换机

在网络虚拟化环境中,首先应通过SCVMM控制台或SCVMM PowerShell删除主机上的逻辑交换机或虚拟交换机,以正常移除SCVMM中对主机的相关配置,但如果在主机中发现依然存在未能删除的虚拟交换机,还可以在主机上通过Hyper-V管理器和Hyper-V Powershell进行删除。

如果无法完成,可以如同删除虚拟网卡一样使用DevCon命令行工具和操作注册表,只不过虚拟交换机驱动配置节点为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\VMS_VSMP,这里不再赘述。

3、删除网卡组

网络虚拟化环境中,如果给主机配置的逻辑交换机关联了带有网卡组的上行端口,那么总是会在主机上创建网卡组,并在网卡组上创建虚拟交换机。如果移除逻辑交换机失败,主机上遗留下了多于的网卡组,则可以在网卡组管理器或者PowerShell中删除。Windows Server 2012才支持网卡组,可以通过命令lbfoadmin打开网卡组管理器对网卡组进行管理,也可以使用remove-netlbfoteam命令。

这里谨慎使用DevCon命令行工具和注册表进行删除,本人没有测试是否会带来严重后果,但是可以很容易知道网卡组的注册表节点为HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\COMPOSITEBUS\MS_IMPLAT_MP。

网络中也有关于WMI的库文件损坏造成网卡组无法管理的案例,可尝试按如下过程进行修复,更多关于WMI库的修复,可以参考这里

      net stop winmgmt
      rename the folder %windir%\system32\wbem\Repository to Repository.old
      restart the system
      winmgmt /resetrepository
      disable all the network adapters
      remove HKLM\SYSTEM\CurrentControlSet\Control\Network\Config
      enable all the network adapters
      enable nic teaming

4、删除物理网卡

多余的物理网卡往往是由于硬件变动或者系统恢复后形成的,删除物理网卡相对简单些,在设备管理器或者DevCon命令行中均可进行删除,在注册表中的删除也可以参照虚拟网卡。

时间: 2024-10-12 17:43:05

删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡的相关文章

解决vmware安装 win7 后 没有虚拟网卡驱动 不能上网的问题

项目需要用到win7 32位系统,于是装个虚拟机,换了好几个系统资源,都是没有网卡驱动, XP 2003 都能上网唯独WIN7 不行,安装vmware tools也不管用,终于找到了这个东西.vmware win7 虚拟网卡驱动 链接:http://pan.baidu.com/s/1skNnMln 密码:1tui 下载后拖拽到虚拟机里,然后设备管理器更新上就OK了.

在Windows中隐藏用户的方法

这两天新建了一个用户用于共享文件,由于我的电脑只有我一个人用,多了一个用户后在登录界面上觉得挺碍事的,便想把它隐藏起来.找了一下,可以通过如下方式实现: 在注册表编辑器新建项值: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList 在其中新建DWORD值,命名为需要隐藏的用户名称,设其值为0(0为隐藏1为显示) 为了方便使用,把下面这段代码保存成一个注册

(转载)windows8系统中使用hyper-v的时候配置网络方法

启用了虚拟机角色,您的物理设备就需要共享给所有的虚拟机(您的Windows 8也变成了虚拟机,因为它使用物理设备时也要通过虚拟化层,当然,只要能开启Hyper-v,就说明您的硬件支持虚拟化,换句话说,性能损失很低,所以,没必要为开启虚拟化而担心Windows 8性能受损.) 因为CPU.内存的分配都在虚拟机的设置里来调整的,所以,开始使用Hyper-v之前呢,需要考虑就是虚拟交换机啦,也就是将物理网卡变成一个虚拟交换机,然后虚拟一块网卡给物理机(刚刚都说过啦,您的Windows 8已经是一台虚拟

CentOS下使用TUN/TAP虚拟网卡的基本教程

在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备.不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实现,并向运行于操作系统上的软件提供与硬件的网络设备完全相同的功能.TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧.TUN模拟了网络层设备,操作第三层数据包比如IP数据封包.操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TUN/TAP设备发送数据.在后种情况下,TUN/TAP设备向

SylixOS USB虚拟网卡框架

1. USB子系统简介 1.1      USB简介 USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.是应用在PC领域的接口技术.USB接口支持设备的即插即用和热插拔功能.USB是在1994年底由英特尔.康柏.IBM.Microsoft等多家公司联合提出的. 1.2      USB虚拟网卡框架 1.2.1   普通网卡与USB网卡框架对比 如图 11所示,普通网卡驱动与USB网卡驱动相比最大的区别是,USB网

虚拟网卡TUN/TAP 驱动程序设计原理

昨天韦哥写了<Linux下Tun/Tap设备通信原理>一文,只提到了两个使用Tun的用户进程之间的通信路径,并没有说明Tun虚拟网卡驱动是如何实现的,而正好看到了这里的一篇讲解这方面的文章,果断转载了,感谢作者,原文在这里:虚拟网卡TUN/TAP 驱动程序设计原理 简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在linux环境下的设计思路. tun

图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN

Linux的网卡驱动中内含了很多"虚拟网卡".早先的文章曾经详细分析过tun,ifb等虚拟网卡,类似的思路,在虚拟化大行其道的趋势下,Linux源码树中不断增加对"网络虚拟化"的支持,不光是为了支持"虚拟机"技术,更多的是给了用户和程序员更多的选择.       这些对网络虚拟化的支持技术包括任何重量级的虚拟化技术,比较重的比如对虚拟机技术的支持,轻量级的则是net namespace技术.近期的工作基于net namespace技术,关于这个技

Qemu之Network Device全虚拟方案二:虚拟网卡的创建

上文针对Qemu在前端网络流路径的建立方面做了详细的描述,数据包从Host的物理网卡经过Host Linux内核中的Bridge, 经过Tap设备到达了Qemu的用户态空间.而Qemu是如何把数据包送进Guest中的呢,这里必然要说到到虚拟网卡的建立. 当命令行传入nic相关参数时,Qemu就会解析网络相关的参数后进入虚拟网卡的创建流程.而在上文中提到对于所有-net类型的设备,都视作一个net client来对待.而在net client的建立之前,需要先创建Qemu内部的hub和对应的por

windows8.1安装VMware workstation无法找到虚拟网卡解决

windows8.1的操作系统,安装workstation后在网络连接中无法找到虚拟网卡vmnet1和vmnet8 首先确认是否虚拟网卡驱动没有安装 发现网卡驱动安装成功(vmnet0为我后来自己添加上去的) 那说明网卡驱动没有问题,那确认本地网卡vmware bridge protocol是否安装成功 发现果真没有安装vmware bridge protocol,试图安装时却出现了报错 0x800700C1,查找错误代码形成的原因: 实在无奈,考虑是否重新安装workstation,到官网上找