刪除Windows中隱藏的物理網卡和網絡虛擬化失敗后的虛擬網卡


Windows環境下,在更換硬件服務器主板和網卡等硬件、恢復操作系統或者網絡虛擬化失敗后,可能會出現網卡方面的問題。例如,設備管理器中多了不應該存在的網卡;因命名沖突無法重命名當前網絡連接;IP地址沖突卻找不到那個與之沖突的網卡;網絡虛擬化失敗后出現無法刪除的虛擬網卡等等。下面我們就來總結一下如何刪除這些可見或不可見的Ghost一樣的網卡。

一、識別各類網絡設備和網絡連接

由於網絡虛擬化會在物理機上新增許多虛擬網絡設備(包括虛擬網卡),情況會變得復雜,因而首先我們需要分清他們。當然如果沒有進行網絡虛擬化,那么就可以跳過這部分。網絡虛擬化環境中,通過設備管理器應該可見:以Intel開始的物理網卡(根據物理網卡廠商而不同);Hyper-V Virtual Ethernet Adapter 虛擬網卡;Microsoft Network Adapter Multiplexor 網卡組(Windows Server 2012開始支持網卡組,通過命令lbfoadmin可以對網卡組進行管理,網卡組在網絡虛擬化環境中經常出現);在顯示隱藏設備后,還可見Hyper-V Virtual Switch Extension Adapter 虛擬交換機等。

image

而在網絡和共享中心中的網絡連接可以簡單的認為是上圖部分網絡設備的配置,其名稱和屬性可自定義,但其依賴的設備基本與上圖對應。

image

下面我們看看這些網絡連接的具體配置。

1、物理網卡的網絡連接

其主要的設置是TCP/IPv4、TCP/IPv6協議和兩個鏈路層拓撲發現協議。下圖是名為Ethernet 04的物理網卡的網絡連接屬性。

image

2、網卡組的網絡連接

如果僅僅配置網卡組,那么其網絡連接配置和物理網卡基本相同,除了TCP/IPv4、TCP/IPv6協議和兩個鏈路層拓撲發現協議外,還配置了使用Microsoft Load Balancing/Failover Provider協議。網卡組將多個物理網卡聚合,以實現網絡連接的故障轉移和負載均衡。而那些被聚合的物理網卡的網絡連接只有Microsoft Network Adapter Multiplexor Protocol協議了。下圖左側是名為Management網卡組的網絡連接屬性,右側是網卡組內名為Ethernet 01的物理網卡(被聚合的網卡之一)的網絡連接屬性。

image

3、虛擬網卡的網絡連接

虛擬網卡一般情況下是在創建虛擬交換機后創建的,另外通過SCVMM可以在物理主機上創建更多虛擬網卡。虛擬網卡的網絡連接和物理網卡的網絡連接配置是一樣的,因而虛擬網卡的作用和物理網卡原則上是一樣,只不過虛擬網卡是建立在物理網卡之上。下圖是名為vEthernet(Cluster)的虛擬網卡的網絡連接屬性。

image

4、虛擬交換機的網絡連接

這里有兩種情況:

如果虛擬交換機建立在獨立的物理網卡之上(直接在Hyper-V管理器中創建的虛擬交換機屬於這種情況),那么被用於創建虛擬交換機的物理網卡的網絡連接被配置為只使用Hyper-V Extensible Virtual Switch協議。如下圖是在名為Ethernet 01物理網卡上創建虛擬交換機后Ethernet 01物理網卡的網絡連接屬性

image

如果虛擬交換機建立在網卡組之上(在SCVMM中為主機配置基於網卡組的邏輯交換機后在主機中創建的虛擬交換機屬於這種情況),那么被用於創建虛擬交換機的網卡組的網絡連接被配置為只是用Hyper-V Extensible Virtual Switch協議,而被用於該網卡組的物理網卡配置如上面網卡組部分的描述。如下圖左側是創建名為Management Logical Switch的虛擬交換機后,創建了同名的網卡組的網絡連接屬性,右側是網卡組內名為Ethernet 01的物理網卡(被聚合的網卡之一)的網絡連接屬性。

image

總結以上,創建虛擬網卡和網卡組時除了創建相應的網絡設備外,同時會相應的網絡連接,但創建虛擬交換機只會創建相應的網絡設備,卻不會創建網絡連接,虛擬交換機是建立在物理網卡或網卡組之上的,僅僅是對物理網卡和網卡組的網絡連接進行的重新配置。

