トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

Windows 名前解決の怪

Windows を使っていると混同しやすい、良く解らない何か

Windows を使用していると、よくこんな感じでコンピュータにアクセスします。

  • \\hostname.contoso.com
  • \\hostname
  • \\192.168.1.2

エクスプローラのアドレス欄にこういう文字列を入力すれば、なんとなくファイル サーバーにアクセスできますよね。そんな感覚で Windows を触っているユーザーは少なくないでしょう。

もちろん Web サイトもそうです。社内 Web サイトを構築し、同様にこんな感じでアクセスすることもあるかもしれません。

あなたがユーザーなら、それでも問題ないのでしょう。でもちょっと待って、僕が (あなたが) 管理者ならこの仕組みを知ってて損はしません。少しの時間、このドキュメントにお付き合いください。

名前解決、要するに IP アドレスを探す

さて、先ほどの二つの例を、もう一度見てください。最後の三つ目はなんて書いてあります? IP アドレスがありますよね。

そう、世の中の TCP/IP ネットワークは全部 IP アドレスでつながります。・・・その下のレイヤーに MAC アドレスがあるのは無視。だって (普通に管理者やっていれば) そんな値設定しないでしょ? とにかく管理者は、物理的に UTP ケーブルを繋いで、IP アドレスをコンピュータに割り振るんです。それでいいんです。

この IP アドレスとは何でしょう。よく初心者入門本に書いてある解答を書くなら、それはすなわち「コンピュータの住所」なのかな。なぜなら、すべてのコンピュータはこの IP アドレスめがけてアクセスするわけだから。でも筆者はちょっと違うと思っています。IP アドレスは素人が見ればただの「数字の羅列」。住所じゃなくて「郵便番号+番地」に近いと思いません?

IP アドレスはもちろん相手のところを指し示しています。しかしこれでは都合が悪いですよね。何故かって? あなたは Google に IP アドレス、64.233.187.99 でアクセスしますか? そんなことしませんよね。Google には立派に、www.google.com という名前割り当てられています。ということは、誰かが www.google.co.jp = 64.233.187.99 だということを知っているわけなのです。これが名前解決。
この名前解決を、誰がやっているのか気になりませんか? え、知ってる? DNS だって? はい半分ご名答。

DNS は意外にフレンドリー

DNS は「IP アドレス」と「名前」を紐解くデータベースです。しかし、それはひとつで完結していないのです。DNS は世間では星の数ほど存在していて、それぞれが自分が担当する場所を管理しています。Root DNS はそんな星の数ほどある DNS の親として動作していて、とりあえずここに問い合わせると、次に誰に聞けばいいか教えてくれる存在です。ものすごいコミュニケーション力に長けています。今流行の情報ポータルなんて、真っ先に取り入れている時代の最先端です。

その名前解決の動きはどうなっているのか気になりませんか?
問い合わせを受けた DNS は、実はこうやって名前解決します。

  1. Root DNS に com はどこか尋ねる
  2. com を管理する DNS に google はどこか尋ねる
  3. google を管理する DNS に www はどこか尋ねる

みんなツリー状のネットワークにぶら下がってるんです。なんだと思わないで。この仕組みこそが DNS の基礎、醍醐味なのだから。

簡単に三つの動作を書いてみましたが、この時教えてくれる情報はこんな感じです。

  1. Root DNS に com はどこか尋ねる > com を管理する DNS の IP を教えてくれる
  2. com を管理する DNS に google はどこか尋ねる > google を管理する DNS の IP を教えてくれる
  3. google を管理する DNS に www はどこか尋ねる > www を管理するのは自分なので、www の IP を教えてくれる

こうやって IP アドレスを調べるのです。

一番初めの例の、hostname.contoso.com は、contoso を管理する DNS が 192.168.1.2 だということを知っています。だから、エクスプローラや IE は、とりあえず DNS に IP アドレスを問い合わせているわけです。合理的でしょう? これが世間一般の、DNS の動きです。

じゃぁ、Active Directory の DNS は同じ動きをするの?

そうです。(きっぱり)

前章で「問い合わせを受けた DNS は、実はこうやって名前解決します。」と書きました。もうすこし丁寧に書きましょう。

「問い合わせを受けた DNS がそのドメインを知らない場合、こうやって名前解決します。」

そう、問い合わせを受けた DNS (この場合は Active Directory) がそのドメインを知ってる場合があるのです。Active Directory の DNS なら、自分のドメインは知ってますよね。contoso.com が自分の Active Directory ドメインだとしたら、問い合わせを受けた DNS はこうやって即答できるわけです。

hostname.contoso.com は 192.168.1.2 だ! と。

\\hostname って何者?

ではなぜ \\hostname でアクセスできるのでしょうか。

これも答えは簡単。なんと、Windows が .contoso.com を追記してくれるからです。
Windows は Active Directory ドメインに参加すると、自分のドメイン名が何であるか知ることができます。だからとりあえず、\\hostname というアドレスを打ち込まれたら、自分が管理されている Active Directory の DNS にこの名前を問い合わせるため、とりあえず .contoso.com を追記してしまうのです。この動きは http://hostname も同じ。

でも。残念ながらドメインに参加していないコンピュータはこの動作をしてくれません。\\hostname.contoso.com としてアクセスするか、\\192.168.1.2 でないと、なんともならないのです。

そんなことないでしょ、だってアクセスできるよ?

それは実は、NetBIOS というとーっても古い名前解決の仕組みが、動作しているからなんです。コンピュータ名に名前をつけるとき、あなたは hostname.contoso.com とは書かないと思います。hostname でおしまいですよね。この習慣は、実はこの NetBIOS から来るのです。これが残りの半分の正解。

・・・以下、NetBIOS の部分を書く予定。

書いた人

2005.12.21 やまにょん作成


最終更新時間:2005年12月21日 22時42分39秒