Windows TIPS
[Network]
システム移行のためにコンピュータに複数の名前を付ける
→ 解説をスキップして操作方法を読む
デジタルアドバンテージ
2003/12/20
対象OS
Windows NT
Windows 2000
Windows XP
Windows Server 2003
■
通常、NetBIOS名は1台のコンピュータにつき、1つしか定義することができない。
■
システムの統廃合などのために、一時的に1台のコンピュータに複数の名前(NetBIOS名)を付けたいことがある。
■
レジストリを操作することにより、コンピュータに対して別名を割り当てることができる。
コンピュータ名(NetBIOS ホスト名)は、通常は1台のコンピュータにつき、1つしか定義することができない。しかし場合によっては、1台のコンピュータに対して、同時に複数の名前を付けたいということもある。例えば、あるサービスを提供している複数台のコンピュータを統合して1台にする場合、統合元のサーバの名前を新しいサーバにも付けておけば、ユーザーはサーバが変更されたことを意識することなく、そのまま利用し続けることができる。また単にサーバの名前を変更する場合でも、いきなり変更するのではなく、新しい名前を追加で定義して両方のコンピュータ名でアクセスできるようにしておき、しばらく運用してトラブルが起こらないことを確認してから目的とするコンピュータ名に変更する、というような使い方もできる。さらには、実験やトラブルシューティング用途などのために、1台のマシンで多数のコンピュータ名を定義するという用途も考えられるだろう。トラブルが生じているのと同じ(複数の)コンピュータ名をネットワーク上で再現してみることにより、例えば管理ツールなどが特定のコンピュータ名などによって不正な動作をしていないかどうかを確認したりするためだ。
通常NetBIOS名は1つしか定義することができないが、レジストリを操作することにより、同時に複数のコンピュータ名(NetBIOS名)を持たせることができる。ただしこの操作を行っても、IPアドレス(やネットワーク・インターフェイス)はデフォルトのまま、つまり1つしか存在しないのままなので、物理的に複数台のコンピュータが存在する場合と比べると、少し違いがある。ほとんどの場合はこれでも問題ないが、例えばコンピュータ名とIPアドレスは必ず1対1に対応していて、物理的には別なシステムと見なすようなアプリケーションがあるとすると、動作が不正になるかもしれないので注意していただきたい。
またサービスによっては、本来のコンピュータ名ではない別名によるアクセスを拒否する可能性があるので(コンピュータ名を変更するとうまく動作しなくなるようなアプリケーションも少なからず存在する)、別名の定義による影響には十分注意して利用していただきたい。
なおDNS によるコンピュータ名(FQDN 名)を複数持たせたい場合は、単にDNSサーバにおいて、同一のホストに対して複数のホスト名を定義しておけばよい。例えばWebサーバなどに対するアクセスでは、FQDN名は名前解決によってIPアドレスに変換され、それに基づいてWebサーバへアクセスされる。そのためコンピュータ名はあまり重要ではない。これに対してNetBIOSサービスでは、(本来は)名前によってサービスの対象が決まるので、このTIPSのように別名を定義する必要性が生じることがある。
コンピュータに複数の名前(NetBIOS名)を付けるためには、以下のように、レジストリに「OptionalNames」という値を作成し、コンピュータ名を記述する。
[注意]
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
項目
設定
キー
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レコードがよいだろう)、本来のコンピュータ名でアクセスしなければならない。
この記事と関連性の高い別のWindows TIPS
generated by
Windows Server Insider フォーラム 新着記事
スキルアップ/キャリアアップ(JOB@IT)