昨日まで、アクセスできていたネットワークドライブになぜか突然アクセスできなくなる。そんなことってありますよね。それはおそらくWindows Update が自動ではしったからです。セキュリティーのため仕方ないことなのですが、急いでいるときなんかは特に困ります。
私は以前、「共有フォルダにアクセス出来なくなった時に試すこと」という記事を以下で書いています。今回の前提となる「SMBv1で共有フォルダにアクセスできなくなった場合に確認したい内容」をまとめた記事になりますのでよければ参照してください。
今回は、以前の話を踏まえたうえで、おそらく20H2以降、ネットワークドライブにアクセスできなくなってしまったことについての対処法を紹介します。
参考:
今回もまず結論から
今回、私が20H2や21H1のアップデート後に確認した症状は、SMBv1のみを利用するNAS や 共有フォルダ などにネットワークドライブを割り当ている場合に発生しました。調査した内容は後程紹介するとして、解決方法は以下3つのうちのどれかになります。推奨する順番に紹介します。(※ SMBv1 が有効になっていることが前提です。=前回の記事の【「SMBv1」問題】の項を参照してください。)
急いでいるときは、ひとまず、2を試してうまくいったら、じっくり記事を読んで1-3のどの対策をとるかゆっくり検討してください。
- ネットワークドライブの割り当てを外し、利用時と利用終了時に以下を実行する。(※ 切断を忘れた場合も、切断後してしばらく置くと利用可能)(推奨)
利用終了時(切断):1
2net use ドライブレター: /delete
例:net use x:利用時(接続):
1
2net use ドライブレター: \\ネットワークパス
例:net use x: \\192.168.xx.xx\share - アクセスが必要な時に、コマンドプロンプトを管理者モードで立ち上げ、以下のコマンドで lanmanworkstation を再起動
1
2net stop /y lanmanworkstation
net start /y lanmanworkstation - SMBv2を無効化し、Windows を再起動する。(非推奨)
1
2sc config lanmanworkstation depend= bowser/mrxsmb10/nsi
sc config mrxsmb20 start= disabled
試したこと(結論に至るまで)
久々にネットワークドライブにアクセスしようとしたところ、アクセスエラーが出てしまいました。ググったところ、Workstation サービスを再起動しろとのこと。そんな馬鹿なと思い試したところ、アクセスできなくなっていたネットワークドライブに接続できました。
これは、最初の結論で紹介した2番の以下のコマンドと同等の行為になります。
1 2 | net stop /y lanmanworkstation net start /y lanmanworkstation |
IPアドレスでアクセスしてみる
私の場合ネットワークドライブに割り当てていたのは、名前(NetBIOS名)だったため、IPアドレスならアクセスできるかを確認したところ、普通にアクセスできました。そのため最初は、これは名前解決の問題でIPアドレスでアクセスすれば終わりかな?と考え、ネットワークドライブの割り当てを名前からIPアドレスへ変更しました。うまく動いていることを確認し満足したところで、再起動後、またネットワークドライブにアクセスができなくなってしまいました。今度は、IPアドレスでのアクセスがNGとなり、名前でのアクセスはうまくいく状態になっていました。
パケットをキャプチャしてみる
Workstation サービスの再起動といい、名前やIPでのアクセスといい、腑に落ちないことがたくさんあります。ということで、アクセス時のパケットをキャプチャして確認してみたところ、なんとネットワークドライブとして登録した場合と、ネットワークドライブに登録していない場合で、パケットが変わっていました。ネットワークドライブに登録していない場合は、SMBv1を使ってアクセスしており、ネットワークドライブに登録している場合は、SMBv2を使っています。
ネットワークドライブに登録している:
ネットワークドライに登録していない場合:
結論
おそらく、20H2??以降は、以前紹介した SMBv1を有効にしていたとしても、起動時にネットワークドライブを割り当てている場合は、SMBv1のみをサポートする NAS や 共有フォルダにはアクセス制限がかかってしまいます。(起動時接続するネットワークドライブの場合、Windows が 気を利かせて SMBv2 でアクセスしようとするため)。そのため、SMBv1 でネットワークドライブにアクセスするには、以下のどれかが必要という結論に至りました。コマンドはそれぞれ前述の通りです。
- 起動時から常時ONとするのではなく、ネットワークドライブの切断をこまめに行うことで、Windows に SMBv1 を利用させる。
- lanmanworkstation のサービス(Workstation のサービス)を再起動することでだましだまし使う。
- SMBv2を止めてしまい、SMBv1だけしか使えないようにする。(非推奨)
おまけ
切り替えスクリプトを作ってみました。ドライブレター(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 |