二、刪除網絡設備和網絡連接

知道了各種網絡設備和網絡連接之間的關系后,再來刪除目標就更加明確了,原則上應該遵循:

  • 至上而下。先刪除最上層網絡設備和網絡連接,再刪除其基礎。基本按照 虛擬網卡 > 虛擬交換機 > 網卡組 > 物理網卡 這樣是順序進行刪除。否則那些失去依賴的網絡設備和網絡連接將會是最難對付的。如果涉及到集群,最好將需要刪除的網絡設備對應的網絡不用於集群,可能的話解散集群。
  • 從表及里。在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 刪除主機上指定的虛擬網卡和網絡連接。

image

 

如果通過PowerShell無法查看和刪除虛擬網卡及其網絡連接,還可以嘗試兩個方法:其一是使用DevCon命令行工具,其二是直接操作注冊表。

(2)通過DevCon命令行工具

刪除網絡設備本質上是刪除設備的驅動程序,微軟自己的DevCon命令行工具可以代替設備管理器來管理計算機設備,特別是那些隱藏的設備,DevCon命令行工具的下載和使用可以參考這里。將相應版本devcon.exe文件放到windows\system32目錄中,以備命令行中調用,由於版本和兼容性問題DevCon也不是萬能的。使用如下命令查詢和刪除虛擬網卡,其中為什么是路徑root\vms_mp將在下面解釋。

image

(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\

image

再刪除網絡設備。打開節點HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\VMS_MP\,這個位置是虛擬網卡驅動的配置路徑,通過其子節點的FriendlyName屬性,找到需要刪除的網卡子節點,這也就是DevCon命令中出現的路徑。

image

但是要刪除這個子節點卻不是件容易的事,由於注冊表中該路徑是系統關鍵路徑,默認情況下這些子節點及其下所有節點和項都只在System賬戶控制下,其他賬號無權操作,因而使用管理員administrator運行注冊表也無濟於事,但好在通過獲取其所有權,可以最終讓administrator獲得操作權限。由於一次只能設置一個節點或項,這將是一件重復煩悶的工作。具體步驟如下:

在節點右鍵權限Permissions,雖然提示沒有權限,但是卻允許進入修改,選擇高級Advanced,如下圖修改所有者Owner以獲取所有權。但需要注意,修改所有者后雖然無法確認對話框,但是選擇放棄Cancel也能最終獲得所有權。

image

關閉所有對話框,重新右鍵權限Permissions,這時已經可以添加用戶administrator並授權了。從最深可見的節點中進行設置,直到其下所有節點和項都取得權限,最后刪除整個子節點,重啟主機。(其實該步驟也同理可用於獲取在NTFS下受限的文件或文件夾的權限)

image

 

(物理網卡也可以按上面注冊表的過程刪除。另外值得一提的是,在注冊表中與CurrentControlSet相同層級會有ControlSet001或ControlSet002等類似命名的節點,這些節點內擁有與CurrentControlSet相同的結構和數據,無需對ControlSet001或ControlSet002內的相應節點做刪除,它們只是系統配置的拷貝,系統正常重啟后它們將被CurrentControlSet中的修改覆蓋。)

2、刪除虛擬交換機

在網絡虛擬化環境中,首先應通過SCVMM控制台或SCVMM PowerShell刪除主機上的邏輯交換機或虛擬交換機,以正常移除SCVMM中對主機的相關配置,但如果在主機中發現依然存在未能刪除的虛擬交換機,還可以在主機上通過Hyper-V管理器和Hyper-V Powershell進行刪除。

image

如果無法完成,可以如同刪除虛擬網卡一樣使用DevCon命令行工具和操作注冊表,只不過虛擬交換機驅動配置節點為HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\VMS_VSMP,這里不再贅述。

3、刪除網卡組

網絡虛擬化環境中,如果給主機配置的邏輯交換機關聯了帶有網卡組的上行端口,那么總是會在主機上創建網卡組,並在網卡組上創建虛擬交換機。如果移除邏輯交換機失敗,主機上遺留下了多於的網卡組,則可以在網卡組管理器或者PowerShell中刪除。Windows Server 2012才支持網卡組,可以通過命令lbfoadmin打開網卡組管理器對網卡組進行管理,也可以使用remove-netlbfoteam命令。

image

這里謹慎使用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命令行中均可進行刪除,在注冊表中的刪除也可以參照虛擬網卡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM