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命令行中均可进行删除,在注册表中的删除也可以参照虚拟网卡。

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

  1. 删除字符串中的"\U0000fffc"数据 textView添加图片 以及添加后属性失效的解决

    背景:在实现textView的富文本时,如果添加一张图片后,如果直接发送textView的内容时,图片会被字符串“\U0000fffc”替换. 问题:如何删除“\U0000fffc”字符串:如何替换t ...

  2. win10,安装 vmware 后没有虚拟网卡,导致虚拟机没有 ip

    1.确认关闭windows firewall 服务,最保险的关闭时先把服务改为手动再关闭防止塔自动启动! 2.确认开启Device  Install Service .Device Setup Ser ...

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

    项目需要用到win7 32位系统,于是装个虚拟机,换了好几个系统资源,都是没有网卡驱动, XP 2003 都能上网唯独WIN7 不行,安装vmware tools也不管用,终于找到了这个东西.vmwa ...

  4. 在Windows中隐藏用户的方法

    这两天新建了一个用户用于共享文件,由于我的电脑只有我一个人用,多了一个用户后在登录界面上觉得挺碍事的,便想把它隐藏起来.找了一下,可以通过如下方式实现: 在注册表编辑器新建项值: HKEY_LOCAL ...

  5. 如何删除windows中运行的历史记录

    参照下图进入到注册表,依次打开红圈中的路径,在RunMRU里面列出来的全部是记录,全部删除即可

  6. 怎么删除windows中无用的服务

    搜索cmd->以管理员身份打开 输入sc delete  服务名 回车即可

  7. 如何删除WINDOWS中服务中不再使用的服务?

    右键选择那个不需要的服务,点击属性,看到"服务名",拷贝下来 然后通过管理员的方式进入到控制台,输入 sc delete "你刚才拷贝的服务名" ,就行了,注意 ...

  8. Windows中的用户和组以及用户密码处理

    目录 用户帐户 Windows 默认账户 Windows 内置用户账户 查看.创建和删除账户 组账户 内置组账户 组的查看.创建和删除 Windows中对用户密码的处理 LM-hash NTLM-ha ...

  9. Windows Server 2016-Hyper-V网络虚拟化概述

    在 Windows Server 2016 和虚拟机管理器中,Microsoft 提供的端到端网络虚拟化解决方案. 有构成了 Microsoft 的网络虚拟化解决方案的五个主要组件: Windows ...

随机推荐

  1. 【大结局】《从案例中学习JavaScript》之酷炫音乐播放器(四)

    这是之前写的用H5制作的音乐播放器,前三节其实已经做得差不多了,音轨的制作原理已经在上一节说明,不过一直还没有和音乐对接. 本章作为该系列的一个完结篇,我会专门把动态音轨的实现代码贴出来,demo地址 ...

  2. ASP.NET MVC入门之再不学习就真的out了

    听说最近又出了什么SAM,MVC辉煌即将过去,惊了我一身冷汗,ASP.NET MVC是啥都还没搞明白呢 于是赶紧打开ASP.NET官网学习学习,欢迎各位高手大侠来指点指点

  3. .Net语言 APP开发平台——Smobiler学习日志:如何在手机上实现电子签名功能

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的“Smobil ...

  4. 自己实现简单的AOP(五)使Demo适应webApi、亦可完成属性自动注入

    在前文的Demo中,webApi的Controller是不能自动注入的,原因是 IHttpController 和 IController 是通过两个不同的途径进行激活的. IHttpControll ...

  5. html+css+js 模拟win7桌面

    不贴代码了,直接上传附件. 附件下载: win7desktop

  6. html5 前端图片处理(预览、压缩、缩放)

    现在手机图片是越来越大了,上传图片流量耗费巨大.同时预览也是一个问题,所以利用HTML5 file和canvas来解决这个问题. var upload = { _o: null,//对象id _aut ...

  7. 使用abp模板创建解决方案

    前言 ABP官网(http://www.aspnetboilerplate.com/),本地环境 sql server EXPRESS +vs2013 通过官网生成 module zero 解决方案模 ...

  8. python基础之异常处理

    Python3 错误和异常 作为Python初学者,在刚学习Python编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍. Python有两种错误很容易辨认:语法错误和异常. ...

  9. 【JAVA并发编程实战】5、构建高效且可伸缩的结果缓存

    首先创建一个借口,用来表示耗费资源的计算 package cn.xf.cp.ch05; public interface Computable<A, V> { V compute(A ar ...

  10. 深入理解及应用Position

    position俗称定位,主要取值及作用如下: static 默认值.没有定位,出现在正常文档流中 absolute 绝对定位,相对于position为absolute.relative.fixed的 ...