2017年2月25日土曜日

Windows Server 2008 R2 Server CoreでActive Directoryのドメインコントローラーを作った話② (ドメインコントローラー昇格)

前回、Server Coreでドメイン参加するところまで実施したので、今回はドメインコントローラーに昇格させる。なお、今回は新規ドメインではなく、既存ドメインにドメインコントローラーを追加する手順となる。

また、参考までにドメインコントローラー降格の手順も記載する。

ドメインコントローラーへ昇格

1. unattendファイルの作成

Server Coreの場合はGUIを使った昇格はできないので、以下のような応答ファイル(unattend)を作成して実施する。今回は「unattend.txt」というファイル名で作成した。

unattend.txt
------------------------------
[DCINSTALL]
UserName=<ドメインユーザー>
UserDomain=<ドメイン名>
Password=* ←「*」にすると実行時にパスワード確認がされる
ReplicaDomainDNSName=<DNSドメイン名(通常はUserDomainと同じ)>
ReplicaOrNewDomain=Replica ←「Replica」で既存ドメインへの追加
;DatabasePath=%systemroot%\ntds ←データベース保存パス。デフォルトでよければコメントアウト
;LogPath=%systemroot%\ntds ←ログ保存パス。デフォルトでよければコメントアウト
;SYSVOLPath=%systemroot%\SYSVOL ←SYSVOL保存パス。デフォルトでよければコメントアウト
InstallDNS=Yes ←同時にDNSをインストールするか
ConfirmGC=Yes ←同時にグローバルカタログにするか
SafeModeAdminPassword=<オフライン管理者アカウントのパスワード>
RebootOnCompletion=Yes ←完了時に再起動を自動で行うか
------------------------------

私の環境で作ると以下のようになる。

unattend.txt
------------------------------
[DCINSTALL]
UserName=tadmin
UserDomain=intrat.local
Password=*
ReplicaDomainDNSName=intrat.local
ReplicaOrNewDomain=Replica
;DatabasePath=%systemroot%\ntds
;LogPath=%systemroot%\ntds
;SYSVOLPath=%systemroot%\SYSVOL
InstallDNS=Yes
ConfirmGC=Yes
SafeModeAdminPassword=<オフライン管理者アカウントのパスワード>
RebootOnCompletion=Yes
------------------------------

2. ドメインコントローラーに昇格

作成したunattendファイルを適当な場所に配置し、以下のコマンドで昇格を実行する。

dcpromo /unattend:c:\work\unattend.txt

unattendファイルで指定したドメインユーザーのパスワード入力を促されるので、入力する。


各種警告が表示されたりするが、再起動まで実施されれば成功。


3. 他サーバーから確認

Server Coreは、自分自身ではGUIの管理ツールを持てないので、他のコンピューターのMMC(Microsoft Managemet Console)を利用して管理する。

管理する側のコンピューターには、MMCのActive Directory管理用のスナップインを予めインストールする必要があるが、既に存在するドメインコントローラーには必ず入っているので、そこから操作すると簡単。

「ファイル名を指定して実行」で「mmc」を入力しMMCを起動したのち、「ファイル」→「スナップインの追加と削除」を起動し、以下を選択する。

・Acitve Directory ユーザーとコンピューター

ドメインの中の「Domain Controllers」の中に、今回追加したドメインコントローラーが存在すればドメインコントローラーとしてきちんと昇格されていることが確認できる。


ドメインコントローラーからの降格

参考までに、Server Coreのドメインコントローラーを降格する手順を記載する。

1. unattendファイルの作成

昇格と同様にunattendファイルを作成する。今回はunattend_remove.txtという名前で作成した。

unattend_remove.txt
------------------------------
[DCINSTALL]
UserName=<ドメインユーザー>
UserDomain=<ドメイン名>
Password=<ドメインユーザーのパスワード>
administratorpassword=<ローカルのAdministratorパスワード>
removeapplicationpartitions=yes
RebootOnCompletion=Yes
------------------------------

2. ドメインコントローラーからの昇格

作成したunattendファイルを適当な場所に配置し、以下のコマンドで降格を実行する。

dcpromo /unattend:c:\work\unattend_remove.txt


参考

・無人モードを使用して Windows Server 2008 ベースのドメイン コントローラで Active Directory ドメイン サービスのインストールおよび削除を行う方法
https://support.microsoft.com/ja-jp/help/947034/how-to-use-unattended-mode-to-install-and-remove-active-directory-domain-services-on-windows-server-2008-based-domain-controllers

・Create an Answer File for Unattended Domain Controller Installation
https://technet.microsoft.com/ja-jp/library/cc816873(v=ws.10).aspx

2017年2月19日日曜日

Windows Server 2008 R2 Server CoreでActive Directoryのドメインコントローラーを作った話① (Server Core OS初期設定)

自宅にドメインコントローラーを1台立てているのだが、バックアップとActive Directoryの構築検証も兼ねて、もう1台ドメインコントローラーを作ることにした。

ただ、自宅の検証環境ではESXi1台の中に、すでに10台以上の仮想マシンがひしめき合っている状況であり、特にメモリが不足している状況となっている。そのため、より消費リソースの少ないWindows Server 2008 R2のServer Coreで構築する方針とした。

Server CoreはWindowsのGUI環境が使えないこともあり、今までのWindowsと異なるコマンドベースでの独特な手順が多くなることから、ドメインコントローラーとして利用できるようにするまでの手順を備忘を兼ねて記載する。

今回は、OS初期設定まで記載し、次回にドメインコントローラーへ昇格させる手順を記載する。

インストール

インストール時は通常のインストールと大きな違いはない。OS選択画面で「Server Core」を選べばよい。


Windows Server 2008 R2はデフォルトではGUIを持つ「フルインストール」が選択されているが、Windows Server 2012以降はデフォルトは「Server Core」となっている(Windows Server 2016では、GUI付き環境に対して「デスクトップエクスペリエンス」としており、いわゆるServer Coreは、もはや名前がなく標準のものとしている)。

従って、今後はServer Core環境を主流にしたいという思いがMicrosoftにはあると考えられるのだが、少なくとも私の周りでは商用環境でServer Coreを使っているところは見たことがない。

初期設定

インストールが終わった後のOSの初期設定の手順を記載する。ログインするとコマンドプロンプトだけが表示されたシンプルな画面となっている。Server Coreではこのコマンドプロンプトを駆使して設定していくことになる。万が一コマンドプロンプトを消してしまった場合は、「Ctrl+Shift+ESC」でタスクマネージャーが起動できるので、そこから「ファイル」→「新しいタスクの実行」を選択し「cmd」を入力する。


なお、インストール直後のディスク使用量は、4.75GBとなっていた(19.90GBのうち15.15GBが空き容量)。


1. VMware Toolsのインストール

vSphere Clientから「VMware Toolsのインストール/アップグレード」を選択し、VMware Toolsをマウントする。

その後、コマンドプロンプトでsetup64.exeを実行すればよい。あとはいつものGUIにてインストールが可能となる。

cd d:\
setup64.exe


2. ネットワーク設定(IPアドレス設定)

ネットワーク設定は、コマンドで設定する。

まずは、インターフェースのIdx番号を確認する。今回は「ローカルエリア接続」となっているNICにIPを付与するため、Idx番号は「3」となる。

netsh interface ipv4 show interfaces
------------------------------
Idx     Met         MTU          状態                 名前
---  ----------  ----------  ------------  ---------------------------
  3          10        1500  connected     ローカル エリア接続
  1          50  4294967295  connected     Loopback Pseudo-Interface 1
------------------------------

以下コマンドでIPを付与する。「name=<Idx番号>」としてインターフェースを指定する。

netsh interface ipv4 set address name=3 source=static address=192.168.11.62 mask=255.255.255.0 gateway=192.168.11.31

3. ネットワーク設定(DNS設定)

DNSは以下のコマンドで設定する。DNSサーバーは既設のドメインコントローラーを指定した。

netsh interface ipv4 add dnsserver name=3 address=192.168.11.61 index=1

4. ネットワーク設定(IPv6無効化)

IPv6を使用しない場合は無効化しておく。反映するために一度サーバーを再起動すること(再起動もコマンドで実施する(shutdown /r /t 0))。

------------------------------
キー :  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
名前 : DisabledComponents
種類:  DWORD
データ: 0xff (16進数でff)
------------------------------

最後に設定を確認する。IPv6アドレスが表示されていなければOK。

