「Windowsネットワークのブラウジング問題の解明」 〜見える？見えない？ ネットワークコンピュータの謎 〜

### ●1. ブラウジングの仕組みと設定●

「ネットワーク・コンピュータ一覧」とも呼ばれる「ブラウジング機能」は、マイクロソフト・ネットワークの中でも難解な技術の一つです。Samba 開発チームはWindows NTの動作を詳細に解析した上で、この機能を十分に理解し、柔軟性を持った運用ができるようにSamba を作っています。ただ、Windows NTとの相互運用性は全く問題ないのですが、Windows95/98との併用については、Windows95/98の機能不足や動作不良のためにユーザーが悩み苦しみ、一部のユーザーはSambaの不具合でないかと誤解する者もいます。

ここでは、このブラウジング機能について、具体例を挙げながら解説します。

### ＜1.1 サーバー一覧を表示するブラウジングの仕組み＞

まず、最初に基本事項を確認しましょう。

「ブラウジング」とは、ネットワーク・コンピュータ（ここではサーバーと呼ぶ）一覧を表示させることです。注意してほしいのは共有名（共有フォルダ名や共有プリンタ名）の表示はブラウジングではないということです（図1）。

そして今回取り上げる「ブラウジング問題」とは、以下のような現象を指します。

1. Windows のデスクトップ上のネットワーク・コンピュータを開いても何も表示されない。
2. 動作しているはずのサーバー名が見えない。
3. 一覧表示されたサーバーを開こうとするとエラーになる。

これらの原因はWindows NTやSambaのバグであることはほとんどなく、設定ミスが大多数を占めます。しかし、Windowsは（ほぼ）自動設定なのに対して，Sambaは柔軟な設定ができるためにSambaの不具合であると誤解する方がいます。また、ネットワーク上にWindows9xがある場合は、その仕様の制限が原因で難解な現象になることがよくあります。

ブラウジングの仕組みは以下の通りです。

1. デスクトップ上のネットワーク・コンピュータを開いた場合。
   クライアントは同一セグメント内に存在するローカル・マスター・ブラウザ（LMB。セグメント・マスター・ブラウザとも呼びます。また、マスター・ブラウザのことをブラウズ・マスターと呼ぶこともあります。）からブラウズ・リスト（後述）を取得してサーバー一覧を表示します。同一セグメントにLMBが存在しないとネットワーク・コンピュータにはサーバー名が1つも表示されません。
2. ネットワーク・コンピュータ内の任意のサーバーを開いた場合。
   クライアントはそのサーバーから直接共有リストを取得します。サーバーの名前を解決できないとアクセスできずに「ネットワークパスが見つかりません」というエラーになります。

図１　ブラウジングの意味

### ＜1.2 ブラウズ・リストを提供するマスター・ブラウザ＞

クライアントはLMBからブラウズ・リストを取得し，サーバーを一覧表示します。このときのブラウズ・リストの内容は以下の通りです。

1. LMB と同一ドメイン/ワークグループに所属するサーバー名の一覧。
2. ほかのドメイン/ワークグループ名の一覧。
3. 各サーバーの説明（Windows には説明が48バイト以上にするとブラウズできなくなるというバグがあります。Microsoft 文書番号J041615 ）。
4. サーバーの属性（32 ビット）。これはPDC （プライマリ・ドメイン・コントローラ），BDC （バックアップ・ドメイン・コントローラ），マスター・ブラウザ，OS種別などをビット列で表したものです。

ブラウズ・リストには（1）各サーバーのIP アドレス，（2）各サーバーの共有名は含まれていません。

このような情報を記録しているブラウズ・リストを保持しているサーバーをマスター・ブラウザと呼びます。マスター・ブラウザにはLMB（ローカル・マスター・ブラウザ）とDMB（ドメイン・マスター・ブラウザ）の2 種類があり，以下の特徴があります（表1）。

1. Sambaではnmbdがマスター・ブラウザ機能を提供します。
2. Windows9x/Me は、サーバー機能（Microsoft ネットワーク共有サービス）をインストールしなければマスター・ブラウザになれません。
3. Windows NT/2000 では、標準状態で動作するComputerBrowserサービスによって自動選定され，マスター・ブラウザになります。
4. 各ネットワーク・セグメントごと，各ドメイン/ワークグループごと，各ネットワーク・プロトコル（TCP/IP，NetBEUI，IPX）ごとにLMB が必要になります。
5. クライアントは、LMBをブロードキャストによって見つけます。
6. DMBは、Windowsドメイン内（セグメントをまたがっても可）に1 つだけ存在し、各セグメントのLMBとブラウズ・リストを交換します。
7. クライアントは、DMBをWINS（ピア・ツー・ピアの名前解決）で見つけます。
8. PDC（プライマリ・ドメイン・コントローラ）は、DMBでなくてはなりません（DMBは、PDCである必要はありません）。
9. WINS サーバーはDMBであることが推奨されます。
10. マスター・ブラウザは、他のドメイン/ワークグループのサーバー名は持ちません。

