【Azure】PowershellでAzure Resource Managerをデプロイする

テンプレートはMicrosoftのチュートリアルを参考に作成
https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-manager-quickstart-create-templates-use-the-portal

ポータルで見るとこういう感じになるネ。
… }]

【Powershell】ネットワーク設定

毎回GUIでやってたけど、これからはPowershellでやったほうが早いかな?
オプション多くて長いですね。nmcliも長いですよね。

【Windows】ディスクの種類

Windowsではディスクの種類は、ベーシックディスクとダイナミックディスクの2種類をサポートする。
ディスク初期化時の規定はベーシックディスクで、古い形式で、ディスクの分割にパーテーションをベースとしたボリュームを使用する。
ダイナミックディスクは、独自のデータベースを作成してディスクをダイナミックボリュームという単位に分割して管理する。
ダイナミックディスクでは、次の5種類をサポートしている。

種類 説明 対応RAID
シンプルボリューム 1つのディスクの空き領域に作成する
スパンボリューム 2つ以上のディスク上の空き領域にまたがって作成しまとめる
ストライプボリューム 2つ以上のダイナミックディスクを使用して作成する
同時の並列アクセスにより、ディスクの性能を高める構成
RAID0
ミラーボリューム 2つのダイナミックディスクを使用して作成する
同一データを2つのディスク上の保存することで、1つのディスクに障害が発生してもデータ損失を防ぐ
RAID1
RAID5ボリューム 3つ以上のダイナミックディスクを使用して作成する
データをストライプ化して複数ディスクに書き込む際に、パリティ情報を保存する
1つのディスクに障害が発生しても、パリティからデータを再構成し、データ損失を防ぐ
RAID5

【Windows】パーティションスタイル

Windows上でディスクを使用可能にするには、オンライン後にパーティションスタイルを決定(初期化)する必要がある。
パーティションスタイルとは、ディスク上にパーテーションやボリュームを作成する際の形式。
MBRとGPTは相互変換することができるが、ディスクは空である必要がある。
GPTが完全上位互換ともいえるので、新規に作成する場合は考えなしにGPTにしてしまってよい気がする。
データを含んでいるディスクのパーティションスタイルを返還する場合、パーティションを削除する必要がある。

種類 説明
MBR(マスターブートレコード) 古くから利用されているパーティションスタイル。
多くのOS、ツールに対応しているという利点があるが、制約もある。
・最大2TBまで
・ディスクごとに、最大4つまでのプライマリパーティション
GPT(GUIDパーティションテーブル) MBRの制約を解決するために開発されたパーティションスタイル。
OSの種類によって異なるが、Windows Server 2016でGPTを使う場合の利点は以下の通り。
・最大8ZBまで
・ディスクごとに、最大128パーティション
・パーティションテーブルの複製と、CRC機能による信頼性の向上

【Windows】Windowsのファイルシステム

NTFS形式にしておけば、オールOKという感じだと思う。

種類 説明
FAT(File Allocatio Table) ・FAT 最大4GBのボリューム、2GBのファイルまで
・FAT32 最大2TBのボリューム、4GBのファイル
・exFAT フラッシュドライブ向けのファイルシステムで32GB以上に対応ユーザーやグループごとのアクセス許可設定や暗号化はできない。
非推奨で、レガシーな技術。
NTFS(NT File System) Windows Serverで使用される標準なファイルシステム。
以下がサポートされ、FAT形式ではできない
・ファイル、フォルダの暗号化
・ファイル、フォルダの圧縮
・ユーザー、グループへのアクセス許可設定
・ディスククォータ
・ブロック単位での重複除去
ReFS(Resilient File System) Windows Server 2012から実装されたファイルシステム。
データセンターでの使用を想定し、NTFSとの互換性を持ち、以下の特徴がある。
・PBサイズのデータへの対応
・停電、電源障害時のデータ損失からの復旧
・データ損失時にオンラインでデータ修復可能制限事項もある
・ブートボリュームに使用することはできない
・NTFSの特徴である、暗号化、圧縮、ディスククォータ、データ重複除去などの機能をサポートしない

【Windows】NLBを使ってWebサーバを作ってみる

NLB(Network LoadBarancer)機能は、サーバーアプリケーションの可用性、拡張性を高めるためのもの。
WEBベースアプリケーションやVPNなどがメリットを受けやすい。
クラスタ内のノードに障害が発生した場合、その生涯は自動的に検知され、残ノードに引き継がれる。
要件としては、
・同一サブネットに所属している必要がある
・同一クラスタ内でユニキャスト・マルチキャストのミックスはできないので、一方に決めておく
・対象ノードに静的IPが付与されている

こんな感じの構成。

サーバ2台にIISをインストールする。

インストールしたサーバへブラウザでアクセスするとホスト名が表示される


「ネットワーク負荷分散」をインストールする

サーバーマネージャーから「ネットワーク負荷分散」を選び、設定していく。2台のうちの1台でOK。



クラスタ用のIPアドレスを設定

