Azure Virtual Network IP について
今回はAzure の仮想ネットワークや仮想マシンなどの各種サービスでパブリック通信を行うために利用するIP アドレスのサービスに付いて説明します。
Azure Virtual Network IP サービスとは
Azure Virtual Network IP サービスは、Azure 仮想ネットワークや各種サービスで通信を行うための一連のサービスです。Azure Virtual Network IP サービスは以下のサービスがあります。
- パブリックIP アドレス
- パブリックIP アドレス プレフィックス
- カスタムIP プレフィックス
パブリックIP アドレス
パブリックIP アドレスは、インターネットからAzure リソースへインバウンドの通信を行うために使用するサービスです。パブリックIP サービスではIPv4 またはIPv6 が作成可能であり、SKU に応じた割り当て方法や機能の違いがあります。Basic では、リソースに関連付けるタイミングでIP アドレスを割り当てる動的割り当てを使用できますが、可用性ゾーンやリージョンを跨ぐロードバランサーへの割り当て、ルーティングの設定ができません。Standard では、パブリックIP 作成時にIP アドレスが割り当てられる静的割り当てのみ使用可能となり、複数のゾーンに展開する可用性ゾーンやリージョンを跨ぐロードバランサーへの使用、パブリックIP のルーティング設定を行うことができます。SKU はBasic からStandard へアップグレードは可能ですが、Standard からBasic へダウングレードはできません。
Standard のSKU では、パブリックIP アドレスのルーティングをMicrosoft ネットワークかインターネットかを設定できます。Microsoft ネットワークは、ユーザーの一番近いグローバルネットワークを経由します。インターネットを選択すると、トランジットISP を使用したルーティングとなります。ルーティング設定はパブリックIP アドレス作成後に変更できないため、変更する場合は再度パブリックIP アドレスを作成する必要があります。
パブリックIP アドレスでDNS ラベルを設定することで、Azure 管理のDNS でパブリックIP アドレスをマッピングすることもできます。また、可用性ゾーンを設定することにより、特定のゾーンで障害が発生した際にパブリックIP アドレスの可用性を向上できます。
パブリックIP アドレスを付与できるサービスは以下のようなサービスがあります。ロードバランサーなど一部のリソースでは、パブリックIP アドレスのSKU を合わせる必要があります。
- 仮想マシン ネットワーク インターフェイス
- インターネットに接続するロード バランサー
- Virtual Network ゲートウェイ (VPN/ER)
- NAT Gateway
- アプリケーション ゲートウェイ
- Azure Firewall
- bastion ホスト
パブリックIP アドレスをリソースに関連付ける場合、パブリックIP アドレスとリソースが同じリージョンに配置される必要があります。同じリージョンであればリソースグループは異なっていても関連付けることができます。
パブリックIP をAzure CLI で作成する場合、以下のようなコマンドとなります。
# StandardのパブリックIPアドレスを作成する
az network public-ip create \
-g test-rg \
-n test-standardip \
-l japaneast \
--version IPv4 \
--sku Standard \
--tier Regional \
--allocation-method Static \
--dns-name test-standardip \
--idle-timeout 4 \
-z 2
各種オプションの意味は以下の通りです。
-g, --resource-group | パブリックIP アドレスのリソースグループを設定する。 |
---|---|
-n, --name | リソース名を設定する。 |
-l, --location | パブリックIP アドレスのリージョンを設定する。 |
--version | IP アドレスの種類を設定する。IPv4 かIPv6 を指定できる。 |
--sku | パブリックIP アドレスのSKU を設定する。Basic かStandard を指定できる。 |
--tier | パブリックIP アドレスをリージョン間で使用するかどうかを設定する。リージョン間のロードバランサーを使用する際はGlobal、リージョン間を使用しなければRegional を指定する。Global はStandard のみ設定可能。 |
--allocation-method | IP アドレスの割り当て方法を設定する。静的であればStatic、動的であればDynamic を指定する。動的はBasic のみ設定可能。 |
--dns-name | DNS ラベルを設定する。 |
--idle-timeout | アイドルタイムアウトの時間を設定する。4 から30 の間で指定できる。 |
-z, --zone | パブリックIP アドレスで展開する可用性ゾーンを設定する。Standard のみ設定可能 |
パブリックIP アドレスプレフィックス
パブリックIP アドレスプレフィックスは、Azure リージョンに割り当てられたパブリックIP アドレスのプレフィックス単位で確保できるサービスです。単体のパブリックIP アドレスではIP アドレスがまとまらず、NSG やFirewall などIP アドレスを使用する際に何かと不便です。パブリックIP アドレスプレフィックスを使用することで、連続したプレフィックスのパブリックIP アドレスを確保できるため、IP アドレス範囲を設定する際に設定を簡素化できます。パブリックIP アドレスプレフィックスではIPv4、IPv6 いずれも使用可能であり、IPv4 では /28 ~ /31 、IPv6 では /124 ~ /127 で指定できます。また、SKU に関してはStandard のみ使用可能となります。
パブリックIP アドレスプレフィックスからパブリックIP を割り当てを行うと、プレフィックスのIP アドレス空間内からパブリックIP アドレスが作成されます。割り当て中のパブリックIP アドレスは削除しなければ再利用も可能です。また、可用性ゾーンを設定することで、割り当て中のパブリックIP アドレスに可用性ゾーンを適用できます。
パブリックIP アドレスプレフィックスは、作成後にIP アドレス空間を変更できないため、別のIP アドレス空間を利用したい場合は再作成が必要となります。
パブリックIP アドレスプレフィックスは以下のようなサービスに関連付けることができます。
- 仮想マシン
- 標準ロードバランサー
- Azure Firewall
- VPN ゲートウェイ
- アプリケーションゲートウェイ
また、特定のリソースではパブリックIP アドレスプレフィックスを直接関連付けることもできます。
- 仮想マシンスケールセット
- 標準ロードバランサー
- NAT Gateway
パブリックIP アドレスプレフィックスもパブリックIP アドレス同様に同じリージョンでのみ関連付けなどができます。同じリージョンであればリソースグループは異なっていても関連付けることができます。
パブリックIP アドレスのプレフィックスをAzure CLI で作成する場合、以下のようなコマンドとなります。
# /32のパブリックIPアドレスのプレフィックスを作成する
az network public-ip prefix create \
--length 32 \
-n test-ipprefix \
-g test-rg \
-l japaneast \
--version IPv4 \
--zone 2
各種オプションの意味は以下の通りです。
-g, --resource-group | パブリックIP アドレスプレフィックスのリソースグループを設定する。 |
---|---|
-n, --name | リソース名を設定する。 |
-l, --location | パブリックIP アドレスプレフィックスのリージョンを設定する。 |
--length | プレフィックスのサイズを設定する。 |
--version | IP アドレスの種類を設定する。IPv4 かIPv6 を指定する。 |
-z, --zone | パブリックIP アドレスプレフィックスの可用性ゾーンを設定する。 |
カスタムIP プレフィックス
カスタムIP プレフィックスは外部のIP アドレスのプレフィックスをAzure 内の公開やリソースへの関連付けを行うことができるサービスです。外部で公開しているIP アドレス空間をAzure のIP アドレスとして利用したい場合にこのサービスを使用します。カスタムIP プレフィックスを設定するには、証明書を使用した署名付きメッセージの認証が必要となります。検証であれば自己署名証明書でも問題ありません。
カスタムIP プレフィックスをAzure CLI で作成する場合、以下のようなコマンドとなります。カスタムIP アドレスを作成する前にPowerShell を使用し署名付きメッセージの作成を行います。
# X509証明書を作成する
./openssl genrsa -out testprivate.key 2048
Set-Content -Path testpublickey.cer (./openssl req -new -x509 -key testprivate.key -days 360) -NoNewline
# 署名付きメッセージを作成する
$testauth="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|1.2.3.0/24|yyyymmdd"
Set-Content -Path testauth.txt -Value $testauth -NoNewline
./openssl dgst -sha256 -sign testprivate.key -keyform PEM -out testauthsigned.txt testauth.txt
$testauthsigned=(./openssl enc -base64 -in testauthsigned.txt) -join ''
# 署名付きメッセージを表示する
$testauthsigned
署名付きメッセージを作成後、カスタムIP プレフィックスを作成するコマンドは以下のようなコマンドとなります。
# 署名付きメッセージを変数に設定する
testauth="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx|1.2.3.0/24|yyyymmdd"
testauthsigned="<PowerShellで作成した署名付きメッセージ>"
# カスタムIPプレフィックスを作成する
az network custom-ip prefix create \
-n test-customip \
-g test-rg \
-l japaneast \
--cidr '1.2.3.0/24' \
--zone 1 2 3 \
--authorization-message $testauth \
--signed-message $testauthsigned
各種オプションの意味は以下の通りです。
-g, --resource-group | カスタムIP プレフィックスのリソースグループを設定する。 |
---|---|
-n, --name | リソース名を設定する。 |
-l, --location | カスタムIP プレフィックスのリージョンを設定する。 |
--cidr | CIDR のプレフィックスを設定する。開始するアドレスとプレフィックスを指定する。 |
-z, --zone | カスタムIP プレフィックスの可用性ゾーンを設定する。 |
--authorization-message | WAN 検証の承認メッセージを設定する。 |
--signed-message | WAN 検証用の署名付きメッセージを設定する。 |
Virtual Network IP サービスの料金
パブリックIP サービスはARM やASM デプロイモデルの予約済みIP アドレスを除き、関連付けられたリソースが開始した時点から時間単位で課金されます。関連付けられたリソースの削除またはリソースの停止かつパブリックIP の関連付けを解除した時に課金が停止されます。詳細な料金表については以下URL を参照してください。
Virtual Network IP サービスの制限
パブリックIP アドレスは1つのサブスクリプションごとに最大10個まで作成できます。異なるSKU を使用したとしても、パブリックIP アドレスの合計で扱われます。また、パブリックIP アドレスのプレフィックスは最大 /28 まで作成でき、IP アドレスの数はプレフィックス内のStandard パブリックIP アドレスの数で制限されます。上限より多く使用したい場合は上限緩和のリクエストが必要となります。
まとめ
- Azure Virtual IP サービスはAzure 仮想ネットワークや各種リソースにグローバルから通信を行うために利用する。
- パブリックIP アドレスはBasic とStandard のSKU がある。SKU によって利用できる機能が異なる。
- パブリックIP アドレスは同じリージョンのリソースにのみ関連付けられる。リージョンが同じであれば異なるリソースグループでも利用可能。
- パブリックIP アドレスプレフィックスはまとまったパブリックIP アドレス空間を使用したい際に利用する。
- カスタムIP プレフィックスは外部のグローバルIP アドレスのプレフィックスをAzure 内のIP アドレスとして利用する。