「サブネットを何個作るべきか、どう分割すればいいか判断軸がない」
そんな悩みを持つ方に向けて、この記事ではBicepを使ってAzure仮想ネットワーク作成のCIDR設計とサブネット割り当てを実践的に解説します。
コアキーワードは「azure 仮想ネットワーク作成」。Bicepのコードを中心に、構築ハンズオンと設計の判断軸の両方をまとめました。
想定環境はAzure CLI(az version 2.60以降)とBicep CLI(0.28以降)が使えるLinux環境です。
この記事のポイント
・Azure仮想ネットワーク作成にはCIDRの設計が先で、あとから変更できない
・Bicepでmain.bicepを書けば、同じVNet構成を何度でも再現できる
・Web層・管理層・DB層の3サブネット分割がよく使われる基本パターン
・az deployment group createで1コマンドデプロイができ、ファイルが構成書になる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure仮想ネットワークのCIDR設計でつまずく理由
あなたがAzureで初めてVNet(仮想ネットワーク)を作るとき、まず「アドレス空間に何を入れればいいか」で止まることが多いと思います。Azureのポータル画面には「アドレス空間」という入力欄があり、そこに「10.0.0.0/16」のようなCIDR表記を入れます。
問題は「このCIDRをどう選べばいいか」の判断軸が、公式ドキュメントだけでは掴みにくい点です。
さらにAzure仮想ネットワークのアドレス空間は、作成後に後から大きくする変更ができません。
サブネットを追加することはできますが、VNet全体のアドレス空間を変更するにはVNetごと作り直しが必要になります。
この制約を知らずに小さなCIDRで作ると、後でサブネットが追加できなくなって詰まります。
Bicepを使えば、CIDRとサブネットの設計をコードとして記録できます。
設計変更があってもファイルを書き換えて再デプロイすればよく、構成書とコードが一致した状態を維持できます。
Bicepで仮想ネットワークを定義するファイル構成
BicepはAzureのIaC(Infrastructure as Code)ツールです。ARMテンプレートより読みやすいJSON代替として設計されており、`az deployment group create`コマンドで直接デプロイできます。
仮想ネットワークをBicepで管理するメリットは次のとおりです。
・CIDRやサブネット名を変数として一覧管理できる
・ファイルがそのまま設計書として機能する
・gitで変更履歴を残せる
この記事では1ファイル構成で進めます。
# ファイル構成 ./ └── main.bicep # VNetとサブネットの定義
1. main.bicepの基本形を作る
Bicepでは`resource`キーワードを使ってAzureリソースを定義します。VNetのリソースタイプは`Microsoft.Network/virtualNetworks`です。
まず、パラメーターと変数を定義します。
// main.bicep param location string = resourceGroup().location param vnetName string = 'vnet-prod-eastjapan' var vnetAddressPrefix = '10.1.0.0/16' var subnetWeb = '10.1.1.0/24' var subnetAdmin = '10.1.2.0/24' var subnetDb = '10.1.10.0/24'
CIDRを変数にまとめておくと、変更が一か所で済みます。
2. VNetリソースのCIDR指定
変数を使ってVNetリソースを定義します。resource vnet 'Microsoft.Network/virtualNetworks@2023-04-01' = { name: vnetName location: location properties: { addressSpace: { addressPrefixes: [ vnetAddressPrefix // 10.1.0.0/16 ] } subnets: [ { name: 'subnet-web' properties: { addressPrefix: subnetWeb // 10.1.1.0/24 } } { name: 'subnet-admin' properties: { addressPrefix: subnetAdmin // 10.1.2.0/24 } } { name: 'subnet-db' properties: { addressPrefix: subnetDb // 10.1.10.0/24 } } ] } }
サブネットのCIDRはVNetのCIDR(10.1.0.0/16)の範囲に収まる必要があります。
3. サブネットの分割と命名規則
サブネット名は後から変更しにくいため、最初に命名規則を決めておくことを推奨します。よく使われる命名規則の例です。
・`subnet-web`:公開Webサーバー層
・`subnet-admin`:踏み台・管理用途
・`subnet-db`:データベース層(プライベート)
Azureは各サブネットで先頭5つのIPアドレスをシステムが予約します。
つまり`/24`(254アドレス)でも、実際に使えるのは249アドレスです。
この点を踏まえてサブネットのサイズを設計してください。
Bicepを活用したAzure環境構築の基礎や応用については、Azure実践ハンズオン学習サイトもあわせて参照してください。
Azure仮想ネットワーク作成のデプロイ手順
Bicepファイルが完成したら、Azure CLIを使ってデプロイします。作業前にAzure CLIでログイン済みであることを確認してください。
1. リソースグループを用意する
VNetを作成するリソースグループを先に作ります。# リソースグループを作成する az group create \ --name rg-vnet-sample \ --location japaneast
{ "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/rg-vnet-sample", "location": "japaneast", "name": "rg-vnet-sample", "properties": { "provisioningState": "Succeeded" }, "type": "Microsoft.Resources/resourceGroups" }
2. az deployment group createでデプロイする
Bicepファイルを指定してデプロイします。# Bicepをデプロイする az deployment group create \ --resource-group rg-vnet-sample \ --template-file main.bicep \ --mode Incremental
デプロイ完了後の出力例(環境により異なります):
{ "id": "/subscriptions/xxxxxxxx/resourceGroups/rg-vnet-sample/...", "name": "main", "properties": { "provisioningState": "Succeeded", ... } }
3. 作成結果をazコマンドで確認する
デプロイ後は`az network vnet show`で内容を確認します。# VNetの作成結果を確認する az network vnet show \ --resource-group rg-vnet-sample \ --name vnet-prod-eastjapan \ --query '{name:name, addressSpace:addressSpace.addressPrefixes, subnets:subnets[].{name:name,prefix:addressPrefix}}' \ --output json
{ "addressSpace": ["10.1.0.0/16"], "name": "vnet-prod-eastjapan", "subnets": [ {"name": "subnet-web", "prefix": "10.1.1.0/24"}, {"name": "subnet-admin", "prefix": "10.1.2.0/24"}, {"name": "subnet-db", "prefix": "10.1.10.0/24"} ] }
CIDRサブネット割り当ての設計パターン
Azure仮想ネットワーク作成時のCIDR設計には、いくつかの定番パターンがあります。| 規模感 | VNetのCIDR | サブネットの目安 | 用途例 |
|---|---|---|---|
| 小規模 | 10.0.0.0/24 | /27(30アドレス) | 開発・検証の1環境に数台のVM |
| 中規模 | 10.1.0.0/22 | /24(254アドレス) | 本番・検証を同一VNetに収める構成 |
| 大規模 | 10.1.0.0/16 | /24(最大254個) | 将来のVNetピアリング・他リージョン接続を見越した設計 |
VNetのアドレス空間はあとから大きくするには作り直しが必要なため、小さくしすぎると後で困ります。
また、オンプレミス環境やVPNゲートウェイと接続する予定がある場合は、既存のオンプレミス側のCIDRと重複しないようにしてください。
CIDRが重複すると、VNetピアリングやVPN接続で通信できなくなります。
Bicepであれば、CIDRを変数として一か所にまとめているため、設計変更がある場合に変数だけ書き換えて再デプロイできます。
トラブルシュート|よくあるエラーと対処法
「Subnet address prefix overlaps with another subnet」
サブネットのCIDRが重複しているときに出るエラーです。# エラー例(環境により異なります) ERROR: Code=SubnetAddressPrefixOverlaps Message: Subnet 'subnet-db' address prefix 10.1.1.0/24 overlaps with other subnets in virtual network 'vnet-prod-eastjapan'.
`subnet-web`が`10.1.1.0/24`なら、`subnet-db`は`10.1.10.0/24`のように異なる範囲を指定します。
「VNet address space is too small」
サブネットのCIDRがVNetのアドレス空間に収まっていないエラーです。VNetを`10.1.0.0/24`にしてサブネットを`10.1.1.0/24`にすると、範囲外になってエラーが出ます。
VNetのCIDRをサブネットより広い範囲(`/22`や`/16`)に設定し直してください。
「Bicep build error: Expected a character」
Bicepファイルの文法エラーです。`bicep build`コマンドで事前に構文チェックができます。
# Bicepの構文チェックを実行する bicep build main.bicep
エラーがあれば行番号とメッセージが表示されるので、該当箇所を修正してください。
本記事のまとめ
Azure仮想ネットワーク作成のCIDRとサブネット割り当てをBicepで管理する手順を解説しました。| やりたいこと | Bicepの書き方・コマンド |
|---|---|
| VNet全体のCIDRを定義する | addressSpace.addressPrefixes: ['10.1.0.0/16'] |
| サブネットを追加する | subnets配列にname/addressPrefixを追加 |
| Bicepをデプロイする | az deployment group create --template-file main.bicep |
| VNetの設定を確認する | az network vnet show --query subnets |
| Bicepの構文チェックをする | bicep build main.bicep |
同じ構成を別の環境にも確実に再現できるため、開発・検証・本番の3環境管理にも効果的です。
VNetのアドレス空間はあとから変更しにくいため、最初の設計で広めに取っておくことが重要です。
Azureを含むクラウド環境でのLinux実践スキルは、【初心者向けLinuxセミナー(2日間ハンズオン)】で体系的に学べます。
>>Azure実践ハンズオンの詳細はこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Azure Private Link Serviceのサブスクリプション間接続|コンシューマー承認をazで実行
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます