treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

(2/2)DNS名で共有フォルダ参照のために必要なレジストリ設定

DNS名で共有フォルダを公開するのために必要な設定作業をご報告します。
昨日、公開するファイルサーバ名(共有フォルダをホストするサーバ名)はDNSで設定した芸名=aliasで参照するようにしたほうが便利、というご報告をしました。

リンク:(1/2)サーバ管理のためにサーバ名も芸名で公開されたほうがいい - treedown’s Report

ファイルサーバは参照するUNCパス(\\サーバ名\共有フォルダ名)にコンピュータ名でなくDNSで設定したaliasとなる芸名(別名)を使うと、「ネットワーク上の共有フォルダへアクセスできない」という主旨のエラーが表示されます。その解決方法です。

なんでこれを書いておこうかと思ったかというと

以前はMicrosoftサポートオンラインにこの対処方法の記述が掲載されていたのですが、最近閲覧しようと思ったらリンク切れのメッセージで、ページが見つかりませんでした。ページがなくなった、ということはもしかして必要なくなった知識、ということなのかもしれませんが、こういうこともある、という一例として記録をしておこうと思ってこれを書いています。

どんな現象が発生するかというと

DNSを使って別名を設定したときには、DNSの登録名とコンピュータ名(NetBIOS名)とが一致しないことになります。この状況で共有フォルダへアクセスしようとするとエラーが発生してしまいます。
------------------------------------
ネットワークに重複した名前があるため接続できませんでした
A duplicate name exists on the network
------------------------------------
こんなエラーです。
ウィンドウ表示では
------------------------------------
ネットワークに重複した名前があるため接続されませんでした。
コントロールパネルのシステムでコンピュータ名を変更して再実行してください。
------------------------------------
と言われます。
この動作はWindowsで設定したホスト名と、 DNSで解決させるホスト名とが一致しない場合にWindowsOS上のServerサービスで提供する名前の相違によってOSの判断で拒否するような動きをするために発生します。

これを解消するには、共有フォルダを作成したコンピュータ上に 複数のホスト名(NetBIOS名)をつけてしまうのが 解決の方法となります。
もう一つの方法はこのOS上のチェックをさせない、という解決方法があります。(後述)
どちらかの方法を択一で選択してレジストリキー設定を実施します。

恒例の今回の対象環境です。

Active Directory内にWindows2008でファイルサーバを構築した環境で、
クライアントPCはWindows 7 Professionalで共有フォルダにアクセス、
ファイルサーバのコンピュータ名ではなくDNSで設定したalias名で参照する
という場合の設定事例です。

※ちなみに、Windows7&WindowsServer2008までの世代ではこの動作が確実に発生すし、この対処で実際にaliasの参照OKとなるのですが、Windows8&WindowsServer2012以降の世代では検証していないので発生するのかどうかすら実は知りません。すいません。ご存知の方がおられましたら教えてくださいな。

いずれもレジストリ修正を要する作業となります。
※月並みな話ではありますが、編集の前には必ずシステムの復元方法を理解し、万一に備えてください。レジストリの変更により発生した問題に関して、当方では責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。

ファイルサーバで実行する必要がある設定(複数のホスト名)

レジストリ設定を行います。

WindowsServer2008で実行したときの例でご説明します。
レジストリエディタにて、下記のパスにアクセスします。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

※ご参考:WindowsXP時代まで(未確認ですがおそらくWindowsServer2003も同様)の旧バージョンでは下記キーとなります。
HKEY_LOCAL_MACHINE\CurrentControlSet\Services\LanmanServer\Parameters
と、このように世代によってキーが相違します。

このキー内に、
  別名を1つつける場合は REG_SZ 値
  別名を複数つける場合は REG_MULTI_SZ 値
を下記の名称で作成します。
  OptionalNames
この名前(値)で そのコンピュータ名の別名を値のデータとして設定します。
※例でいえばServerAというコンピュータ名のOSに上記レジストリでFileSVRと入力
 ⇒\\ServerAのアクセスだけでなく\\FileSVRでもアクセス可能になります。
レジストリキーの入力後、サーバ(OS)再起動が必要になります。

ファイルサーバで実行する必要がある設定(チェックをさせない方法)

もう一つの方法

共有フォルダが設定されたファイルサーバ上でレジストリに値を下記のように設定することでも同様のことが可能です。
1.サーバにログインしてregeditを起動します。
2.以下のレジストリ キーを探します。
     ⇒ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\lanmanserver\parameters
3.次のDWORD値を追加します。
     ⇒ 値の名前=DisableStrictNameChecking    
     ⇒ 値=1
4.サーバを再起動します。


■これによって

DNSのAレコードで指定しているホスト名を使って<\\ホスト名\共有フォルダ>による共有フォルダへのアクセスが可能になります。