Alecriar Studioの中の人の技術メモ

横浜の個人事業主が日々の技術的な情報をつづります

Windows 10のネットワーク探索周り

Windows 10をはじめ、最近のWindowsのネットワーク探索まわりはどうにも混沌としています。以前はNBT(NetBIOS over TCP/IP)だけを押さえていれば問題はなかったのですが、そのNBTもレガシーな技術となりだんだんと使用されなくなっていく方向性です。その代替として昨日の記事ではLLMNRとLLTDが登場したということを紹介しましたが・・。 alecriarstudio.hatenablog.com 改めて調査したところ一部誤りがありました。Windows Vista以降のすべてのWindowsでネットワーク探索を担うのはLLMNRとLLTDのみではなく、LLDP、WSDという機能もまた追加されました。

f:id:alecriarstudio:20191008174415p:plain
LLTD、LLDP、WSD
このあたりが非常にまぎらわしいのですが、ブラウジングに関してはLLTD、LLDP、WSDがそれぞれ実装は異なるのですが同じような機能を提供し、また同時に起動状態にすることもできます。それぞれについて以下に試行錯誤の経緯を記録として残しておきますが、結論的にはWSDのみが「まともに」動作しました。

ネットワーク探索のプロバイダ

LLTD、LLDP、WSDのいずれも、ネットワーク探索におけるプロバイダと呼ばれるものです。かつてWindows XP以前はNBTという単一の機能で提供され「コンピューターブラウザー」と呼ばれていましたが、Windows Vista以降はコンピュータを検索するさまざまな方法が導入されネットワーク探索と呼ばれるようになり、そこで使用可能な検索サービスがプロバイダという形で集約されました。プロバイダは一つだけを有効にすることも複数を有効にすることもできます。以下にプロバイダの一覧を示します。

プロバイダ名 機能
コンピューターブラウザー NBTを使った探索。Windows XP以前のレガシーな方法
LLTD 元々はWindows Vista、7にてネットワークマップを作成するために使われたLLTD(Link-Layer Toplogy Discovery)プロトコルを使った探索
LLDP
LLMNR IPv6のローカルセグメント向けの名前解決LLMNR(Link-Local Multicast Name Resolution)を使用した探索
WSD WSD(Web Services on Devices)を利用した探索
UPnPバイス UPnPプロトコルによる探索
SSDP Discovery SSDP(Simple Service Discovery Protocol)による探索。ルータ等に採用されている
レジストリ レジストリに記録されたホストも列挙できる
WCN 無線LANの設定用の機能WCN(Windows Connect Now)による探索

LLTD

Windows VistaWindows 7を使ったことがある方にはお馴染みの「ネットワークマップ」。

f:id:alecriarstudio:20191008181152j:plain
出典:https://www.blockmodule.com/archives/574

このネットワークマップの作成を自動的に行っていたのがLLTDでした。このLLTDですが、現行のWindows 10でもネットワークアダプタの設定画面でその片鱗をうかがうことができます。

f:id:alecriarstudio:20191008181251p:plain
ネットワークアダプタの設定
実はデフォルトではLLTD(画面上では 「Link-Layer Topology Discovery Responder」と「Link-Layer Topology Discovery Mapper I/O Driver」)はチェックがオンの状態になっており、機能は有効になっています。にもかかわらず、Windows 10ではネットワークマップは提供されていません。いったいどこで使っているのでしょうね・・。

そして一番重要な点ですが、LLTDもネットワーク探索を提供する機能なので、これを有効にした場合エクスプローラで「ネットワーク」を開いたときネットワーク上のコンピュータとして表示されることを期待するのですが、結果として「ネットワーク」には表示されません。

f:id:alecriarstudio:20191007233229p:plain
「ネットワーク」に表示されない
そのためWindows 10においては、LLTDは必要のない機能ではないかと考察しています。

LLDP

LLTDと非常にまぎらわしいですが、LLDP(Link-Layer Discovery Protocol)はIEEE 802.1abで標準化されたネットワーク探索プロトコルで、主にルータやスイッチで使用されているものです。Windows 10ではLLDPもサポートしており、ネットワークアダプタの設定画面では「Microsoft LLDP」という表示でデフォルトで有効になっています。

ただしこちらが有効になっていても、エクスプローラから「ネットワーク」を開いたとき、LLTDの場合と同じくやはりネットワーク上のコンピュータとして表示されず、現時点ではどのように役に立つのか不明です。LLDPに対応したルーターやスイッチとの通信に限定した機能なのかもしれません・・。

WSD

WSD(Web Services On Devices)はMicrosoftが開発し、Windows Vista以降に導入された新しいネットワーク探索の仕組みで、ネットワークプリンターやWebカメラでの導入例が多いものです。こちらを試したところ、エクスプローラの「ネットワーク」で意図通りの表示を行うことができましたので、以下にその手順を記します。

スタートメニューから「Windows管理ツール」を開き、「サービス」を起動します。

f:id:alecriarstudio:20191008184155p:plain
サービス
スタートメニューにない場合は Windowsキー+R で「services.msc」と入力することで起動できます。
f:id:alecriarstudio:20191008184221p:plain
services.msc
サービス(ローカル)一覧から、「Function Discovery Resource Publication」を探します。
f:id:alecriarstudio:20191008184341p:plain
サービス一覧
ダブルクリックでプロパティを開きます。スタートアップの種類(E)を「自動(遅延開始)」にし、コンピュータを再起動します。
f:id:alecriarstudio:20191008190412p:plain
Function Discovery Resources Publicationのプロパティ
以上でWSDが有効になります。

エクスプローラから「ネットワーク」を開くと、自身のコンピュータと、あればLAN上にあるコンピュータもリストに表示されていると思います。「探索方法」カラムでWSDと表示されていれば正常です。

f:id:alecriarstudio:20191008185751p:plain
WSDでのネットワーク一覧

まとめ

以上の試行錯誤から、Windows 10などの最新のWindowsでは、ブラウジングに関してはWSD、名前解決に関してはLLMNRを使用したネットワーク探索を有効にし、NBTについては無効にしてしまっても構わないというのが現時点での最適解という結論です。ただし一筋縄ではいかず、そんなのめんどくさいよ!という方も当然いらっしゃると思いますので、そのような方は今まで通りNBTを引き続き利用されるのも一手です。ただし、Microsoftとしては廃止していく方向性と思いますので、いつまで使用できるかは未知数ではあります。