Problemy z kartami sieciowymi vmxnet3 w systemie Windows (2008 R2 i 7) po zainstalowaniu KB4088875 i KB4088878

Nowe skumulowane aktualizacje zabezpieczeń Microsoft - KB4088875 (Comiesięczny pakiet kontroli jakości) i KB4088878 (Tylko aktualizacja zabezpieczeń) dla systemu Windows 7 z dodatkiem SP1 i Windows Server 2008 R2, wydanego 13 marca 2018 r., Powoduje poważne problemy z kartami sieciowymi maszyn wirtualnych VMware. Te aktualizacje prowadzą do odtworzenia interfejsów sieciowych vNIC i zresetowania ustawień sieciowych systemu gościa, w wyniku czego po zainstalowaniu aktualizacji maszyna wirtualna traci określony statyczny adres IP i staje się niedostępna w sieci.

Dzieje się tak z powodu dodania do systemu nowej aktywnej karty sieciowej, a stara karta sieciowa staje się ukryta i nieaktywna. Nowa karta sieciowa jest skonfigurowana do dynamicznego uzyskiwania adresu IP z serwera DHCP. Jeśli spróbujesz ręcznie ustawić stary adres IP nowej karty sieciowej, pojawi się błąd:

Adres IP X.X.X.X wprowadzony dla tej karty sieciowej jest już przypisany do innej karty (adapter Ethernet vmxnet3), która nie jest już obecna w komputerze. Jeśli ten sam adres zostanie przypisany do obu kart i staną się one aktywne, tylko jeden z nich użyje tego adresu. Może to spowodować nieprawidłową konfigurację systemu. Czy chcesz wprowadzić inny adres IP dla tej karty na liście adresów IP w zaawansowanym oknie dialogowym?

Adres IP X.X.X.X określony dla tej karty sieciowej jest już przypisany do innej karty Ethernet vmxnet3. Jeśli obu adapterom zostanie przypisany ten sam adres, a oba karty staną się aktywne, tylko jeden z nich będzie mógł z niego korzystać. Może to prowadzić do wadliwego działania systemu. Wprowadź inny adres IP dla tej karty na liście adresów IP w oknie ustawień zaawansowanych?

Po zainstalowaniu tych aktualizacji serwer wirtualny traci przypisany adres IP, próbując uzyskać nowy adres z serwera DHCP. Spowoduje to utworzenie nowego interfejsu sieciowego w oddziale HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ Interfaces. Stara karta sieciowa się ukrywa.

Problem pojawia się tylko na maszynach wirtualnych z systemem Windows 7 / 2008R2 z wirtualną kartą sieciową, taką jak vmxnet3.

Dlatego stary adres IP jest nadal uważany za użyteczny i należy go zwolnić..

Aby ręcznie naprawić błąd, musisz usunąć ukrytą kartę sieciową z listy sprzętu. Aby wyświetlić ukrytą kartę sieciową w menedżerze urządzeń, musisz uruchomić polecenia

set devmgr_show_nonpresent_devices = 1
uruchom devmgmt.msc

Wybierz punkt menu Widok -> Pokaż ukryte urządzenia. I rozwiń sekcję Network Adaters.

Następnie w menedżerze urządzeń musisz usunąć ukryte karty sieciowe vmxnet3 Ethernet Adapter #x. Następnie stary adres IP można przypisać do nowej karty sieciowej.

Teraz otwórz panel sterowania połączeniami sieciowymi i edytuj ustawienia IP nowej karty. Zapisz zmiany (nie jest wymagane ponowne uruchomienie).

Aby automatycznie rozwiązać ten problem, Microsoft sugeruje użycie następującego skryptu VBS (https://support.microsoft.com/en-us/help/3125574/convenience-rollup-update-for-windows-7-sp1-and-windows-server- 2008-R2) do uruchomienia przed instalacją aktualizacji lub po niej.

Przed uruchomieniem skryptu zaleca się utworzenie kopii zapasowej następującej gałęzi rejestru: HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Enum \ PCI .

Kod skryptu fixPCI.vbs

Opcja Jawna
Stała HKEY_LOCAL_MACHINE = & H80000002
Dim oReg: Set oReg = GetObject ("winmgmts: impersonationLevel = personifikacja! \\. \ Root \ default: StdRegProv")
Dim oShell: Ustaw oShell = CreateObject („WScript.Shell”)
Dim sPath, aSub, sKey, aSubToo, sKeyToo, dwValue, Wynik, SaveResult
Dim notDeleted
NotDeleted = 0
„Zdobądź wszystkie klucze w sPath
sPath = "SYSTEM \ CurrentControlSet \ Enum \ PCI"
oReg.EnumKey HKEY_LOCAL_MACHINE, sPath, aSub


Pętla przez każdy klucz
Dla każdego klucza w sub
„Uzyskaj wszystkie podklucze w kluczu„ sKey ”
oReg.EnumKey HKEY_LOCAL_MACHINE, sPath & "\" & sKey, aSubToo
Dla każdego sKeyToo w aSubToo
Wynik = oReg.DeleteKey (HKEY_LOCAL_MACHINE, sPath & "\" & sKey & "\" & sKeyToo & "\" & "\ Device Parameters" & "\ SlotPersistentInfo")
„Dopuszczaj awarię tylko wtedy, gdy klucz nigdy nie istniał
Jeśli (Wynik = 1) Lub (Wynik> 2) To
NotDeleted = 1
SaveResult = Wynik
Zakończ jeśli
Dalej
Dalej

Jeśli (NotDeleted> 0) to
Wscript.Echo "Jeden lub więcej kluczy SlotPersistentInfo nadal istnieje pod HKLM \ System \ CurrentControlSet \ Enum \ PCI \\ Parametry urządzenia. Usuń ręcznie. Wynik =" & Wynik
Zakończ jeśli

Zasadniczo podobne działania można wykonać za pomocą jednego polecenia programu PowerShell:
Get-ChildItem „HKLM: // System / CurrentControlSet / Enum / PCI / * / * / DeviceParameters / SlotPersistentInfo” | Usuń element

Za pomocą PowerCLI można znaleźć wszystkie maszyny wirtualne z adapterem Vmxnet3..
Aby to zrobić, połącz się z serwerem vSphere.
Connect-VIServer -Server vsphere65 -User corp \ nazwa użytkownika

Teraz wymienimy wszystkie maszyny wirtualne z systemem operacyjnym i używane wersje wirtualnych kart sieciowych.

PowerCLI C: \> Get-VM | Wybierz nazwę, PowerState, gość, @ N = 'NetworkAdapter'; E = [string] :: Join (',', (Get-NetworkAdapter -Vm $ _ | Select-Object -ExpandProperty Type))

Aby ułatwić analizę, tę tabelę można wyeksportować do programu Excel, dodając | Export-Csv C: \ PS \ vNICrep.csv -NoTypeInformation