表1　WINSサービスとマスター・ブラウザ
OSの種別によって、提供する機能やコンポーネントが異なる。

OS | ローカル・マスター・ブラウザ | ドメイン・マスター・ブラウザ | WINSサーバー
--- | --- | --- | ---
Windows NT/2000 Server | 〇ComputerBrowser | 〇PDCのみComputerBrowser | 〇WINS Server
Samba | 〇nmbd | 〇nmbd | 〇nmbd
Windows NT Workstation/2000 Professional | 〇ComputerBrowser | × | ×
Windows9x/Me | 〇ファイル共有サービス | × | ×

### ＜1.3 ドメイン/ワークグループとブラウズ・リスト交換の仕組み＞

Windowsドメイン/ワークグループは、認証時とブラウジング時とで役割や動作が異なります。まず、Windowsドメインは、ネットワーク・セグメントを越えて構成できます。つまり、ドメイン構成を採ったときは、セグメントを越えていてもサーバー名のブラウジングが可能です。ただし、各セグメントにLMBが必/要で、ドメイン内に1つだけDMBが存在しなければなりません（各LMB がドメインに参加している必要はありません）。

これに対してワークグループ構成を採った場合は、セグメントを越えて構成することはでません。つまり，セグメントを越えたブラウジングはできなくなります。なぜなら、ワークグループの場合には、各セグメントにLMBを設置でき各セグメント内のブラウズ・リストを作成することはできますが，LMB同士はブラウズ・リストを交換しないためです。ブラウズ・リストを交換するのは、LMBとDMBとの間だけになります（後述）。従って、もし、ワークグループ内にDMBを設置できれば、ワークグループ構成でもセグメントを越えてブラウジング可能になります。SambaにはDMB機能があるので、各セグメントにSambaを設置すれば、セグメントを越えてブラウジングが可能なワークグループを構成できます。

Windowsだけの場合は、DMBになれるのはPDCになっているWindows NT/2000 Serverだけなので、必然的にドメイン構成になります。

セグメントをまたがったブラウジングが正しく機能するには、DMBと各セグメントのLMBがブラウズ・リストを交換しあう必要があります。このときの仕組みは以下の通りです。

1. 各サーバーはブロードキャストを使って自身をLMBに登録します。各セグメント、各プロトコルごとにLMBは存在し、最初は1分間隔，その後は12 分間隔で登録します。
2. LMBは15分間隔でDMBに情報を通知します。TCP/IP以外のプロトコルでは、ルーター設定によってはセグメントを越えられません。
3. DMBはドメイン内の全セグメント情報を各LMBに15分間隔で通知します。

このとき，ワークグループにはDMBが存在しないので、セグメントを越えてリスト交換できません（SambaのRemoteAnnounce機能を使えば可能）。また、Windowsドメイン間では、ドメイン間の信頼関係を結ぶとリストにドメイン名が載ります。

ブラウズ・リストの交換時には以下のような制限があります。

ブラウズ・リストを交換できないとブラウジングできません。

1. LMBがDMBに情報を通知するには、DMBと通信できるプロトコルが必要です。
2. NetBEUIはセグメントを越えられないので、NetBEUIしかバインドしていないマシンのリストはセグメントを越えて渡せません。
3. Windows NT4.0 SP4 以降は、ブラウズ・リスト交換時の認証にも暗号化パスワードを使うようになったため、Sambaでencrypt passwords=yes の設定をしないと認証できずにブラウジングが正しくできません。
4. Windows9x/Me は，ブラウズ・リストのエントリ数に制限があり、大規模システムのブラウズ・リストを保持できません。
   (J041306によると、サーバリストは64KB分しか保管できないため、2000〜3000台の登録で限界になります。)

そのほかにも制限があるため、Windows NT/2000が同一セグメントに存在する場合は、Windows9x/Me をLMBにするべきではありません。

### ＜1.4 名前解決とブラウジング＞

ブラウジングとWindowsの名前解決は密接な関係がありますが、名前解決とブラウジングの機能を混同してはいけません。ここで、名前解決とは、「コンピュータ名とIP アドレスを結びつける仕組み」で、WindowsにはWinSockとNBT（NetBIOS over TCP/IP）の2つの名前解決方法があります。

WinSock による名前解決は、telnet，ftp，ping，rsh，lprの各コマンドなどで使用される方法で、通常hostsファイル→DNS→WINS→ブロードキャストの順で試されます。

Linuxでpingコマンド実行時の名前解決手順と比べると、WINSとブロードキャストを試す点が大きな違いです。

一方、NBTによる名前解決は、ファイル/プリンタ共有，netコマンド，nbtstatコマンドなどで使われる。Linux には存在しない方法です。通常、WINS→ブロードキャスト→LMHOSTSファイルの順に調べられます。NBTによる名前解決に失敗した場合は、WinSockでの名前解決を使用することも，設定によっては可能です。また、Samba では、名前解決順序を自由に設定可能です（name resolve order オプションに指定する）。

Windowsにおける名前解決の手順を図2に示します。

以上のような名前解決とブラウジングとは異なる機能であり，以下のことに注意してください。

1. WINSサーバーやDNSサーバーはブラウズ・リストを提供しない。
2. ブラウズ・リストにIP アドレスは含まれない。
3. ブラウズ・リストで名前解決はできない。
4. LMHOSTSやWINSの設定は名前解決の手段なので、この設定だけでブラウジング問題は解決できない。

図2　Windowsにおける名前解決の手順

### ＜1.5 マスター・ブラウザ選定の順序と確認＞

ここで、どのサーバーがマスター・ブラウザになるのか、その選定手順について説明します。同一セグメントの中で、以下に述べる優先順位が一番高いマシンがマスター・ブラウザになります。

まず、WindowsではOSの種別によって、優先順位が決まっています。

1. Windows NT/2000 Server （ドメイン・コントローラ），
2. Windows NT/2000 Server （メンバー・サーバー，またはスタンドアロン・サーバー），
3. Windows NT Workstation/2000 Professional ，
4. Windows9x/Me

の順です。

Windows9x/Meには、「Microsoftネットワーク共有サービス」を組み込み、「詳細設定」の「ブラウズマスター」を「有効」か「自動」にする必要があります（標準で「自動」になっています）。

Sambaの場合は、smb.conf（Sambaの設定ファイル）のos levelパラメータで優先順位を指定します。Windows NT Server（32）より大きくしたり、Windows9x（1）より小さくするなど自由に設定可能です。

マスター・ブラウザは、Windowsのnbtstatコマンドを使って探すことができます（図3）。

nbtstatコマンドを実行した結果、..__MSBROWSE__.<01>と表示されれば、マスター・ブラウザであり、<1D>のエントリがあればLMB，<1B>のエントリがあればDMBであるということです。

ローカル・マスター・ブラウザ
    C:\>nbtstat -a icccow
    NetBIOS Remote Machine Name Table

           Name               Type         Status
        ---------------------------------------------
        ICCCOW         <00>  UNIQUE      Registered
        ICCCOW         <03>  UNIQUE      Registered
        ICCCOW         <20>  UNIQUE      Registered
        ..__MSBROWSE__.<01>  GROUP       Registered
        ICC            <00>  GROUP       Registered
        ICC            <1D>  UNIQUE      Registered
        ICC            <1E>  GROUP       Registered

        MAC Address = 00-00-00-00-00-00
注)SambaではMACアドレスが表示されない
| ドメイン・マスタ・ブラウザ
    C:\>nbtstat -a icchome

    NetBIOS Remote Machine Name Table

           Name               Type         Status
        ---------------------------------------------
        ICCHOME        <00>  UNIQUE      Registered
        ICCHOME        <20>  UNIQUE      Registered
        ICC            <00>  GROUP       Registered
        ICC            <1C>  GROUP       Registered
        ICC            <1B>  UNIQUE      Registered
        ICC            <1E>  GROUP       Registered
        ICCHOME        <03>  UNIQUE      Registered
        ICC            <1D>  UNIQUE      Registered
        ..__MSBROWSE__.<01>  GROUP       Registered
        INet~Services  <1C>  GROUP       Registered
        IS~ICCHOME.....<00>  UNIQUE      Registered

        MAC Address = 08-00-70-2B-A6-E9

図3 マスター・ブラウザの確認
Windowsからはnbtstatコマンドを使う。

←前に戻る｜続き→