ipconfig /all
------------------------------
イーサネット アダプター ローカル エリア接続:

   接続固有の DNS サフィックス . . . :
   説明. . . . . . . . . . . . . . . : Intel(R) PRO/1000 MT Network Connection
   物理アドレス. . . . . . . . . . . : 00-0C-29-D7-A5-3F
   DHCP 有効 . . . . . . . . . . . . : いいえ
   自動構成有効. . . . . . . . . . . : はい
   IPv4 アドレス . . . . . . . . . . : 192.168.11.62(優先)
   サブネット マスク . . . . . . . . : 255.255.255.0
   デフォルト ゲートウェイ . . . . . : 192.168.11.31
   DNS サーバー. . . . . . . . . . . :  192.168.11.61
   NetBIOS over TCP/IP . . . . . . . : 有効
------------------------------

5. リモート管理設定

Server Coreの場合、他のコンピューターから、サーバーマネージャーやMMC(Microsoft Management Console)で管理することが前提となっているが、その割にデフォルトでは外部から管理できないようになっている。

外部から管理できるようにするため、Firewallを開放する。

netsh advfirewall firewall set rule group="リモート管理" new enable=yes
------------------------------
3規則を更新しました。
OK
------------------------------

netsh advfirewall firewall set rule group="リモート ボリューム管理" new enable=yes
------------------------------
3規則を更新しました。
OK
------------------------------

これで別のWindows OSから「ファイル名を指定して実行」→「mmc」を選択し、MMCを起動する。MMCでは「ファイル」→「スナップインの追加と削除」を選択し、「コンピューターの管理」を選ぶ。この際に管理するコンピューターを選択する画面が出るので、今回の対象サーバーを指定してあげればOK。

6. ドメイン参加

ドメイン参加の前に、コンピューター名を先に変えておく。そうしないと、「ネットワークパスが見つかりません。コマンドを完了できませんでした。」というエラーが表示されドメイン参加に失敗する。以下ではホスト名をt1062w28rに変更する例となる。コマンド実行後再起動を忘れないこと。

netdom renamecomputer %computername% /newname:t1062w28r

次にドメイン参加を行う。こちらもコマンドで実施する。userdはドメインのアカウント、passworddはドメインのアカウントのパスワードとなるが、*を指定するとコマンド実行後にパスワード入力が促されるので、正しいパスワードを入力しOKを押すこと。こちらも実行後は再起動が必要。

netdom join t1062w28r /domain:intrat.local /userd:tadmin /passwordd:*


7. ライセンス認証

ライセンス認証をインターネット経由で実施する場合、以下コマンドで実施可能。ただし、途中にプロキシがある環境の場合は、エラーで失敗することがある。この場合は、コマンドでプロキシを設定してやることで成功する。

------------------------------
netsh winhttp show proxy   ←プロキシ確認
netsh winhttp set proxy 192.168.33.23:8080   ←プロキシ設定

slmgr.vbs -ipk *****-*****-*****-*****-*****   ←プロダクトキー入力
slmgr.vbs -ato   ←ライセンス認証
netsh winhttp reset proxy   ←プロキシ解除
------------------------------

これでドメインのメンバーサーバーとして利用可能なServer Coreが完成する。次回はこのサーバーをドメインコントローラーに昇格させる方法(と降格させる方法)について記載する。

(参考) Server Core設定ツール「sconfig」を使う場合

Server Coreの場合は、sconfigという設定ツールが用意されており、初期設定で説明したいくつかの項目は、対話式に設定ができる。

sconfigで設定できる項目は以下の通り。「5) Windows Updateの設定」と「7) リモートデスクトップ」は設定をしておいた方がよい。

------------------------------
1) ドメイン/ワークグループ
2) コンピューター名
3) ローカル管理者の追加
4) リモート管理の構成
5) Windows Updateの設定
6) 更新プログラムのダウンロードとインストール
7) リモートデスクトップ
8) ネットワーク設定
9) 日付と時刻
10) ユーザーのログオフ
11) サーバーの再起動
12) サーバーのシャットダウン
------------------------------

また、「4) リモート管理の構成」の中には以下項目がある。「2) Windows PowerShell  を有効にする」は有効にしておくと便利なことがあるかもしれない(Windows Server 2008 R2はPowerShellがそんなに充実していないので使わないかもしれないが)。

------------------------------
1) MMC リモート管理を許可する
2) Windows PowerShell  を有効にする
3) サーバー マネージャーのリモート管理を有効にする
4) Windows ファイアウォール設定を表示する
------------------------------

2017年2月11日土曜日

Cisco Catalystスイッチのインターフェースのリンクダウンを検知するまでの遅延時間の設定

スイッチのインターフェースがリンクダウンしてから、実際にリンクダウンを検知する(ログに表示される・SNMP Trapが飛ぶ)まで、少し時間に差異があることがわかった、というお話。

