Azure Stack HCI 検証環境を構築してみた③ – Azure 接続 ~ シングルノード作成
今回は前回に続き、Azure とRaspberry Pi の接続、そしてAzure Stack HCI をシングルノード構成でAzureに登録するところまで行います。
前回の記事は以下参照ください。
第一回
第二回
今回はRaspberry Pi によるAzureへのVPN接続、AzureStackHCIのドメイン参加、Azureへの登録を行っていきます。
最終的にはAVDをAzureStackHCI上で利用できるように以下の構成を目指します。
目次
Azure VPN Gateway の構築
今回Raspberry Pi と Azure を接続するために Azure VPN Gateway を使ってP2S接続を行います。Raspberry Pi を VPN クライアントとして設定します。
初めに、Azure 上に VPN Gateway を構築します。
Azure Portal > 仮想ネットワークゲートウェイ > 作成 をクリックし、以下の通り設定します。
サブスクリプション:任意
リソースグループ:任意 名前:任意(例:HubVnetGW) 地域:任意(例:東日本) ゲートウェイの種類:VPN VPNの種類:ルートベース SKU:VpnGw1 世代:Generation1 仮想ネットワーク:任意(今回はHubVnetにゲートウェイを設定) ゲートウェイサブネットのアドレス範囲:ゲートウェイサブネットを選択
パブリックIPアドレス:新規 or 既存のものを使用 パブリックIPアドレス名:任意 アクティブ/アクティブモードの有効化:無効 |
RaspberryPi(P2S VPNクライアント)の構成
初めにVPNソフトのstrongswan をRaspberry Pi にインストールします。
1 2 3 4 5 6 7 8 9 |
sudo apt-get update sudo apt-get upgrade sudo apt install strongswan sudo apt install strongswan-pki sudo apt install libstrongswan-extra-plugins |
続いてCA証明書を作成します。
1 2 3 |
ipsec pki --gen --outform pem > caKey.pem ipsec pki --self --in caKey.pem --dn "CN=VPN CA" --ca --outform pem > caCert.pem |
次に、CA 証明書 を base64 形式で出力します。
1 |
openssl x509 -in caCert.pem -outform der | base64 -w0 ; echo |
出力したbase64形式のデータをAzure に登録するために、仮想ネットワークゲートウェイを開きます。
仮想ネットワークゲートウェイからポイント対サイトの構成を開き以下の設定を行います。
アドレスプール:172.16.201.0/24 ※仮想ネットワークのアドレス空間と被らなければOK
トンネルの種類:IKEv2 認証の種類:Azure 証明書 ルート証明書 – 名前:P2SRootCert ※任意でOK 公開証明書データ:前のステップで出力したbase64形式の証明書データ BGPの構成:無効 |
これでAzure 側の設定は完了です。
続いてRaspberry Pi 側でユーザー証明書の生成と設定を行います。
以下のコマンドでユーザー証明書を生成します。
1 2 3 4 |
export PASSWORD="password" export USERNAME=$(hostnamectl --static) ipsec pki --gen --outform pem > "${USERNAME}Key.pem" ipsec pki --pub --in "${USERNAME}Key.pem" | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "CN=${USERNAME}" --san "${USERNAME}" --flag clientAuth --outform pem > "${USERNAME}Cert.pem" |
生成したユーザー証明書を含んだp12バンドルを作成します。
1 |
openssl pkcs12 -in "${USERNAME}Cert.pem" -inkey "${USERNAME}Key.pem" -certfile caCert.pem -export -out "${USERNAME}.p12" -password "pass:${PASSWORD}" |
続いてAzure で VPN クライアントをダウンロードします。
ダウンロードしたGeneric フォルダーには、次のファイルが含まれています。
VpnSettings.xml:サーバー アドレスやトンネルの種類など、重要な設定が含まれています。
VpnServerRoot.cer:P2S 接続の設定中に Azure VPN Gateway を検証するために必要なルート証明書が含まれています。
ルート証明書をRaspberry Pi に送った上で、以下のコマンドで/etc/ipsec.d/cacertsにコピーします。
1 |
sudo cp "${USERNAME}.p12" /etc/ipsec.d/private/ |
後続の手順で利用するためホスト名を以下コマンドで確認しメモします。
1 |
hostnamectl --static |
VpnSettings.xml ファイルを開き、<VpnServer> の値をメモします。
/etc/ipsec.conf を開き編集します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
conn azure keyexchange=ikev2 type=tunnel leftfirewall=yes left=%any leftid=%raspberrypi #上記手順で確認したホスト名を入力 例:client01というホスト名だったら、「%client01」となる leftauth=eap-tls right= <VpnServer> #Example: azuregateway-xxx-xxx.vpn.azure.com rightid=%<VpnServer> #Example: %azuregateway-xxx-xxx.vpn.azure.com rightsubnet=0.0.0.0/0 leftsourceip=%config auto=add esp=aes256gcm16,aes128gcm16! |
/etc/ipsec.secrets を開いてシークレット値を追加します。
1 |
: P12 raspberrypi.p12 'password' # key filename inside /etc/ipsec.d/private directory |
※.12 ファイルの名前は、作成した時の名前と一致している必要があります。
また、パスワードは、証明書の生成時に選択したパスワードと一致している必要があります。
変更した場合は適宜変えてください。
これは、ホスト名が “raspberrypi” であり、証明書パスワードが “password” であるマシンで実行するコマンドの例です。
最後に以下コマンドを実行するとVPN接続が始まります。
1 2 3 |
sudo ipsec restart sudo ipsec up azure |
うまくいくと
connection ‘azure’ established successfully と表示されます。
以下のコマンドで接続状況の確認もできます。
1 |
sudo ipsec status |
Raspberry Pi のNAT設定
これでRaspberry Pi から Azure に繋がりましたが、Azure Stack HCI からraspberry Pi のVPNIPをSNATするために、以下の設定を行います。
AD向け通信のソースをVPNのグローバルIPに変換(SNAT)
1 |
sudo iptables –t nat –A POSTROUTING --dst 10.0.0.0/16 –j SNAT --to-source 172.16.201.2 |
それ以外の通信はAPからインターネットへ
1 |
sudo iptables -t nat -A POSTROUTING -s 192.168.249.0/24 ! -d 192.168.249.0/24 -j MASQUERADE |
iptables の確認
1 |
sudo iptables –t nat –L --line-numbers |
こうなっていればOK
ドメインコントローラーの構築
Azure Stack HCI はドメインに参加する必要がありますので、Azure 上にドメコンを作成します。
IaaS上にサーバーを立てて、Active Directory ドメインサービスをインストールしてからドメコンに昇格させればOKです。
構築手順は一旦省きます。
Azure Stack HCI ドメイン参加
Azure Stack HCI のDNSサーバーをAzure 上に建てたADサーバーに向けます。
SConfigの画面から、8.ネットワーク設定に進めばDNSが変更可能です。
名前解決できることも確認しましょう。できないとドメイン参加失敗します。
さてここまでくればAzure Stack HCI が AD にアクセスできるようになったので、
ドメイン参加させましょう。
Sconfig画面から1.ドメイン/ワークグループに進みADの資格情報を入力します。
うまくいったら再起動します。
シングルノードクラスタ―作成
再起動後に、必要なロールと機能をインストールします。
1 |
Install-WindowsFeature -Name "BitLocker", "Data-Center-Bridging", "Failover-Clustering", "FS-FileServer", "FS-Data-Deduplication", "Hyper-V", "Hyper-V-PowerShell", "RSAT-AD-Powershell", "RSAT-Clustering-PowerShell", "NetworkATC", "Storage-Replica" -IncludeAllSubFeature –IncludeManagementTools |
以下のコマンドでクラスタ―として問題ない構成かチェック可能です。
1 |
Test-Cluster -Node AZSHCI01 |
問題なければクラスタ―を作成します。
クラスタ―名とノード名は任意で変えてください。
1 |
New-Cluster -Name AzSHCICluster -Node AZSHCI01 -NOSTORAGE |
記憶域スペース ダイレクトを有効にして、ストレージ キャッシュを無効にします。
1 |
Enable-ClusterStorageSpacesDirect -CacheState Disabled |
Azureへの登録
登録に必要なモジュールをAzure Stack HCI OS にインストールします。
1 2 |
Install-Module Az Install-Module -Name Az.StackHCI |
以下のコマンドでサブスクリプションに登録します。
1 |
Register-AzStackHCI -SubscriptionId "<subscription_ID>" -ComputerName AZSHCI01 -Region "japaneast" -TenantId "<tenant_id>“ |
サブスクリプションIDやコンピューター名、リージョン、テナントIDはご自身の環境に置き換えてください。
実行すると以下のメッセージが表示されます。
ブラウザを開けるPCで表示されたURLを開きコードを入力します。
https://microsoft.com/devicelogin
この画面がでれば認証完了です。
AzureStackHCI側のCLIで Result が SuccessになればOKです。完了まで5分くらいかかります。
Azureポータルから Azure Stack HCI を確認すると登録されていることが確認できます。
まとめ
今回Raspberry Pi をP2SクライアントとしてAzureへの接続を行いました。
またラズパイを経由して、Azure Stack HCI OSのドメイン参加、クラスタ―設定、Azure への登録まで行いました。
次回はAzureポータルからVMの展開や監視等の管理を行う方法をご紹介します。
この記事を書いた人
- 髙橋 和輝
-
テクニカルマーケターとして、新技術の検証、ブログ執筆、セミナー講師を行っております!
学生時代はアプリ開発に興味がありましたが、インフラ、セキュリティ事業を経て、現在はクラウド屋さんになっております。
コロナ禍前は、月1で海外旅行にいくなどアクティブに活動していましたが、最近は家に引きこもってゲームが趣味になっています。
宜しくお願い致します!
この投稿者の最新の記事
- 2024年3月25日ブログOracle Database@Azureが東日本リージョンに展開されることが発表されました!
- 2024年3月22日ブログAzure SQL DatabaseでCopilotがプレビュー公開!
- 2024年3月18日ブログAzureリソースの誤削除を防ぐ「ロック」機能とは
- 2024年3月14日ブログCopilot for Security の一般公開日が発表