エクスプローラーのネットワークに表示されていた
LAN内の他のPCは一体どこに?
Windows 10をRS4(Ver.1803)にアップグレードしてから、エクスプローラーのネットワークにLAN内のPCが表示されなくなった、あるいはRS4を入れる以前から見えなかったということに気づいた読者がいるのではないだろうか。端的にその原因を説明すると、SMBv1(SMB1.0)が削除されたためである。
マイクロソフトは、Windows 10 RS3(Ver.1709)からSMBv1の排除に乗り出した。RS3では、SMBv1はインストールされるものの稼働時間でのべ15日以上(電源オフの時間は除く、以下同様)の利用がない場合、SMBv1をシステムから削除する。RS3のクリーンインストールではSMBv1サーバーはインストールされず、SMBv1クライアントは残るものの、のべ15日間以上利用がない場合には、やはり削除される。
具体的には、SMBv1が動作しているNASや古いバージョンのPCなどと接続している場合は大丈夫だが、そうでない場合には、SMBv1の機能はWindows 10から削除される。また、RS4へアップグレードした場合には、SMBv1がそもそもインストールされないようだ。
NASなどの場合は、機器側の設定でSMBv2以降を利用するように変更できるものもあるが、製品ごとに機能があるかどうか、あったとしても設定方法はさまざまで本稿で解説するのは難しい。
さらにベンダーによっては、SMBv1の利用に関する情報を公開していないケースもあり、不安という人もいるだろう。英語ではあるが、マイクロソフトが集めたSMBv1を使うベンダーのリストが以下のURLにあるので、これを参考にするといい。
●SMB1 Product Clearinghouse
https://blogs.technet.microsoft.com/filecab/2017/06/01/smb1-product-clearinghouse/
なお、Windowsにおいては、Vista以降でSMBv2をサポートしているので、すでにWindows同士のファイル共有自体に関する問題はないはずだ。うまく行かない場合は、どちらかのマシンがSMBv1を利用するように強制されているケースなどが考えられる。また、エクスプローラーのネットワークにPCが表示されないだけで、アドレス欄にUNCを入力すれば、ちゃんと該当マシンの共有一覧を見ることはできる。ネットワーク内の台数が少ないなら、必要な共有フォルダーをクイックアクセスに登録するのもありだろう。
SMBv1の脆弱性はWannaCryでもターゲットに
今後も使い続けるのはリスクがある
そもそもSMBv1は、MS-DOS時代に作られたファイル共有などのプロトコルであるSMB(バージョン番号はなし)をベースに、Windows 2000やXPのときに作られたプロトコルである。これに対して、SMBv2は、Windows Vistaにおいて、SMBv1との互換性を考慮することなく新しく作り直されている。
SMBv1には、互換性維持のためにセキュリティが甘くなっている部分があり、これまでも問題になっていた。マイクロソフトは、SMBv1の利用を停止しようとしていたが、SMBv1をベースに仕様を公開したCIFS(Common Internet File System)などもあり、Windows以外のプラットフォームにおけるファイル共有に利用されていた。そのためマイクロソフトも簡単には無くすことができなかったわけだ。しかし、昨年に大きな被害を出したランサムウェアであるWannaCryにおいてSMBv1の脆弱性を利用するなどしており、早急な対策が求められていたのである。
つまり削除されたSMBv1を復活させるという手もあるにはあるのだが、これはあまりに危険というわけだ。そこで本記事では「機能探索リソース公開」サービスを有効にする方法を紹介する。
なお、ネットワーク探索でPCを表示させること自体、侵入された場合などに危険といった意見もあるようだが、そもそも侵入された段階で危険な状態なのであり、Windowsがネットワーク探索でPCを表示しなくても、総当たり的にpingコマンドを実行すれば、PCを発見することは可能である。このため、ネットワーク探索を有効にすること自体は問題はないと考えられる。それより個々のマシンのパスワード設定をきちんとすることが重要だろう。
「機能探索リソース公開」サービスを起動して
他のマシンに表示させる
Windowsでは、プリンタなどのリストアップにWS-Discovery(WSD)というプロトコルを利用する。「機能探索リソース公開」は、このWSDを使って、自身が持つリソース(ファイル共有やリモート印刷など)を公開するためのものだ。
エクスプローラーは、ネットワーク内の複数のリソース列挙方法に対応している。しかしこれまでは、リソースをデフォルトで公開するのは、SMBv1だけだった。Windows 10のRS3以降で、SMBv1が禁止されると、他の方法ではデフォルトではリソースを公開しないため、 エクスプローラーにPCが表示されなくなったのである。
エクスプローラーでネットワークを開き、「探索方法」のカラムを表示させると、PCを発見した方法を表示させることが可能だ。なお、ここにNetBIOSと表示されるようならSMBv1がローカル、リモートともに動作している。
そこで、機能探索リソース公開サービス「Function Discovery Resource Publication (FDResPub)」をシステム起動時に自動で起動するように設定する。これで、他のPCのネットワークに表示されるようになる。ただし、ネットワーク内のPCをすべて表示できるようにするには、全部のマシンで同じ設定をする必要がある。
マイクロソフトのドキュメントでは、同時に「機能探索プロバイダー ホスト サービス」(Function Discovery Provider Host)を自動起動に設定することになっているが、RS4でテストしたところでは、Function Discovery Provider Hostは、エクスプローラーでネットワークを開くなどすると自動的に起動されるため、あらかじめ起動しておく必要はなかった。
ちなみに、前回紹介したPowerShell Remotingを設定していれば、1つのマシンから他のマシンの設定を行うことは可能だ。具体的には、Invoke-Commandで、set-serviceコマンドレットを起動させる。これにより、サービスを自動起動に設定し、かつ実行を行う。
set-Service fdrespub -StartupType Automatic -Status Running
このコマンドでは、「fdrespub」というサービスの起動方法を「Automatic(自動)」とし、サービスを起動させるものだ。
おそらく、新規にPCを追加すると、再度作業が必要になるだろう。そこで関数(以下の囲みを参照)を作り、
function setfsd ([string]$pcname, [string]$username) {
if($pcname -eq ""){
Write-output "Usage: setfsd PC-Host-Name Remote-Admin-User-Name"
return
}
Invoke-Command -ComputerName $pcname -Credential $username {
Write-output "Before Processing"
Get-Service fdRespub | Format-List -Property Name,DisplayName,StartType,Status;
# set-Service fdphost -StartupType Automatic -Status Running;
set-Service fdrespub -StartupType Automatic -Status Running;
Write-output "After Processing"
Get-Service fdrespub | Format-List -Property Name,DisplayName,StartType,Status;
}
}
ファイル(拡張子は.ps1とする)に保存するか、自身のプロファイル($profile変数で参照できる)に登録しておく。この関数を使えばコンピュータ名と管理者アカウントを指定するだけで、対象マシンのサービスを設定できるようになる。
この連載の記事
-
第465回
PC
WindowsのPowerShellからBluetoothデバイスを調べる -
第464回
PC
Windows 10のサポート切れまで1年を切った さてWindows 10マシンをどうする? -
第463回
PC
Windows Terminal Preview版でSixelグラフィックスを実際に表示させてみる -
第462回
PC
Windows Terminal Preview版でSixelグラフィックスを扱う -
第461回
PC
Copilot+ PCを買ってみたが、「今焦って買う必要はない」のかもしれない -
第460回
PC
Windowsでsftpを使う -
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 - この連載の一覧へ