突然ネットワークドライブにアクセス出来なくなった時の対処法(20H2,21H1対応)

昨日まで、アクセスできていたネットワークドライブになぜか突然アクセスできなくなる。そんなことってありますよね。それはおそらくWindows Update が自動ではしったからです。セキュリティーのため仕方ないことなのですが、急いでいるときなんかは特に困ります。

私は以前、「共有フォルダにアクセス出来なくなった時に試すこと」という記事を以下で書いています。今回の前提となる「SMBv1で共有フォルダにアクセスできなくなった場合に確認したい内容」をまとめた記事になりますのでよければ参照してください。

今回は、以前の話を踏まえたうえで、おそらく20H2以降、ネットワークドライブにアクセスできなくなってしまったことについての対処法を紹介します。

Windows アップデート後に突然ファイルサーバーにアクセスできなくなることがあります。しかも、エラー詳細が「エラーを特定できません 0x80004005」などという残念な情...

参考:

https://docs.microsoft.com/ja-jp/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3

スポンサーリンク

今回もまず結論から

今回、私が20H2や21H1のアップデート後に確認した症状は、SMBv1のみを利用するNAS や 共有フォルダ などにネットワークドライブを割り当ている場合に発生しました。調査した内容は後程紹介するとして、解決方法は以下3つのうちのどれかになります。推奨する順番に紹介します。(※ SMBv1 が有効になっていることが前提です。=前回の記事の【「SMBv1」問題】の項を参照してください。

急いでいるときは、ひとまず、2を試してうまくいったら、じっくり記事を読んで1-3のどの対策をとるかゆっくり検討してください。

  1. ネットワークドライブの割り当てを外し、利用時と利用終了時に以下を実行する。(※ 切断を忘れた場合も、切断後してしばらく置くと利用可能)(推奨)
    利用終了時(切断):

    1
    2
    net use ドライブレター: /delete
    例:net use x:

    利用時(接続):

    1
    2
    net use ドライブレター: \\ネットワークパス
    例:net use x: \\192.168.xx.xx\share
  2. アクセスが必要な時に、コマンドプロンプトを管理者モードで立ち上げ、以下のコマンドで lanmanworkstation を再起動
    1
    2
    net stop /y lanmanworkstation
    net start /y lanmanworkstation
  3. SMBv2を無効化し、Windows を再起動する。(非推奨)
    1
    2
    sc config lanmanworkstation depend= bowser/mrxsmb10/nsi
    sc config mrxsmb20 start= disabled
3.は、SMBv2で通信できるところにも通信しなくなるため、セキュリティ的に非推奨ですが、そもそも、SMBv2の機器がネットワーク上に存在していないのであれば、一番使い勝手はよいです。

試したこと(結論に至るまで)

久々にネットワークドライブにアクセスしようとしたところ、アクセスエラーが出てしまいました。ググったところ、Workstation サービスを再起動しろとのこと。そんな馬鹿なと思い試したところ、アクセスできなくなっていたネットワークドライブに接続できました。

これは、最初の結論で紹介した2番の以下のコマンドと同等の行為になります。

1
2
net stop /y lanmanworkstation
net start /y lanmanworkstation

IPアドレスでアクセスしてみる

私の場合ネットワークドライブに割り当てていたのは、名前(NetBIOS名)だったため、IPアドレスならアクセスできるかを確認したところ、普通にアクセスできました。そのため最初は、これは名前解決の問題でIPアドレスでアクセスすれば終わりかな?と考え、ネットワークドライブの割り当てを名前からIPアドレスへ変更しました。うまく動いていることを確認し満足したところで、再起動後、またネットワークドライブにアクセスができなくなってしまいました。今度は、IPアドレスでのアクセスがNGとなり、名前でのアクセスはうまくいく状態になっていました。

パケットをキャプチャしてみる

Workstation サービスの再起動といい、名前やIPでのアクセスといい、腑に落ちないことがたくさんあります。ということで、アクセス時のパケットをキャプチャして確認してみたところ、なんとネットワークドライブとして登録した場合と、ネットワークドライブに登録していない場合で、パケットが変わっていました。ネットワークドライブに登録していない場合は、SMBv1を使ってアクセスしており、ネットワークドライブに登録している場合は、SMBv2を使っています。

ネットワークドライブに登録している:

ネットワークドライに登録していない場合:

先ほど紹介した、Workstation のサービスを再起動して、パケットを確認したところ、サービス再起動の直後は、SMBv1 でアクセスに行くことも確認できました。

結論

おそらく、20H2??以降は、以前紹介した SMBv1を有効にしていたとしても、起動時にネットワークドライブを割り当てている場合は、SMBv1のみをサポートする NAS や 共有フォルダにはアクセス制限がかかってしまいます。(起動時接続するネットワークドライブの場合、Windows が 気を利かせて SMBv2 でアクセスしようとするため)。そのため、SMBv1 でネットワークドライブにアクセスするには、以下のどれかが必要という結論に至りました。コマンドはそれぞれ前述の通りです。

  1. 起動時から常時ONとするのではなく、ネットワークドライブの切断をこまめに行うことで、Windows に SMBv1 を利用させる。
  2. lanmanworkstation のサービス(Workstation のサービス)を再起動することでだましだまし使う。
  3. SMBv2を止めてしまい、SMBv1だけしか使えないようにする。(推奨)
前述のとおり、名前(NetBIOS名)とIPアドレスは、それぞれ別ものとして認識しています。ネットワークドライブに割り当てた方で、SMBv2が使われました。

おまけ

切り替えスクリプトを作ってみました。ドライブレター(s:)とネットワークパス(\\192.168.X.X\path)を自分の環境に変えて利用してみてください。これを.batとして保存し、ダブルクリックすればネットワークドライブの接続と切断を切り替えられます。

1
2
3
4
5
6
7
8
9
10
11
12
13
@echo off
set drive=s:
set netpath=\\192.168.X.X\path

net use %drive% > nul 2>&1

if %errorlevel%==0 (
net use %drive% /delete
) else (
net use %drive% %netpath%
)
rem pause
exit /b 0