vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

vCSA の SSH ログインに Google Authenticator を利用して二段階認証をかける

実験してみたシリーズ。 Advent Calendar のネタは出来てないのに大丈夫なのか…?
非サポートなので自己責任!本番環境では非推奨です!

SSH ログインに Google Authenticator

Google Authenticator(Google 認証システム)は、Googleが開発した二段階認証(二要素認証)を行うトークンソフトウェアである。Authenticatorは、Googleログイン時の二段階認証に必要な6桁の数字コードを生成する。また、LastPassDropboxといった他社製のアプリケーションの二段階認証にも対応する。

Google Authenticator - Wikipedia

ログイン時にアプリなどで時間で変化する 6桁のコードを生成し、入力することでログインできるようになるアレの Google 版ですが、Google の仕組みは PAM 経由で Linux サーバの認証で使える lib が OSS として開発、公開されていたりする。

github.com

Linux にいけるということは vCSA でも使えるんじゃないか…ということで試してみる。

環境

今回試した環境は(雑に立ててた) vCenter Server 8.0 U3c。
(U3d じゃないのかよというツッコミはノーサンキュー)
今回の記事では割愛するが、vCenter Server 7.0 U3t でも動いた。
(7.0 U3 だと gcc がデフォルトなかったので追加インストールする必要あり)

インストール

よくある Linux ディストリビューションであれば yum なり apt なりでインストールできるみたいだが、残念ながら vCSA(Photon) のリポジトリには入っていないのでソースからのコンパイル
幸いなことにコンパイルに必要なものはすべてtdnfで取得できる。

root@vcsa03 [ ~ ]# tdnf install autoconf automake binutils make linux-api-headers Linux-PAM-devel

Installing:
binutils-libs                        x86_64             2.35-14.ph4              photon-updates       4.09M 4292472
Linux-PAM-devel                      x86_64             1.5.3-3.ph4              photon-updates     196.28k 200988
linux-api-headers                    noarch             5.10.210-1.ph4           photon-updates       5.19M 5438242
make                                 x86_64             4.3-2.ph4                photon-release       1.35M 1418198
binutils                             x86_64             2.35-14.ph4              photon-updates      27.37M 28699422
automake                             noarch             1.16.1-3.ph4             photon-updates       1.37M 1436542
autoconf                             noarch             2.69-10.ph4              photon-updates       1.70M 1783277

Total installed size:  41.26M 43269141
Is this ok [y/N]: y
【略】

それと Github から Google-authenticator-libpam のソースをダウンロードし、解凍する。

root@vcsa03 [ ~ ]# wget https://github.com/google/google-authenticator-libpam/archive/refs/tags/1.10.tar.gz
--2024-12-08 22:44:57--  https://github.com/google/google-authenticator-libpam/archive/refs/tags/1.10.tar.gz
Resolving github.com... 20.27.177.113, 64:ff9b::141b:b171
【略】
2024-12-08 22:45:01 (636 KB/s) - ‘1.10.tar.gz’ saved [64409/64409]

root@vcsa03 [ ~ ]# tar -xvzf 1.10.tar.gz
google-authenticator-libpam-1.10/
google-authenticator-libpam-1.10/.github/
【略】
root@vcsa03 [ ~ ]# ls
1.10.tar.gz  google-authenticator-libpam-1.10

Github の手順の通りbootstrap.sh./configuremakemake install

root@vcsa03 [ ~ ]# cd google-authenticator-libpam-1.10/
root@vcsa03 [ ~/google-authenticator-libpam-1.10 ]# ./bootstrap.sh
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build'.
libtoolize: copying file 'build/ltmain.sh'
【略】
Makefile.am: installing 'build/depcomp'
parallel-tests: installing 'build/test-driver'
root@vcsa03 [ ~/google-authenticator-libpam-1.10 ]# ./configure
checking whether make supports nested variables... yes
checking for gcc... gcc
【略】
config.status: executing libtool commands

  google-authenticator version 1.10
  Prefix.........: /usr/local
  Debug Build....:
  C Compiler.....: gcc -g -O2 -Wall
  Linker.........: /usr/bin/ld -m elf_x86_64  -ldl

