AWS上でDFSを構築してみる
条件
- 検証様のOS:Windows2008R2
- クライアントもWindows2008R2
- ADはサーバサイドのみで、クライアント側はADに参加させない
手順
-
Windows2008R2を6台作成
- dc01.domain.dfs.local:ドメインコントローラー
- dc02.domain.dfs.local:ドメインコントローラー
- fileserver01.domain.dfs.local:名前空間サーバ
- fileserver02.domain.dfs.local:名前空間サーバ
- target.domain.dfs.local:実際に共有用ディレクトリを保持するサーバ
- client:dfs領域にアクセスするクライアント
-
ドメインコントローラーを作成する
- 役割からドメインコントローラを追加
- 追加できたらdcpromo.exeでセットアップ
- 後はよしなに。ADW上ではIPアドレスの配布自体はDHCPなので、動的なIPのままで進める。ただ、DHCPでの割当は固定的。
- 今回はWindows2008R2互換で作成
-
名前空間サーバを作成する
- ドメイン参加
- 役割からファイルサーバ > 分散ファイルシステムを追加
- このタイミングでは名前空間の作成はなし
- DFSルートの2台分作成する
-
名前空間サーバ上で名前空間を作成する
- DFS管理ツールから名前空間を作成
- 名前空間サーバ:
fileserver01.domain.dfs.local
- 名前空間の名前と設定→ 共有ディレク名を入れる。設定の編集から共有フォルダーのローカルパスが設定できるがここは適当に。デフォルトは
C:¥DFSRoots¥
- 名前空間の種類:ドメインベースの名前空間を選択
- Windows Server2008モードを有効にするにチェック
-
名前空間サーバの追加
- 名前空間>作成した名前空間を選択
- 操作>名前空間サーバの追加を選択
- 名前空間サーバ:fileserver02
-
ディレクトリの追加
- 名前空間>作成した名前空間を選択
- 操作>新しいフォルダー
- フォルダターゲット:
target.domain.dfs.local
- 共有名、共有フォルダーのローカルパスは適当に。
動作確認
- 共有名
domain.dfs.local
についてdomain.dfs.localドメイン
に参加しているWindows機から名前解決を試す。
⇒dc01とdc02のIPがかえってくる - Linuxクライアントでも同じ結果
$ dig domain.dfs.local @<dc01のアドレス>
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> domain.dfs.local @<dc01のアドレス>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43716
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;domain.dfs.local. IN A
;; ANSWER SECTION:
domain.dfs.local. 600 IN A <dc01のアドレス>
domain.dfs.local. 600 IN A <dc02のアドレス>
TCPdumpでいろいろ挙動を追う事も考えたけど、面倒なのでやめる
-
ADに参加しているWindows機より適当にアクセスしてみる
-
¥¥domain.dfs.local¥<共有名>
→読み書きOK
→target.domain.dfs.local
のローカル上でもファイルを確認
-
-
AD非参加のマシンからアクセス。
- 参照DNSをdc01/dc02に向ける。
- domain.dfs.localもAD参加マシンと同様に名前解決できるがアクセス失敗
- 認証まではいけたけど、おこられた
C:\Users\Administrator>start \\domain.dfs.local\<共有名>
ファイル \\domain.dfs.local\<共有名> が見つかりません。
C:\Users\Administrator>
どうやら、アクセス先のサーバを列挙する際に、NetBIOS名を返す事もある様。KBに従い、レジストリを変更する。今時NetBIOSとかなんなの。
DFS サーバー上に DFS のルートまたはレプリカが置かれている場合は、それをサーバーから削除します。DfsDnsConfig パラメータを有効にする前に構成情報を削除し忘れた場合は、dfsutil /clean:computername コマンドを使うと構成情報を削除できます。
レジストリ エディタを起動し、次のキーを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dfs
DfsDnsConfig 値がある場合は、[編集] メニューの [値の編集] をクリックし、値を 1 に変更します。DfsDnsConfig 値がない場合は、[編集] メニューの [値の追加] をクリックし、次の情報値を追加します。
値の名前 : DfsDnsConfig
データ型 : REG_DWORD
データ : 0 または 1
変更後、念のため名前空間サーバを再起動&名前空間の再作成。無事につながる
挙動の確認
名前空間サーバの障害時の動作。
- おもむろにマネージメントコンソールから名前空間サーバ1台をstop
- 無事再接続できた。おおよそ30秒ぐらい?
- エクスプローラー上のアドレス表示も変わらず
\\domain.dfs.local\<共有名>
他にも挙動を確認しないとダメだけど、取り合えず動く事は動いた。
domain.dfs.local
はdc01,dc02のアドレスを指しているけど、実際にアクセスするのは名前空間サーバのfileserver01,fileserver02
C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>start \\domain.dfs.local\<共有名>
C:\Users\Administrator>netstat -an
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
ESTABLISHED
TCP <接続元IP>:63708 <fileserver01のIP>:445
C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>
C:\Users\Administrator>start \\domain.dfs.local\<共有名>
再接続に30秒ぐらいかかった
C:\Users\Administrator>
C:\Users\Administrator>netstat -an
アクティブな接続
プロトコル ローカル アドレス 外部アドレス 状態
TCP <接続元IP>:63876 169.254.169.254:80 CLOSE_WAIT
TCP <接続元IP>:63877 <fileserver02のIP>:445 ESTABLISHED
TCP <接続元IP>:63879 <targetのIP>:445 ESTABLISHED
TCP [::]:135 [::]:0 LISTENING
その他
- オブジェクト的なもの
- DC:domain,DC=dfs,DC=local
- CN=system CN=Dfs-Configuration