2018年3月26日月曜日

Windows 名前解決の謎 NET VIEW 編

NET VIEW で出力されるリストは恐らく次の様にして作出されます:
  • \MAILSLOT\BROWSE により、Get Backup List Request を送信。
  • \MAILSLOT\BROWSE により、Get Backup List Response を受信。
  • そこに対して Session Setup と Tree Connect (\\SERVER\IPC$) を送信。
  • NetServerEnum2 Request を送信。
  • NetServerEnum2 Response を受信。ここに Server の一覧が格納されています。
問題点 1:
 ところが最近の壊れた Windows 10 Creators Update では、NetServerEnum2 Response の内容が Status: Unknown (2184) になって戻って来ます。
これが『サービスが開始していません。』に変換されて、あたかも NET VIEW が失敗しているような印象を与えています…

問題点 2:
 両方 SMB 2.0 対応だと何故か NetServerEnum2 Request を送信しない…
 修正方法がわかりました。SMB 1.0 を有効にします。

Note: マスターブラウザーに server list を尋ねているのではなくて、バックアップブラウザーの 1 つに server list を尋ねている点が興味深い…

ーーー

対策案 1: 「ネットワーク探索」を有効にします。姿が見えない方の Windows で操作。今後主流になるであろう WSD で発見できるようにします。



 
対策案 2: 壊れた Windows 10 にバックアップブラウザーをさせまい。
  1. MaintainServerList → No
  2. Computer Browser サービスを再起動 or サービスを停止→無効化
参考サイト https://eglsoft.com/browse.html

Note: MasterBrowserResetRequest を送信して、問題の Windows にマスターブラウザーを強制的に放棄させることはできます。しかし、同じ Windows がマスターブラウザーになってしまうので、意味がありませんでした。

Note: マスターブラウザーを調べる方法
nbtscan を使うと割と確実に調査できます。

例:
nbtscan-1.0.35.exe -f 192.168.2.0/24

192.168.2.999   WORKGROUP\DD7                   SHARING
  DD7            <20> UNIQUE File Server Service
  DD7            <00> UNIQUE Workstation Service
  WORKGROUP      <00> GROUP  Domain Name
  WORKGROUP      <1e> GROUP  Browser Service Elections
  WORKGROUP      <1d> UNIQUE Master Browser
  ..__MSBROWSE__.<01> GROUP  Master Browser

このようなものをリスト出力してきます。ワークグループ名と Master Browser のペアが把握できるので便利です。
かの browstat.exe は XP/2003 Server でしか動作しないという曰く付きですが、nbtscan は OS に関係なく動作します。