Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは。Windows プラットフォーム サポートです。
Windows Server 2008 で 2018 年 3 月 14 日公開の更新プログラム (KB4089229) を適用すると、有線 LAN 利用時において後述の問題が発生することが判明しましたので、本 Blog でご案内します。
本問題は、以下の KB4089229 でも Known Issue として公開しています。
・Description of the security update for the Windows Kernel vulnerabilities in Windows Server 2008: March 13, 2018
https://support.microsoft.com/en-us/help/4089229
[ 問題の概要 ]
Windows Server 2008 に KB4089229 を適用すると、ネットワーク インターフェースに静的に設定した IP アドレス情報が失われ、DHCP 設定に置き換わる問題が発生することがあります。
[ 対象 OS ]
Windows Server 2008 SP2
[ 原因 ]
3 月の更新プログラムを適用すると、OS の pci.sys ドライバーが更新され、pci.sys の過去の修正が累積して適用されます。
pci.sys の過去の修正のうち、本問題は KB2487376 の更新プログラムが契機となって発生します。
(KB2487376 以降のバージョンの pci.sys が既に適用されている場合は、本問題は発生しません)
・FIX: Stop error when you replace an iSCSI network adapter or a motherboard by using an identical device on a Windows Server 2008-based or Windows Vista-based computer: "0x0000007B"
https://support.microsoft.com/en-us/help/2487376
KB2487376 では、デバイス インスタンス パスを生成する際の Serial Number の扱いを DWORD (32 ビット) から QWORD (64 ビット) に変更しています。
この修正を適用することで、NIC のデバイス インスタンス パスが変化し、新しい NIC として認識されることで、本問題が発生します。
(デバイス インスタンス パスの例)
// KB2487376 適用前
PCI\VEN_8086&DEV_109A&SUBSYS_207E17AA&REV_00\FF3BD28D00
// KB2487376 適用後
PCI\VEN_8086&DEV_109A&SUBSYS_207E17AA&REV_00\0016D3FFFF3BD28D00
[ 発生条件 ]
以下の 2 つの条件を両方満たす場合に、本問題が発生します。
a. pci.sys のバージョンが GDR 版 (6.0.6002.1xxxx) であること
b. NIC が PCI Express で Device Serial Number をサポートしていること
上記いずれかの条件を満たさない場合には、本問題は発生しません。
また、Hyper-V の仮想マシンでは、“ネットワーク アダプター”、”レガシ ネットワーク アダプター” とも上記 b に該当しないため、本問題は発生しません。
[ 対処方法 ]
これから KB4089229 を適用される場合は、以下の手順で対処を実施ください。
1. KB4089229 の Known issue にある以下のスクリプト内容をコピーし、テキストファイルに貼り付けて、例えば Script.vbs などの拡張子 .vbs を持つファイルとして保存します。
このスクリプトでは、pci.sys のバージョンが 6.0.6002.22567 未満の場合に、レジストリ設定 (HKLM\System\CurrentControlSet\Control\PnP\Pci\HackFlags = 0x00040000) を追加します。
--- ここから ---
Set WshShell = WScript.CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Dim WindirFilePath,strPciFileVersion,strAryFileVersion1
WindirFilePath = WshShell.ExpandEnvironmentStrings("%WinDir%")
strPciFileVersion = fs.getfileversion(WindirFilePath & "\\system32\\drivers\\pci.sys")
strAryFileVersion1 = Split(strPciFileVersion, ".")
'pci.sys version check
If (strAryFileVersion1(0) = 6 And strAryFileVersion1(1) = 0 And strAryFileVersion1(2) = 6002 And strAryFileVersion1(3) < 22567) Then
Dim curFlag,hackFlag,path
curFlag = 0
path="HKLM\System\CurrentControlSet\Control\PnP\Pci\HackFlags"
'Get current HackFlags
On Error Resume next
curFlag = WshShell.RegRead(path)
On Error Goto 0
'Set new HackFlags
hackFlag = curFlag or 262144
WshShell.RegWrite path,hackFlag,"REG_DWORD"
Wscript.echo "HackFlags set"
Else
Wscript.echo "pci.sys is already updated. No need to set HackFlags"
End If
--- ここまで ---
2. KB4089229 適用前の任意のタイミング、または KB4089229 適用後の OS 再起動前に、以下のコマンドでスクリプトを実行します。
cscript <スクリプトファイルの名前>
例) cscript Script.vbs
3. KB4089229 を適用して OS を再起動します。
補足事項 :
KB4089229 を適用後に OS 再起動した後は、pci.sys のバージョンが更新されているため、上記のスクリプトを実行してもレジストリ設定は追加されません。
すでに KB4089229 を適用して問題が発生している状態の場合、以下のレジストリ設定を追加して OS 再起動することで復旧します。
キー : HKLM\System\CurrentControlSet\Control\PnP\Pci
名前 : HackFlags
種類 : REG_DWORD
設定値 : 0x00040000 (既に HackFlags が存在する場合、既存の値に +0x00040000 した値を設定ください)
この設定により、KB4089229 適用後も、デバイス インスタンス パスの Serial Number が DWORD のまま扱われます。
[ 参考情報 ]
本問題の発生条件に該当するかどうか確認する場合は、以下の手順を実施します。
(1) pci.sys のバージョンを確認します。
コマンドで確認する場合、以下を実行します。
wmic datafile where name="C:\\Windows\\system32\\drivers\\pci.sys" get version /value
以下の例のように、pci.sys のバージョンが 6.0.6002.2xxxx (LDR 版) である場合、本問題は発生しませんので、KB4089229 適用前に事前の対処は必要ありません。
以下の例のように、pci.sys のバージョンが 6.0.6002.1xxxx (GDR 版) である場合、本問題が発生し得ますので、(2) の確認に進みます。
(2) NIC が PCI Express Serial Number に対応しているか、確認します。
(2-1) コマンドで確認する場合、以下を実行します。
wmic path win32_pnpentity where ClassGUID="{4d36e972-e325-11ce-bfc1-08002be10318}" get DeviceID | find /i "PCI"
以下の例では、NIC のデバイス インスタンス パスで最後の “\” の後に “&” を含む形式となっています。
この場合、Serial Number に非対応の NIC であり、本問題は発生しませんので、KB4089229 適用前に事前の対処は必要ありません。
以下の例では、NIC のデバイス インスタンス パスで最後の “\” の後に “&” を含まず、Serial Number が付加される形式となります。
この場合、Serial Number に対応している NIC であり、本問題が発生しますので、事前の対処が必要です。
(2-2) デバイス マネージャーで確認する場合、NIC のデバイス インスタンス パスを確認します。
以下の例では、NIC のデバイス インスタンス パスで最後の “\” の後に “&” を含む形式となっています。
この場合、Serial Number に非対応の NIC であり、本問題は発生しませんので、KB4089229 適用前に事前の対処は必要ありません。
以下の例では、NIC のデバイス インスタンス パスで最後の “\” の後に “&” を含まず、Serial Number が付加される形式となっています。
この場合、Serial Number に対応している NIC であり、本問題が発生しますので、事前の対処が必要です。
[ 参考情報 ]
・Description of the security update for the Windows Kernel vulnerabilities in Windows Server 2008: March 13, 2018
https://support.microsoft.com/en-us/help/4089229
[ 関連情報 ]
3月の更新プログラムを適用すると無線 LAN,有線 LAN 利用時に問題が発生する (Windows 7 / Windows Server 2008 R2) https://blogs.technet.microsoft.com/jpntsblog/2018/03/19/lan_problem_after_update_3b/
[ 更新履歴 ]
2018/03/26 : 本 Blog の公開
2018/04/02 : 本 Blog の更新
2018/04/09 : 本 Blog の更新 (対処方法を更新)
[ 補足 ]
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。