Hebikuzure's Tech Memo

2016年10月8日

TCP ポート 445 がブロックされていると Windows 10 に更新後共有フォルダーにアクセスできない

Filed under: Windows Tips — hebikuzure @ 6:43 午後

これも「MS16-110 適用後 NAS などの共有フォルダーに接続できない問題」の調べもの中に見つけた情報です。

Windows のファイル共有に利用される SMB ではサーバー側の待ち受けポートてして TCP 445 番ポートが利用されますが、445 番ポートが何らかの理由でブロックされている場合はレジストリの構成で 445 番の代わりに 139 番ポートを使うよう構成することができました。

構成するレジストリは以下の通りです。

キー : HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
名前 : EnableNetBTForSmb2
種類 : DWORD
設定値 : 1

参考情報 : TCP 445 番ポートが遮断されていると Windows 8、Windows Server 2012 以降の OS からファイル共有通信ができない

しかしこのレジストリ構成をして共有に接続していたクライアントを Windows 10 にアップグレードしたり、新規の Windows 10 にこのレジストリを構成しても、共有には接続できません。これは、上記の参考情報に書かれているように、このレジストリは Windows 10 では利用できず無視されるからです。

SMBv1 以前のファイル共有プロトコルはすでに非推奨となって久しく、将来的に利用できなくなると考えられるので、Windows 10 で SMB によるファイル共有を行う場合は、TCP 445 番ポートをブロックしないようにネットワークを構成しましょう。

ファイル共有で利用されている SMB のバージョンを確認する方法

Filed under: Windows Tips — hebikuzure @ 6:42 午後

先日の「MS16-110 適用後 NAS などの共有フォルダーに接続できない問題」の記事の調べ物をしている際に見つけた Tips についてメモ代わりに投稿しておきます。

Windows でのファイル共有には SMB プロトコルが利用されていることは良く知られていますが、SMB は Windows 製品で長く使われ機能とセキュリティが強化されてきたため、SMBv1、SMBv2、SMBv3 といったバージョンやさらに細かなダイアレクト が存在しています。通常はサーバー – クライアント間で自動的にネゴシエーションが行われ適切なバージョン・ダイアレクトが利用されるため、こうした違いを意識する必要はないのですが、Windows 製品以外 (Linux 上の Samba や OS Ⅹ、NAS など) と接続する場合や、Windows 間でもトラブルシュートをする場合など、どのようなバージョン・ダイアレクトが利用されているのか確認したい場合があります。

そのような場合、クライアントで次のような方法で利用している SMB のバージョン・ダイアレクトを確認することができます。

クライアントで利用可能な SMB のバージョンを確認する

  1. コマンド プロンプトで以下を実行します
    sc.exe qc lanmanworkstation
  2. 結果がC:\>sc.exe qc lanmanworkstation
    [SC] QueryServiceConfig SUCCESS

    SERVICE_NAME: lanmanworkstation
    TYPE                              : 20  WIN32_SHARE_PROCESS
    START_TYPE                  : 2   AUTO_START
    ERROR_CONTROL          : 1   NORMAL
    BINARY_PATH_NAME     : C:\WINDOWS\System32\svchost.exe -k NetworkService
    LOAD_ORDER_GROUP   : NetworkProvider
    TAG                              : 0
    DISPLAY_NAME             : Workstation
    DEPENDENCIES             : Bowser
    : MRxSmb20
    : NSI
    SERVICE_START_NAME : NT AUTHORITY\NetworkService

    のように表示されます。

  3. DEPENDENCIES 欄を確認します。
    mrxsmb20 がある場合は SMBv2 (Windows 8/Windows Server 2012 以降は SMBv3 も) が有効です。
    mrxsmb10 がある場合は SMBv1 が有効です。

参考 : Windows Vista、Windows Server 2008、Windows 7 、Windows Server 2008 R2、Windows 8、Windows Server 2012 で 、SMBv1、SMBv2、SMBv3 を有効、または無効にする方法

SMB セッションで利用されている SMB のダイアレクトを確認する

実際に開いている SMB セッションでどのような SMB ダイアレクトが利用されているか確認するには、管理者として実行した PowerShell で以下を実行します。
Get-SmbConnection
開いている SMB セッションの利用しているダイアレクトや資格情報などの詳細情報が表示されます。

SMB セッションがないと何も表示されないので、利用ダイアレクトを調べたい相手 (サーバー) 上の共有を開いた状態で実行してください。簡単にはエクスプローラーで共有フォルダーを開いておけば OK です。

WordPress.com Blog.