Windowsネットの不思議
ウインドウズネットノフシギ
書誌
| text | 唯野 |
| author | 斉藤栄太郎 |
| publisher | 日経BP社 |
| year | 『日経NETWORK 2000.9』p.78-89 |
履歴
| 2000.9.1 | 読了 |
| 2000.9.3 | 公開 |
| 2001.4.30 | 修正 |
感想
ちょうど Windows2000 をインストールして、WINS やワークグループと NT ドメインの違いに関する知識を得たかったところだったので非常にタイミングのよい記事だった。Windows ネットワークの裏側が要領よくまとめられており非常によい記事だと思う。
抄録
Windows ネットワークでは各コンピュータにユーザがあらかじめ名前を付けておく必要があり、それを NetBIOS 名という。これは NetBIOS 固有の情報なので TCP/IP の通信では当然ながら別に IP アドレスが必要となる。その際に、NetBIOS 名を元に IP アドレスの調べることを「NetBIOS 名の名前解決」という。その方法には 1) LAN へのブロードキャストによる問い合わせ 2) 名前と IP アドレスの対応表を自分で持つ 3) 名前と IP アドレスの対応表をサーバに問い合わせる の 3 つがある。また、それとは別にネットワークにつながるコンピュータ一覧の表示する仕組みのことを「ネットワーク・コンピュータの一覧表示(ブラウジング)」という。このとき、ワークグループと NT ドメインは区別されず、同じ名前のものがひとつのカテゴリとして表示される。
そして、ブラウジングではグループごとにマスター・ブラウザと呼ばれる特別なコンピュータが自動的に選出され、そのマシンによってグループのリストが一元管理されている。つまり、ブラウジングはマスター・ブラウザへの問い合わせ結果が表示される。マスター・ブラウザはマシンが起動/ネットワーク接続/終了、もしくは 12 分おきに通知を受けることで更新されるが、マシンが異常終了するとマスター・ブラウザの更新が行われなくなり、情報の不整合が発生する。(最大で 12 分 * 3 回の受信に失敗するまで復旧できない。)また、マスター・ブラウザ自体が異常終了した場合におけるマスター・ブラウザの変更にもタイムラグが生じる。このような理由によりネットワーク・コンピュータのリストの不整合が起こることになる。
しかし、ブロードキャストによる NetBIOS 名の解決はルータがあると(ルータの範囲で届くから)使用することができない。そこでこれを解決するために、名前と IP アドレスの対応表を使う方法が登場する。このとき、その対応表を自分で持つ場合に使うファイルが LMHOSTS で、外部に問い合わせる仕組みが WINS である。(LMHOSTS は Windows98 では windows、WindowsNT/2000 では winnt\system32\drivers\etc ディレクトリに保存される。)ちなみに、LMHOSTS はテキストファイルで、一行に一項目を記述する。書式は「IPアドレス NetBIOS名 オプション」で、例えば「192.168.0.10 NAME #MINE」などと記述する。各項目の間はタブかスペースで区切ればよい。
この結果、ネットワーク・コンピュータの一覧から表示されるコンピュータのリストは、基本的にルータを越えない範囲しか表示できず、LMHOSTS を併用したとしても必ずしも正しい一覧とはならないことになる。加えて LMHOSTS は静的なものなので、ネットワーク情報の更新ごとに書き換えをしなくてはならない。DHCP などを用いている場合に、その変更を追随するのは実質的に不可能なので、そのような場合に WINS が使われることになる。そのため LMHOSTS を利用していてアクセスが失敗する場合には、LMHOSTS の内容が古くないかどうかチェックした方がよい。
そこで大規模なネットワークなどでは WINS サーバを用いて情報を動的に一元管理する。WINS サーバには WindowsNT/2000 Server だけがなることができ、クライアント側は WINS サーバの IP アドレスを指定するだけでこれを利用することができる。但し、このクライアントと WINS サーバとの関係はブラウジングの場合に似ているため、同じように異常終了に対する情報の不整合という可能性は結局のところ解消されない。
このように NetBIOS 名の解決にはいくつかの方法があるが、マシンが実際にどの方法を用いているかはノード・タイプによって判断する。ノード・タイプには b ノード(ブロードキャスト)と WINS を使う p ノード(ポイント・ツー・ポイント)があり、更にブロードキャスト -> WINS の順で行う m ノード(ミックスド)、WINS -> ブロードキャストの順で行う h モード(ハイブリッド)がある。Windows98 では b ノードがデフォルトで、LMHOSTS はブロードキャストと WINS が成功しない最後の手段として用いられるようになっている。ちなみに、Windows98 においてノード・タイプを調べるには、winipcfg を使えばよい。
そして、マスター・ブラウザの決定方法についてであるが、これはマシンがマスター・ブラウザのないことに気付くか自分でなろうとしたときがトリガとなる。そのとき、そのマシンは選定データグラムと呼ばれるマスター・ブラウザ選定のためのパケット(32 bit)をブロードキャストし(つまりサブネットごとにマスター・ブラウザはできる)、その結果として最も優先順位の高かったマシンがマスター・ブラウザとして選出される。基本的に優先順位は電源を落とす可能性の低いマシンほど高くなる。
また、共有フォルダに正しいパスワードを設定したにもかかわらずアクセスできないようなケースでは、Windows のファイル共有と NT ドメインに関する知識が必要となる。というのも、Windows98 では「Microsoft ネットワーク共有サービス」を組み込むだけでファイルを共有できる反面、ユーザ名に基づいた利用者の限定ができないのに対し、WindowsNT/2000 ではユーザ名とパスワードの双方を用いて認証を行うためである。(サーバ側でのユーザ単位によるアクセス制御が行われるということ。)これが原因で WindowsNT/2000 クライアントでは表示される「ユーザ名」の項目が、Windows98 では表示されない問題を生む。更に Windows98 が WindowsNT/2000 にアクセスするとログイン時のユーザ名とパスワードを送っており、これをパスワード・キャッシュというが、このときに送信されたユーザ名とパスワードが一致しなくてもアクセスには失敗してしまう。(このユーザ名は後から変更することができない。)そのため WindowsNT/2000 での登録されるユーザ名は Windows98 ログイン時のユーザ名に一致していなければならないことになる。
しかし、このような名前の一致は管理者による手動設定が必要となるため、これもネットワークの更新ごとに変更が必要となる。そこで用いられるのが NT ドメインとなる。NT ドメインによってユーザ情報をドメインと呼ばれる論理グループによって分割し、ドメイン・コントローラと呼ばれるマシンでこれを一元管理する。これによりドメインに所属するファイルサーバはユーザ管理情報をドメイン・コントローラへ問い合わせることにより、ユーザが一度ドメインへログインするだけでサーバアクセス時のログイン処理を省くことができるようになる。とはいえ Windows98 ではドメインに参加しても、参加するのはユーザであってマシンはあくまでもワークグループに所属している。
補足 (同誌 p.111 より)
WINS は WindowsNT 3.5 で導入された機能で、NetBIOS 名による問い合わせから IP アドレスを返すのが WINS サーバということになる。名前に対して IP アドレスを返すという点では DNS と同じだが、WINS には DNS のような名前の階層構造がなく、代わりにワークグループ/ドメインというグループ化機能がある。つまり、WINS ではコンピュータ名とグループ名によって管理が行われる。また、NetBIOS 自身に名前を問い合わせる機能があるため、DNS のような逆引きのない点、DNS が情報の更新などを自動で行うのに対し、WINS では手動で行う点などが違いとして挙げられる。