リンクダウンの検知を遅延させる理由は、リンクダウン・アップが短時間に何度も繰り返されるような場合に、大量検知することによる処理の増加を抑えるためのようだ。というわけでCisco Catalystスイッチで該当する設定を調べてみた。

link debounceとcarrier-delay

遅延設定はlink debounceとcarrier-delayの2つのパラメータで設定される。どちらも似たような設定となっているが、違いはおそらく以下のようである。

------------------------------
リンクダウン
 ↓ ←link debounceの遅延時間(Firmwareで動作)
 ↓ ←carrier-delayの遅延時間(Softwareで動作)
リンクダウンを検知
------------------------------

それぞれの設定項目を以下に記載する。

【link debounce】

インターフェース毎に設定される。インターフェースのリンクダウン(リンクアップを除く)の通知の遅延時間。この遅延時間以内にリンクアップを検知した場合は、リンクダウンの通知を行わない。短時間のリンクダウンの検知による不要なスイッチ動作を抑止することを目的とする。

デフォルトはdisableのようだが、disableでも遅延はかかるようで、以下の表の通りとなる(Ciscoのページから抜粋)。

Port Type
Debounce Timer Disabled
Debounce Timer Enabled
10BASE-FL ports
300 milliseconds
3100 milliseconds
10/100BASE-TX ports
300 milliseconds
3100 milliseconds
100BASE-FX ports
300 milliseconds
3100 milliseconds
10/100/1000BASE-TX ports
300 milliseconds
3100 milliseconds
1000BASE-TX ports
300 milliseconds
3100 milliseconds
Fiber Gigabit ports
10 milliseconds
100 milliseconds
10-Gigabit ports except WS-X6501-10GEX4 and WS-X6502-10GE
10 milliseconds
100 milliseconds
WS-X6501-10GEX4 and WS-X6502-10GE 10-Gigabit ports
1000 milliseconds
3100 milliseconds


・Cisco IOS Interface and Hardware Component Command Reference - link debounce
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/interface/command/ir-cr-book/ir-l1.html#wp1766490589

【carrier-delay】

インターフェース毎に設定される。リンク状態の変化(リンクダウン・アップ)を検知するまでの遅延時間。フラッピング(短時間でのリンクダウン・アップの繰り返し)発生時のスイッチ負荷軽減を目的とした設定。

例えば2秒と設定している場合は、1秒以内のリンクダウン、アップであればリンク状態に変化がないものとする。

デフォルトで2秒で設定されている。

・Cisco IOS Interface and Hardware Component Command Reference - carrier-delay
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/interface/command/ir-cr-book/ir-c1.html#wp2997457714

参考

・Daniels Networking Blog - Detecting Network Failure
http://lostintransit.se/2013/09/26/detecting-network-failure/

2017年2月6日月曜日

FreeNASをiSCSIストレージとして構築し、Windows Server 2012から接続してみた② (Windows Server iSCSIイニシエーター設定編)

前回、FreeNASのiSCSI設定を実施したので、今回はWindows Server 2012にて、iSCSIイニシエーターの設定を実施する。

また、おまけとして、iSCSIのMPIOのパスの切り替わり時間とその変更方法についても記載する。

構成の確認

今回の構成を再度記載する。iSCSIイニシエーターからはiSCSIターゲットに対して2パスを構成する。

------------------------------
【2パス構成】
・NIC1 -> iSCSI1
・NIC2 -> iSCSI2
------------------------------

今回は同セグメントなので、以下のような4パスも構成可能だが、前回説明した通りパス毎にセグメントは分離して構成したほうがよいので、お勧めはしない。

------------------------------
【4パス構成(不採用)】
・NIC1 -> iSCSI1
・NIC1 -> iSCSI2
・NIC2 -> iSCSI1
・NIC2 -> iSCSI2
------------------------------



iSCSIイニシエーター設定

1. Windows Server 2012にiSCSIイニシエーターとMPIOがインストール済みで、iSCSIのMPIOが有効化されているものとする。有効化の方法は、以下のサイトが詳しいのでここでは割愛。

・Windows コンピューターで、iSCSI Target をマルチパス I/O で使用する方法
https://www.synology.com/ja-jp/knowledgebase/DSM/tutorial/Virtualization/How_to_Use_iSCSI_Targets_on_Windows_Computers_with_Multipath_I_O

2. 「コントロールパネル」→「iSCSI設定」にて「iSCSIイニシエーターのプロパティ」画面を開く