root@vcsa03 [ ~/google-authenticator-libpam-1.10 ]# make
make  all-am
make[1]: Entering directory '/root/google-authenticator-libpam-1.10'
【略】
make[1]: Leaving directory '/root/google-authenticator-libpam-1.10'
root@vcsa03 [ ~/google-authenticator-libpam-1.10 ]# make install
make[1]: Entering directory '/root/google-authenticator-libpam-1.10'
 /usr/bin/mkdir -p '/usr/local/bin'
【略】
make[1]: Leaving directory '/root/google-authenticator-libpam-1.10'
root@vcsa03 [ ~/google-authenticator-libpam-1.10 ]#

make install/usr/local/lib/security にインストールされる

root@vcsa03 [ /usr/local/lib/security ]# ls
pam_google_authenticator.la  pam_google_authenticator.so

ここだとパスが通っていないので、/usr/lib64/security にリンクを作っておく。

root@vcsa03 [ ~ ]# ln -s /usr/local/lib/security/pam_google_authenticator.so /usr/lib64/security/pam_google_authenticator.so
root@vcsa03 [ ~ ]# ls -l /usr/lib64/security/pam_google_authenticator.so
lrwxrwxrwx 1 root root 51 Dec  8 23:14 /usr/lib64/security/pam_google_authenticator.so -> /usr/local/lib/security/pam_google_authenticator.so

sshd_config の設定

ChallengeResponseAuthentication yes を追記しておく。

root@vcsa03 [ ~ ]# echo "ChallengeResponseAuthentication yes" >> /etc/ssh/sshd_config

(無くてもいいんじゃないか、、、という気もしている)

/etc/pam.d/sshd の設定

設定ファイルに追記。

 # Begin /etc/pam.d/sshd

auth            required        pam_google_authenticator.so nullok echo_verification_code ★ この行(表示幅の関係で改行されているかも)
auth     [success=done new_authtok_reqd=done default=ignore perm_denied=die] pam_mgmt_cli.so /usr/lib/applmgmt/linux_cli/bin/getticket
account  sufficient     pam_mgmt_cli.so /usr/lib/applmgmt/linux_cli/bin/getticket
auth            include         system-auth
account         include         system-account
password        include         system-password
session         include         system-session

# End /etc/pam.d/sshd