FQDNを決める。DNSのレコードに登録してあげるといい感じになるけど、今回はやらない。
クラスタ操作モードが結構ミソ。今回はマルチキャストで設定。(ムズイ・・・)
https://milestone-of-se.nesuke.com/sv-basic/windows-basic/nlb-cluster/


httpを通すので、80版ポートを設定。アフィニティの「なし」はランダムで振り分ける。


2台目のサーバをクラスターに組み込む。


一応、これで完成。

ブラウザでアクセスしてみると、負荷分散されていることがわかる!
(Chromeで試したんだけど、CtrlF5でも切り替わらなかった。ブラウザを再起動したりしたら切り替わった。そういうもん??)

実際には、ネットワークアダプタにセカンダリIPアドレスが付く

結局、F5更新でうまくばらけなかったところがうやむやなままだったけど、とりあえずこういうもんということろは分かったので良しとしよう。(ハマりすぎて、3日くらい頭を悩ませていた)

【Powershell】共有されているフォルダの確認

MMCコンソールからだと「共有フォルダ」を開くと出てくるコンソールをPowershellでも操作できる

Powershellの場合

フォルダのアクセス許可の確認はGet-Acl

【Hyper-V】仮想ポートACLを使って通信を制御する

仮想ポートACLを構成することで、仮想マシンの通信を制御することができる。
特定のIPアドレス、ポートなどに基づきトラフィックを条件付けして、仮想マシンに対する通信の許可/拒否を制御することができる。
操作は、GUIのHyper-Vマネージャーからの操作はできず、Powershellのみから。

仮想マシン単位のファイアウォール的なイメージかな。
たぶん用途としては、同じネットワークに所属させるけれど、通信のブロックを行いたいときとかかな。

IPアドレスでの制御を行いたい場合、Add-VMNetworkAdapterACLコマンドを使う

ポートでの制御を行いたい場合は、Add-VMNetworkAdapterExtendedAclを使う

通信量も確認することができる

【Windows】パスワードを忘れてしまってログインできないとき

こちらのサイトを参考に。
http://www.atmarkit.co.jp/ait/articles/1312/06/news055.html

どうやら、「簡単操作ツール」をコマンドプロンプトに偽装して、新規ユーザを作成しそれでログインするみたい。

物理マシンで用意するのはちょっと面倒なので、Hyper-V上にWindows10をインストールして、うっかりパスワードを忘れちゃったというていでやっていこうと思います。

まず、ブートの順番をWindows10のISOファイルから起動するように変更(実際のパソコンでやる場合、BIOSからDVDドライブだったり、USBドライブを上位にもっていく)

起動する

「コンピューターを修復する」を選択

「トラブルシューティング」を選択

「コマンドプロンプト」を選択

以下コマンドを順次入力

再帰動して、Windowsログイン画面を表示させ、右下の「簡単操作センター」を選択

おー!コマンドプロンプトが起動した!

以下コマンドで対象ユーザのパスワードをリセットすると、ログインできるようになる!

whoamiを見てみると、systemユーザー権限で起動しているんだね。
なので、Administrator権限を付与したユーザーを新しく作成することもできるし、まぁなんでもできるよね。原理的にはわかっていたけど、いざやってみると新たな発見があるので勉強になるね。

なので、こういう破壊攻撃もできるね。ちなみに、実行後は起動してこなかった。

【ActiveDirectory】NetBIOSドメインとDNSドメインの違い

今日はActiveDirectoryのお勉強をする。

「test.local」というActiveDirectoryのドメインを例に考えてみる。
「test」と「test.local」は異なるもの。「test」は、NetBIOSドメイン名で、「test.local」はDNSドメイン名にあたるよ

ドメイン参加させるときに、「test」でも「test.local」でも、どちらでもドメイン参加できることがほとんどだと思う。
なぜなら、「test」はブロードキャストでの名前解決になるため、同一セグメントにADサーバがあれば、成功する。
一方で、「test.local」は、DNSサーバをADサーバに指定していれば、ADサーバ自身が名前解決をして、成功する。

ドメインの種類 名前解決の方法
test NetBIOSドメイン名 ブロードキャスト、Imhosts、WINS
test.local DNSドメイン名 DNS、hosts

結果、どっちでもいいんじゃね。と思われがちだけど、そうでもない。

「test.local」を入力して、ドメイン参加すべきなんだね。
なぜならば、ActiveDirectoryでは、すべてのコンピュータがDNSを利用して名前解決をして、ドメインを探すことができることが前提としているから。「test.local」でドメイン参加できるということは、つまりDNSによる名前解決のテストにもなっているんだね。

「「test.local」を入れて失敗した。「test」を入れたら成功した。」というパターンがあったとする。
これはとてもまずいことなんだね。DNSでの名前解決ができないと、Kerberos認証を使うことができないため、後々様々なトラブルを引き起こしてしまう可能性があるんだね。

逆パターンはOK。DNSでの名前解決成功という前提条件をクリアしているからだね。