3. 「探索」タブにて以下を設定する。

------------------------------
・192.168.11.145 / 3260
・192.168.11.146 / 3260
------------------------------


登録後「ターゲット」タブに移ると、「非アクティブ」状態にてFreeNASのターゲットが見えているはず。



パス1の設定

1. 「ターゲット」タブにて、1個目のターゲットを選択し、「接続」ボタンを押下する。

2. 「ターゲットへの接続」画面が表示されるので、「複数パスを有効にする」にチェックを入れ、「詳細設定」ボタンを押下する。


3. 「詳細設定」画面では以下を設定する。

------------------------------
・ローカルアダプター:Microsoft iSCSI Initiator
・イニシエーターIP:192.168.11.115
・ターゲットポータルIP:192.168.11.145 / 3260
------------------------------



4. 「OK」→「OK」を押し、「iSCSIイニシエーターのプロパティ」画面に戻る。1個目のターゲットの状態が「接続完了」に変わることを確認する。



パス2の設定

1. 「ターゲット」タブにて、2個目のターゲットを選択し、「接続」ボタンを押下する。

2. 「ターゲットへの接続」画面が表示されるので、「複数パスを有効にする」にチェックを入れ、「詳細設定」ボタンを押下する。

3. 「詳細設定」画面では以下を設定する。

------------------------------
・ローカルアダプター:Microsoft iSCSI Initiator
・イニシエーターIP:192.168.11.118
・ターゲットポータルIP:192.168.11.146 / 3260
------------------------------


4. 「OK」→「OK」を押し、「iSCSIイニシエーターのプロパティ」画面に戻る。2個目のターゲットの状態が「接続完了」に変わることを確認する。



5. 以上でパスの設定は終わり。MPIOの状態は、「デバイス」→「MPIO」にて確認ができる。ディスクに対して以下の通りアクティブなパスが2つあることがわかる。


(おまけ) iSCSIのパスの切り替わり時間と変更方法

ここからはおまけで、iSCSIのMPIOのパス切り替わり時間とその変更方法について記載する。参考にしたURLは以下の通り。

・MPIO Failover Time
https://social.technet.microsoft.com/Forums/office/en-US/dfa3c7ea-3ee4-4a5b-95f1-74be87c7e75a/mpio-failover-time?forum=winservergen

MPIOのパスの切り替わり時間は、レジストリ値で制御されている。「ファイル名を指定して実行」で「regedit」を入力するとレジストリエディタが開くので、以下を選択して、「右クリック」→「検索」を選択して、対象のキーを探す。
※パスは環境によって変わるようなので、検索にて見つける必要がある。

------------------------------
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet」で
「右クリック」→「検索」し、「LinkDownTime」を検索
------------------------------

LinkDownTimeは、デフォルトでは15秒で設定されている。これがMPIOの切り替わり時間で、例えばiSCSIイニシエーターのNICが切断した際には、15秒間切断が継続するとMPIOのフェールオーバーが発生する(ターゲット側のNICを切断した場合も同様)。

私の検証した限りでは、NIC切断からMPIOのフェールオーバーが発生するまで、LUNのアクセスは停止する(NTFSでマウントしているとExplorerが固まる)ので、この切り替わり時間は少なくともOSのI/Oタイムアウトの時間よりも短くする必要がある。

※OSのタイムアウトに関しては以下の過去記事参照
https://tech-mmmm.blogspot.jp/2015/03/ostcp.html

従って、可能な限りパスを早く切り替えたい場合は、このレジストリキーを短くすればよいのだが、頻繁なパス切り替わりを引き起こす可能性もあり、一長一短となる。また、ストレージメーカーからは、このキーの値が明示的に指定されている場合もあるので、確認して設定した方がよい(調べた限りでは、この値を大きくするケースが多い模様)。

MPIOのフェールオーバーの発生は、「イベントビューアー」の「Windowsログ」→「システム」から確認可能で、以下のようなログが記録される。

------------------------------
<NIC1を切断時(LUNへのアクセスが停止)>
・説明:ターゲットへの接続が失われました。イニシエーターは接続を再試行します。
・ソース:iScsiPrt
・イベントID:20
・レベル:エラー
------------------------------

------------------------------
<フェールオーバー時(LUNへのアクセスが回復)>
・説明:\Device\MPIODisk0に対するフェールオーバーが発生しました。
・ソース:mpio
・イベントID:16
・レベル:エラー
------------------------------