追記する位置について、シェルが bash の場合は末で問題ないが、どうも appliancesh の場合だとauth [success=done ... 行より前にないとパスワード認証が通った段階で appliancesh が起動してしまう。
auth [success=done の内容を読み解いて直せばいいのだろうが、そこは妥協し先頭に書いておく。

google-authenticator の初期化

google-authenticator を初期化し、シークレットキーを生成する。

root@vcsa03 [ ~ ]# google-authenticator

Do you want authentication tokens to be time-based (y/n) y
Failed to use libqrencode to show QR code visually for scanning.
Consider typing the OTP secret into your app manually.
Your new secret key is: 【hogehoge】
Enter code from app (-1 to skip):

キーが生成されるので、これをアプリの Google Authenticator に登録する。

登録が問題なければアプリ側で6桁のコードが表示されるようになるので、それをEnter code from app に入力し先へ進める。

Enter code from app (-1 to skip): 111111
Code confirmed
Your emergency scratch codes are:
  【hogehoge】

Do you want me to update your "/root/.google_authenticator" file? (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, a new token is generated every 30 seconds by the mobile app.
In order to compensate for possible time-skew between the client and the server,
we allow an extra token before and after the current time. This allows for a
time skew of up to 30 seconds between authentication server and client. If you
experience problems with poor time synchronization, you can increase the window
from its default size of 3 permitted codes (one previous code, the current
code, the next code) to 17 permitted codes (the 8 previous codes, the current
code, and the 8 next codes). This will permit for a time skew of up to 4 minutes
between client and server.
Do you want to do so? (y/n) y

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting? (y/n) y

緊急用の復旧コードが表示されるので控えておく。
その他、サーバサイド側でのキーの配置や各種設定が聞かれるが、ここはデフォルトにしておくのが無難かな。。。

最後にsshdを再起動

root@vcsa03 [ ~ ]# systemctl restart sshd

この後動作確認だが、このコンソールセッションはそのままで別ターミナルで新たに接続して確認するのが安全。

動作確認

別ターミナルよりsshで接続。

$ ssh root@192.168.100.53

VMware vCenter Server 8.0.3.00300

Type: vCenter Server with an embedded Platform Services Controller

(root@192.168.100.53) Verification code: 222222 ★アプリの6桁の数字を入力
(root@192.168.100.53) Password: ★ root ユーザのパスワード
Last login: Sun Dec  8 23:02:26 2024 from 192.168.1.13
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command>

/etc/pam.d/sshd の記述が先頭に来たことでアプリの6桁コードがまず聞かれるため若干違和感があるが、一応動作上は問題なく、コードもパスワードも正しいものを入力しないとログインできないため、一応目的は達成。
基本 SSH は Disable でも問題ないので、vCenter の機能的には問題ない…はず。
(vSphere Client でざっと見ではエラーなし)

終わりに

Google Authenticator を利用して SSH に対して二段階認証を試してみるお話しでした。
vCSA ができた = Photon OS ベースな他のアプライアンスに対しても適用できるものかと思いますが、あくまで非公式・非サポート、自己責任な内容となりますので、ラボ環境とかでならいいんじゃないですかね。。。

USB パススルーで仮想マシンに USB メモリを挿してみる

機能としては耳にするが実際に使っている人はあまり聞かない USB パススルーで、仮想マシンに USB メモリを挿してファイルをやりとりできるか試してみる。

試したデバイス

SanDisk SDDDC2-256G-G46 256GB
USB-Type-A/C のデュアルコネクタモデル
Amazon で見当たらなかったので kakaku.com より。
256GB、USB 3.0、Type-A/C デュアルコネクタで3000円とか良い時代や… kakaku.com
こちらに Windows 端末より exFAT でフォーマットをし、適当なファイルとして vCSA のインストーラ ISO イメージファイルをコピっておく。

ESXi に接続

公式ドキュメントは ↓ docs.vmware.com デフォルトでインストールされている USB アービトレータサービスが USB デバイスの接続を検出し、ESXi から USB デバイスへのトラフィックパスを構成する。

[root@hm90:~] /etc/init.d/usbarbitrator status
usbarbitrator is running
[root@hm90:~] ps | grep usbarbitrator
1049574  1049574  vmware-usbarbitrator

チェーン階層数や速度などもろもろ細かい要件や制約はあるが、実験的に USB メモリ1個接続するだけなので、細かいことは気にせずにひとまず装着!
ESXi のイベントを眺めていると USB 構成変更のイベントが出力される。
ESXi shell 上でlsusbを実行すると接続したデバイスが確認できる。

[root@hm90:~] lsusb
Bus 001 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
Bus 002 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
Bus 003 Device 001: ID 0e0f:8003 VMware, Inc. Root Hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 003 Device 002: ID 0d8c:0014 C-Media Electronics, Inc. Audio Adapter (Unitek Y-247A)
Bus 003 Device 003: ID 0e8d:0608 MediaTek Inc.
Bus 001 Device 003: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
Bus 002 Device 002: ID 0781:5595 SanDisk Corp. ★コレ

仮想マシンに接続する

仮想マシンに USB を接続する場合、仮想マシンのデバイスに仮想 USB コントローラを作成しておく必要がある。 docs.vmware.com 仮想マシン作成時に Windows 系の OS を選択している場合はデフォルトで仮想 USB コントローラが作成される。
Linux 系など、Windows 以外の OS の場合はデフォルトでは作成されないので個別に作る必要がある。


接続した USB メモリを接続するには新規デバイスを追加よりホストの USB デバイス
新規ホスト USB デバイスが追加されるので、追加する USB デバイスを選択し OK。
仮想マシンのハードウェア情報に追加した USB デバイスが表示される。
これで vSphere Client 側の作業は終わり。

仮想マシンの中から見てみる

仮想マシン内の OS(Windows Server 2016)から見ると E ドライブが追加されている。
中も見えて、さきほどコピった vCSA の ISO ファイルが。
ローカルにコピー。ほぼ Max 速度?
ISO もマウントでき、インストーラも起動。問題なし。

USB デバイスを取り外す

まずは仮想マシン内から。Windows OS で普通に取り外し。
(最近の Windows だとコレで外さなくてもいいらしい?)

OS でアンマウントできたら仮想マシンより取り外し。
仮想マシンの編集からデバイスの削除。

問題なくデバイス削除できたら物理的に取り外しておk。

USB メモリを挿した状態で vMotion しようとする。

当然ながら移動先ホストにデバイスが無いので怒られる。
USB デバイスが接続された状態でも vMotion 自体はサポートされているので移動先ホストにも同じ USB デバイスがあれば vMotion できるはずだが、ストレージ系の USB デバイスはどうなんだろう…

余談

自宅でなら数 GB ぐらいのサイズのファイルを仮想マシン内にもっていくぐらいのユースケースがあるからなーと思ったが
USB メモリへの書き込みが遅杉…
USB HDD/SSD とならまだ速度でるかもだが、ネットワーク転送で十分なような…

使い道がやはり難しい。

Horde Mode って何?

AutoDeploy の話は実は本件の前フリ。 vhoge.hateblo.jp vhoge.hateblo.jp

Misc.HordeEnabled ?

お仕事にて。
顧客環境の点検をしていた中で、クラスタ内で詳細パラメータに差異が。
何個か検出されたのですが、その中で Misc.HordeEnabled という見慣れないパラメータが…

詳細を調べてみるとおなじみの以下。

github.com

Horde Mode が有効化どうか…


Horde Mode って何?

Horde Mode って何?

ネットを調べてもあまりそれっぽい答えには当たらず…
というわけで内部で情報をあさっていると Horde Mode は AutoDeploy でデプロイされたかどうかというのを判定するパラメータとのこと。

というわけで確認してみる。

メディア(USB メモリ)でプロビジョニングしたホスト

値はデフォルト値の "0"

AutoDeploy でプロビジョニングしたホスト

値は… "1" !

何か違いがあるの?

AutoDeploy でプロビジョニングしたかどうかで、挙動上の違いはなさそう…?
少なくとも手動で書き換えるものでは無さそう。

クラスタ間で差異があると構築方法で差異があるということにあり、構成や設定に差異が無いかというところが懸念されてくるところですが、そこに問題なければ大丈夫なのではないでしょうかね。。。

AutoDeploy を試す(ホストプロファイルを適用する)

前回の続き。 vhoge.hateblo.jp PXE boot から ESXi が起動するところまで試したが、ステートレスホストだったり、IP アドレスが DHCP だったりするのでこの辺をなんとかしてみる。

(ベストプラクティス的には DHCP 予約らしいけど…) docs.vmware.com

ホストプロファイル作成

本来の流れとしては…

起動したホストを適切に設定してリファレンスホスト化

ホストプロファイルを抽出

他ホストへホストプロファイル を展開
が正しい流れっぽい?
docs.vmware.com が、ネットワーク周りがどうもうまいこといかなかった?ので、とりあえず起動したホストを何もせずそのままの状態でホストプロファイルを抽出し、ホストプロファイルを編集することにしてみる。

インベントリからホストを選び、「ホストプロファイル」→「ホストプロファイルの抽出」 適当な名前をつける。 メニューから「ホストおよびプロファイル」→「ホストプロファイル」
抽出したプロファイルが表示されるので、ホストプロファイル名をクリック。 構成タブを選択し、ホストプロファイルの編集を開く。 ホストプロファイルの中身がツリー状で表示され、現状の設定(デフォルト設定)が書き出されているので、変更を行いたい箇所を変えていく。
ひとまず管理 IP アドレス。
「設定を適用中に~」にしておくと別途指定可能になる。 defaultTcpIpStack での DNS サーバ/ホスト名設定。 defaultTcpIpStack でのデフォルトゲートウェイ root ユーザのパスワード。 システムイメージキャッシュ設定。
ステートフルインストールを有効化することで ESXi がインストールされ、ローカルブート可能になる。 とりあえずこのぐらいで。
他に変更しておきたいものがあれば変更しても良いし、IP 変更/ローカルブート後に vSphereClient や PowerCLI から設定変更し、もう一回ホストプロファイルを抽出しても OK。

ホストプロファイル適用

作成、編集したプロファイルをホストへ適用する。
再びインベントリでホストを選択し、「ホストプロファイル」→「ホストプロファイルの添付」し、編集したホストプロファイルを選び OK をする。 またまたインベントリでホストを選択し、「ホストプロファイル」→ 「ホストのカスタマイズの編集」、IP アドレスやホスト名など別途指定するとしたパラメータを指定する。 再度インベントリよりホストを選び、「ホストプロファイル」→ 「修正」
変更によっては再起動が発生するため、ホストをメンテナンスモードにしておくことが必要な場合がある。(今回は必要だったので、途中で修正がコケた…) 「ホスト設定のバッチ処理」タスクが開始され、ホストプロファイルに従い設定が変更される。 ESXi ホストのコンソール。Applying Host Profile task list...
ちなみにここの処理はそこそこ時間がかかる。 しばらくしたらカスタマイズで指定された IP アドレスにて起動され、インベントリ上に現れる。 データストアも作成されていて、ステートフルホストとして起動している。

デプロイルールにホストプロファイルを指定するとどうなるのか?

前回のデプロイルール作成時は飛ばしていたホストプロファイルですが、デプロイルールで指定していた場合はどうなるかと言うと 初回起動時にホストプロファイルが添付された状態で起動される。
ただ、カスタマイズは未設定なので結局 DHCP/ステートレス状態での再起動となり、カスタマイズを指定しなおして再起動という流れになる。

とりあえず

細かい部分での手順や設定値をいじって検証したいところはあるが、一旦ここまで。

環境準備や仕様理解が必要なので数台規模の ESXi プロビジョニングであれば重いが、数十台以上の規模であれば AutoDeploy を使う恩恵はありそう。

別の方法として kickstart があったりするんですが、まだ検証していないので評価はなんとも… AutoDeploy は ESXi 特化なので既に Linux 系とかで kickstart を使っているのであれば統一できるというメリットは大きいと思うのですが、ESXi 単体で考えると ks 周りの細かい記述を覚える必要がなく GUI でポチポチできるだけ AutoDeploy でいいのかなーと。

あと、AutoDeploy の文脈からホストプロファイルの話となったのですが、ホストプロファイル自体は AutoDeploy が無い環境でもホスト設定の一貫性、コンプライアンス管理という観点だと結構有益。機会があればこの話も追々…

AutoDeploy を試す(ESXi を boot させるまで)

とある検証で AutoDeploy が必要になったものの、そういえば触ったことが無いなということで、今更ながら AutoDeploy 環境の構築メモ。

vSphere AutoDeploy とは

AutoDeploy とは物理ホストに対し ESXi イメージをプロビジョニングし、ESXi のインストールや設定投入の集中管理を行うことができるコンポーネント
各物理ホストは PXE boot にて ESXi が起動しそのままステートレスホストとして運用することや、ホストプロファイルを適用しステートフルホストとしてブートディスクへのインストールして運用することが可能で、またホスト名や IP アドレスなどのホスト毎の設定をホストプロファイルのカスタマイズ値より投入することができる。 docs.vmware.com

必要なコンポーネント

AutoDeploy を利用するにはサーバとして以下が必要。

  • vCenter Server
    • AutoDeploy サービスを有効化
  • DHCP サーバ(*)
  • TFTP サーバ (*)

(*)ラボ環境には dnsmasq があるので、今回はコレの DHCP/TFTP を有効化し兼任。

これとは別に以下のファイルも準備しておく。

  • ESXi イメージ(オフラインバンドル)
  • AutoDeploy PXE ブート用イメージ
    • vCenter からダウンロードできる

AutoDeploy サービスの有効化

デフォルトでは AutoDeploy サービスは起動していないので有効化する必要がある。
といっても、メニューから AutoDeploy 画面をひらいてボタンを押すだけ。

とりあえず上記が出れば有効化は OK。

VAMI のサービスから見ると下記のサービス(AutoDeploy/ImageBuilder)。
VAMI でサービス有効無効を切り替えてもよい。

dnsmasq で DHCP/TFTP を立てる

まず TFTP の root フォルダを作成し、AutoDeploy の PXE イメージを設置しておく。
PXE イメージは AutoDeploy 画面の設定より以下のリンクからダウンロードができる。
ブラウザでダウンロードして設置でも良いが、PXE イメージのダウンロードは認証が不要なのでサーバから直接ダウンロードする方が手っ取り早いかも。

$ mkdir -p /var/lib/tftp
$ cd /var/lib/tftp
$ wget https://【vCSA の FQDN or IP】:6501/vmw/rbd/deploy-tftp.zip --no-check-certificate

ダウンロードした zip は展開しておく。

$ unzip deploy-tftp.zip
$ ls -1
deploy-tftp.zip
snponly64.efi
snponly64.efi.officialkey
snponly64.efi.testkey
snponly64.efi.vmw-hardwired
snponly64.efi.vmw-hardwired.officialkey
snponly64.efi.vmw-hardwired.testkey
tramp
u[f:id:masahiroirie:20240920002833p:plain]ndionly.0
undionly.kpxe
undionly.kpxe.debug
undionly.kpxe.debugmore
undionly.kpxe.nomcast
undionly.kpxe.vmw-hardwired
undionly.kpxe.vmw-hardwired-nomcast

dnsmasq.conf の設定を書き換え、DHCP/TFTP を有効化し PXE boot の設定をする。

# DHCP 周りの設定
dhcp-range=192.168.100.240,192.168.100.254,12h
dhcp-option=option:router,192.168.100.1
dhcp-option=option:netmask,255.255.255.0
dhcp-option=option:dns-server,192.168.100.2
dhcp-option=option:ntp-server,192.168.100.2

# TFTP の設定
enable-tftp
tftp-root=/var/lib/tftp

# PXE boot の設定
dhcp-boot=snponly64.efi.vmw-hardwired

dhcp-boot の指定はホストが EFI なら snponly64.efi.vmw-hardwired、BIOS なら undionly.kpxe.vmw-hardwired ファイルの TFTP root からのファイルパスを指定しておく。

docs.vmware.com

ソフトウェアデポ登録

再び vSphere Client にて AutoDeploy 画面。
プロビジョニングする ESXi イメージのソフトウェアデポを登録する。
オンラインデポがあればそれを指定しそのまま利用することが可能、無ければダウンロードやカスタマイズしたオフラインバンドルをインポートすることもできる。
インポートが完了するとオフラインバンドルに含まれているイメージプロファイルやソフトウェアパッケージ(VIB)が確認できる。 この画面でさらに VIB を追加したりなどのカスタマイズを行うことも可能っぽい。

デプロイルール登録

プロビジョニング対象のホストや利用するソフトウェアデポ、ホストプロファイル、実行するカスタムスクリプトなどのデプロイルールを作成する。
デプロイルールタブより新しいデプロイルールを作成する。 デプロイルール名とルール適用ホストの指定。 適用ホストはホスト名や IP、Mac アドレスなどで指定ができる。 デプロイルールに含めるアイテムの指定。
今回は一旦ホストの場所とイメージプロファイルのみを指定する。 プロビジョニングしたホストをどこのクラスタに登録するかの指定。 適用する ESXi のイメージプロファイルの指定。 さきほどのソフトウェアデポに含まれているイメージプロファイルを指定する。 設定の確認を行い、完了する。 デプロイルールが作成されるがデフォルトでは無効になっているので有効化する。 対象のルールにチェックを入れて有効化。 これで登録完了。

ホストを PXE ブートしてみる。

これで対象ホストをネットワークブートすると ESXi があがってくる…はず。
Nested 機で試してみる。EFI から Network Boot を選択。 それっぽい画面… ESXi の boot 画面が上がってくる。見慣れない Load モジュールパス… boot 完了。ただし IP は DHCP での割り当て。 vCenter にも自動で登録される。

ESXi は boot したが

ただし現時点だとステートレスホストであがってくるためローカルデータストアは持っておらず、オンメモリディスク状態のため再起動するとログやファイルなどは全て消える。
また、IP アドレスも DHCP 割り当てでサーバとして運用するにはちと厳しい状態。

この後、リファレンスホストとしてホストプロファイル設定・抽出・添付していくことで各ホスト毎の設定を投入し、ステートフルホストとして構築を行っていくがそれはまた後日。。。