通常、NetBIOS名は1台のコンピュータにつき、1つしか定義できない。しかしシステムの統廃合などのために、一時的に1台のコンピュータに複数の名前(NetBIOS名)を付けたいことがある。そこでレジストリを操作することにより、コンピュータに対して別名を割り当てることができる。
対象OS:Windows NT/Windows 2000/Windows XP/Windows Server 2003
コンピュータ名(NetBIOSホスト名)は、通常は1台のコンピュータにつき、1つしか定義できない。しかし場合によっては、1台のコンピュータに対して、同時に複数の名前を付けたいということもある。
例えば、あるサービスを提供している複数台のコンピュータを統合して1台にする場合、統合元のサーバの名前を新しいサーバにも付けておけば、ユーザーはサーバが変更されたことを意識することなく、そのまま利用し続けることができる。
また単にサーバの名前を変更する場合でも、いきなり変更するのではなく、新しい名前を追加で定義して両方のコンピュータ名でアクセスできるようにしておき、しばらく運用してトラブルが起こらないことを確認してから目的とするコンピュータ名に変更する、というような使い方もできる。
さらには、実験やトラブルシューティング用途などのために、1台のマシンで多数のコンピュータ名を定義するという用途も考えられるだろう。トラブルが生じているのと同じ(複数の)コンピュータ名をネットワーク上で再現してみることにより、例えば管理ツールなどが特定のコンピュータ名などによって不正な動作をしていないかどうかを確認したりするためだ。
実は、レジストリを操作することにより、同時に複数のコンピュータ名(NetBIOS名)を持たせることができる。ただしこの操作を行っても、IPアドレス(やネットワークインタフェース)はデフォルトのまま、つまり1つしか存在しないのままなので、物理的に複数台のコンピュータが存在する場合と比べると、少し違いがある。
ほとんどの場合はこれでも問題はない。しかし、例えばコンピュータ名とIPアドレスは必ず1対1に対応していて、物理的には別なシステムと見なすようなアプリケーションがあるとすると、動作が不正になるかもしれないので注意していただきたい。
またサービスによっては、本来のコンピュータ名ではない別名によるアクセスを拒否する可能性があるので(コンピュータ名を変更するとうまく動作しなくなるようなアプリケーションも少なからず存在する)、別名の定義による影響には十分注意して利用していただきたい。
コンピュータに複数の名前(NetBIOS名)を付けるためには、以下のように、レジストリに「OptionalNames」という値を作成し、コンピュータ名を記述する。
[注意]
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリエディターの操作は慎重に行うとともに、あくまでご自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本編集部では責任を負いかねます。ご了承ください。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEの \SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters |
値の名前 | OptionalNames |
型 | 文字列値(REG_SZ)または複数行文字列値(REG_MULTI_SZ)。別名を1つ定義する場合はREG_SZ、複数定義する場合はREG_MULTI_SZを使用する |
値のデータ | コンピュータ名を表す文字列。複数定義する場合は、REG_MULTI_SZにして、各行に1つずつコンピュータ名を記述 |
別名定義のためのレジストリ |
ここで定義された名前は、コンピュータの別名として扱われる。1つだけ別名を定義するならREG_SZ型で、複数定義するならREG_MULTI_SZ型でそれぞれ記述する(Windows 2000やWindows NTでは、regedt32.exeを使うとREG_MULTI_SZ型を簡単に入力できる)。
レジストリを変更後、システムを再起動すると複数のコンピュータ名が有効になっているはずである(数十や数百個といった、あまりにも多くの名前を付けると、起動に少し余計に時間がかかるので注意)。
C:\>nbtstat -n
ローカル エリア接続:
Node IpAddress: [192.168.0.231] Scope Id: []
NetBIOS Local Name Table
Name Type Status
---------------------------------------------
WINPC001 <00> UNIQUE Registered
D-ADVANTAGE0 <00> GROUP Registered
WINPC001 <03> UNIQUE Registered
WINPC001 <20> UNIQUE Registered ……本来の名前
ALPHA01 <20> UNIQUE Registered ……別名
BETA02 <20> UNIQUE Registered ……別名
GAMMA03 <20> UNIQUE Registered ……別名
DELTA04 <20> UNIQUE Registered ……別名
THETA05 <20> UNIQUE Registered ……別名
ETA06 <20> UNIQUE Registered ……別名
EPSILON07 <20> UNIQUE Registered ……別名
OMEGA08 <20> UNIQUE Registered ……別名
PI09 <20> UNIQUE Registered ……別名
D-ADVANTAGE0 <1E> GROUP Registered
INet~Services <1C> GROUP Registered
IS~WINPC001....<00> UNIQUE Registered
ADMINISTRATOR <03> UNIQUE Registered
ネットワーク上のコンピュータ名を確認すると、以下のように、すべて異なるコンピュータであるかのように表示される(実際にはすべて「\\WINPC001」と同じマシン)。エクスプローラなどでそれぞれのマシンをアクセスすると、どれをアクセスしてもすべて同じ共有情報が得られる。
C:\>net view
サーバー名 注釈
-----------------------------------
\\AASERVER01
\\ALPHA01 ……別名
\\BETA02 ……別名
\\DELTA04 ……別名
\\EPSILON07 ……別名
\\ETA06 ……別名
\\GAMMA03 ……別名
\\OMEGA08 ……別名
\\PI09 ……別名
\\THETA05 ……別名
\\WINPC001 ……本来の名前
\\ZETA06 ……別名
コマンドは正常に終了しました。
別名として付けられたコンピュータ名は、DNSの動的更新によってDNSサーバに登録されることは「ない」ので、別名でDNSサーバによる名前解決を試みてもすべて失敗することになる。必要ならば手動でDNSサーバにレコードを登録するか(元の名前に対するCNAMEレコードがよいだろう)、本来のコンピュータ名でアクセスしなければならない。
DNSによるホスト名(FQDN)を複数持たせたい場合は、単にDNSサーバにおいて、同一のホストに対して複数のホスト名を定義しておけばよい。
例えばWebサーバなどに対するアクセスでは、FQDNは名前解決によってIPアドレスに変換され、それに基づいてWebサーバへアクセスされる。そのためホスト名はあまり重要ではない。
これに対してNetBIOSサービスでは、(本来は)名前によってサービスの対象が決まるので、本Tech TIPSのように別名を定義する必要性が生じることがある。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.