Azure 第18回『やってみようシリーズ:Azure 仮想ネットワークを作成してみた』

Azure の仮想ネットワーク機能

Microsoft Azure の IaaS(Infrastructure as a Service)サービスの機能においてネットワーク インフラストラクチャを構成する重要な要素として仮想ネットワーク(Virtual Network、VNet)があります。
仮想ネットワークは IaaS のコンピューティングやネットワークアプライアンス、インターネットへのゲートウェイ、着信接続ゲートウェイなどインフラストラクチャを構成するあらゆるものが接続される仮想的なネットワークです。
この記事では Azure 仮想ネットワークの概念や構成、利用方法について紹介していきます。

  • Azure の仮想ネットワークでは主に IPv4 アドレスが利用されています。そのため以下の記載では特に断りが無い限り「IP アドレス」は IPv4 アドレスを指します。

仮想ネットワークとは

仮想ネットワークとは Azure クラウド内のユーザー独自のネットワークです。オンプレミスのデータセンターで運用されている従来のネットワークや SDN(Software Defined Networking)と同じような機能を持っており、Azure の仮想インフラストラクチャを構成する仮想マシン、ロードバランサーなどのアプライアンス、VPN 接続のためのゲートウェイなどすべてのリソースが仮想ネットワークに接続されます。
1つのサブスクリプションで1リージョンあたり、最大1,000 個の仮想ネットワークが作成できます。

仮想ネットワーク全般についての詳しい情報は以下を参照してください。

仮想ネットワークの価格

仮想ネットワークの作成および利用は無料です。同じ仮想ネットワーク内のリソース間の通信トラフィックも無料です。
仮想ネットワーク関連で費用が発生するのは以下のようなものです。

  • 仮想ネットワーク間の接続によるデータ転送
  • 仮想ネットワークからインターネットへのデータ転送
  • 仮想ネットワーク内に設置するアプライアンス(ロードバランサーや仮想ネットワークゲートウェイなど)の利用

利用可能な IP アドレス空間

論理的には、仮想ネットワークは1つ以上の IP アドレス空間の集合です。
仮想ネットワークに設定できる IP アドレス空間としては RFC 1918 で定められている以下のプライベート IP アドレス空間が推奨されています。

  • 10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
  • 172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
  • 192.168.0.0 ~ 192.168.255.255 (192.168/16 プレフィックス)
    また RFC 6598 で予約されている以下の共有アドレス空間も設定できます。
  • 100.64.0.0 ~ 100.127.255.255 (100.64/10 プレフィックス)

その他のアドレス空間も仮想ネットワークで機能する可能性がありますが、望ましくない副作用が発生する可能性があるため推奨されていません。

以下のアドレス範囲は設定できません。

  • 224.0.0.0/4 (マルチキャスト)
  • 255.255.255.255/32 (ブロードキャスト)
  • 127.0.0.0/8 (ループバック)
  • 169.254.0.0/16 (リンクローカル)
  • 168.63.129.16/32 (Azure 内部で使用)

なお、仮想ネットワークに IPv6 アドレス空間を追加して、仮想ネットワーク内で IPv6 アプリケーションや IPv6 サービスをホストすることも可能です。

アドレス空間の変更

仮想ネットワークのアドレス空間や範囲を追加したり拡張・縮小したりできます。アドレス空間を縮小する場合は、関連付けられているサブネットの範囲が含まれている範囲にまでは縮小できます。/16 を /8 に変更するなど、アドレス範囲を拡張することもできます。

IPアドレスの構成

仮想ネットワーク内の IP アドレスの構成について解説します。

IPアドレスの利用

IPアドレス空間は一般的なオンプレミスのネットワークとほぼ同じように構成できますが、仮想マシンやアプライアンスなどを仮想ネットワークに接続して IP アドレスを利用する際には、いくつかの制限があります。

  • サブネットの利用

    仮想ネットワークでは必ずサブネットを構成します。仮想マシンやアプライアンスなどのリソースはいずれかのサブネットに接続させる必要があります。サブネットなしでの IP アドレスの利用と仮想ネットワークへの接続は行えません。
    サブネットの範囲は仮想ネットワークの IP アドレス空間内で一意である必要があります。仮想ネットワーク内の他のサブネット アドレス範囲と重複することはできません。
    アドレス空間は、Classless Inter-Domain Routing (CIDR) 表記で指定します。
    1つの仮想ネットワーク内に、最大 3,000 個のサブネットを作成できます。

  • サブネットで利用できる IP アドレス数

    TCP/IP プロトコルの規定でサブネットの最初と最後の IP アドレスはネットワークアドレスとブロードキャストアドレスとして予約されますが、仮想ネットワークではそれ以外に3個の IP アドレスが Azure サービスのために利用されます。
    そのため、例えば 10.0.0.0/28 のサブネットでは 16 個の IP アドレスが割り当てられますが、先頭(10.0.0.0)はネットワークアドレス、最後(10.0.0.15)はブロードキャストアドレスとして予約される他、Azure サービスが3個(通常は先頭に続く3個)の IP アドレスを使用しますので、サブネットで接続に利用できる IP アドレスは 11 個(通常は 10.0.0.4から 10.0.0.14 まで)になります。
    なおこの制限のため、サブネットの最小範囲は /29(3個の IP アドレスが使用可能)です。

サブネット作成時の注意

サブネットのアドレス範囲は、サブネットにリソースが1つも接続されていない場合にのみ変更できます。サブネットにリソースが接続されている場合、まず、そのリソースを別のサブネットに移動するか、サブネットから削除しないとアドレス範囲を変更できません。 仮想ネットワーク内に仮想ネットワークゲートウェイなどのアプライアンスを設置する場合など、専用のサブネットが必要になる場合があります。このため仮想ネットワークのアドレス空間を仮想マシンが接続するサブネットで埋めてしまうと、仮想ネットワークゲートウェイなどが設置できなくなります。この場合はサブネットのアドレス範囲の変更が必要になります。 サブネット作成時には、接続する予定のリソースの数をよく検討して、過不足のないアドレス範囲を設定するように注意してください。

リソースへの IP アドレスの割り当て

仮想ネットワークに接続している仮想マシンネットワークアダプターなどのリソースへの IP アドレスの割り当ては、DHCP による自動構成が推奨されています。必要がない限り、仮想マシンのオペレーティング システム内のネットワークインターフェースの IP アドレスを手動で設定しないでください。

  • IP アドレスを手動で設定する必要があるのは、仮想マシンに複数の IP アドレスを追加する場合などです。この場合の手順については以下を参照してください。

仮想ネットワークには専用の Azure DHCP サーバーが接続されます。この DHCP サーバーからリソースに対して接続しているサブネットに対応したプライベート IP アドレス・サブネットマスク・デフォルトゲートウェイ・DNS サーバー情報などの TCP/IP 構成情報が提供されます。この構成情報が適用されることで、仮想ネットワーク内のリソースは仮想ネットワーク内の他のリソースや Azure サービス、インターネットに適切にアクセスできるようになります。

仮想ネットワークの通信

仮想ネットワークから/仮想ネットワークへの通信がどのように行われるかを解説します。

仮想ネットワークへの着信接続

仮想ネットワークに割り当てられた IP アドレス範囲には、

  • 同じ仮想ネットワーク内
  • 相互接続された仮想ネットワーク
  • 仮想ネットワークに接続したオンプレミス ネットワーク

のいずれかからのみ到達できます。仮想ネットワークにグローバル IP アドレスの範囲を割り当てても、その IP アドレスに対してインターネットから着信させることはできません。
仮想ネットワーク内の IP アドレス範囲にインターネットから着信接続させるには、リソースに対してパブリック IP アドレスを割り当てる必要があります。

パブリック IP アドレスは仮想ネットワークやサブネットに対してではなく、サブネットに接続されているリソース単位で割り当てることに注意してください。仮想ネットワーク内に着信接続を行いたいリソースが 10 個あれば、パブリック IP アドレスも 10 個必要です。
同じ仮想ネットワーク内のリソースで、着信接続に利用するグローバル IP アドレスを集約したい場合は、ロードバランサーなどの利用が必要です。

パブリックIPアドレス

仮想ネットワーク内のリソース(仮想マシン、ロードバランサー、仮想ネットワークゲートウェイなど)に対してインターネットから着信接続できるようにするには、パブリック IP アドレスを利用します。
パブリック IP アドレスは、独自のプロパティを持つリソースで、次のリソースに関連付けることができます。パブリック IP アドレスを関連付けられたリソースは、パブリック IP アドレスに割り当てられた IP アドレスを利用して、インターネットからの着信接続を受け付けることができます。

  • 仮想マシン ネットワーク インターフェイス
  • Virtual Machine Scale Sets
  • パブリック ロード バランサー
  • Virtual Network ゲートウェイ (VPN または ER)
  • NAT ゲートウェイ
  • Application Gateway
  • Azure ファイアウォール
  • bastion ホスト
  • ルート サーバー

パブリック IP アドレスは、利用時間に対して従量課金される有償のサービスです。インターネットからの着信接続の必要が無い場合は、リソースにパブリック IP アドレスを割り当てる必要はありません。

パブリック IP アドレスに実際に割り振られるグローバル IP アドレスは通常 Azure サービスから提供されます。この場合、パブリック IP アドレス リソースに割り当てられる実際の IP アドレスは指定できません。 リソースが作成される Azureのリージョンで使用可能な IP アドレスのプールから IP アドレスが割り当てられます。

Bring your own IP(BYOIP)

ユーザーが利用可能なグローバル IPv4 アドレス ブロックを所有している場合は、その IP アドレスを Azure に持ち込みできます(BYOIP)。持ち込んだ IP アドレスをパブリック IP アドレスとしてユーザーのリソースに割り当て可能です。この場合はパブリック IP アドレスの利用に料金がかかりません。
BYOIP について詳しくは、以下の記事を参照してください。

仮想ネットワークのルーティングとインターネットアクセス

仮想ネットワークのサブネットには自動的に「システムルート」が作成され、ネットワークトラフィックのルーティングが行われます。システムルートは以下のように動作します。

  • 仮想ネットワーク内のサブネット間のルーティングは自動的に行われる
  • Azure サービスの IP アドレスは Azure バックボーンネットワークにルーティングされる
  • それ以外の IP アドレスはインターネットにルーティングされる

この動作により、仮想ネットワーク内のリソース間は、特別な設定・構成なしに通信が可能となり、また仮想ネットワーク内のリソースからのインターネットアクセスも可能になります。

システムルートのオーバーライド

カスタムルートを作成してサブネットに割り当てることで、システムルートをオーバーライドできます。システムルートの動作以外のルーティングを行いたい場合は、カスタムルートを作成してください。

仮想ネットワークのルーティングとカスタムルートについての詳細は、以下を参照してください。

仮想マシンの仮想ネットワークインターフェースにパブリック IP アドレスが割り当てられておらず、ロードバランサーなどのゲートウェイを経由する構成にもなっていない場合、仮想マシンの仮想ネットワークインターフェースには既定の送信パブリック IP アドレスが割り当てられます。この送信パブリック IP アドレスは動的に割り当てられ、ユーザーが構成することはできませんが、利用に料金は発生しません。
送信パブリック IP アドレスとシステムルートの機能により、仮想マシンは明示的に制限を構成しない限りインターネットアクセス(送信接続)が可能です。仮想マシンからのインターネットアクセスを無効にしたい場合は、以下のいずれかの方法を採ってください。

  • ネットワークセキュリティグループで明示的に禁止する
  • カスタムルートでインターネットへのトラフィックを破棄する
  • 仮想マシンをゲートウェイアプライアンス(ロードバランサーなど)の背後に設置して、ゲートウェイでアクセスをブロックする

仮想ネットワークの名前解決(DNS)

仮想ネットワークでは、名前解決の基本的な機能を持つ権威 DNS サーバーが提供されます。この DNSサーバーではインターネットアクセスに必要なパブリック DNS 名の解決だけでなく、同じ仮想ネットワーク内の仮想マシンの名前解決も提供します。仮想ネットワークでは DHCP によって DNS サフィックスも提供されるため、FQDN ではなくホスト名のみでの名前解決が可能になっています。
Azure 提供の名前解決はユーザー側での構成は必要なく、仮想ネットワークを作成するだけで利用可能です。また Azure サービスによって管理されているので高い可用性が確保できます。ただしユーザーが DNS ゾーン名や DNS レコードのライフサイクルを制御することはできません。
こうした制御を含むユーザー構成可能な DNS が必要な場合は、以下のようなソリューションを利用できます。

なお Azure 提供の名前解決の DNS IP アドレスは 168.63.129.16 です。このアドレスは静的な IP アドレスであり、変更不可です。

仮想ネットワークの作成

仮想ネットワークは仮想マシンなどのリソースの作成途中でも新規作成できますが、仮想ネットワークを単独で新規作成するには以下の手順に従ってください。

  1. Azure ポータルにアクセスします。
  2. [その他のサービス] をクリックします。
    [すべてのサービス] 画面で左のナビゲーションから [ネットワーキング] を選択し、[仮想ネットワーク] の [+ 作成] をクリックします。
  3. 次の画面で [作成] をクリックします。
  4. 作成画面が表示されます。サブスクリプションを選択し、リソースグループを既存の物から選択するか、新規作成します。
    仮想ネットワークの名前を入力し、仮想ネットワークをデプロイするリージョンを選択します。
    すべてできたら画面下の [次:IP アドレス] をクリックします。
  5. 仮想ネットワークに割り当てる IP アドレス空間を指定します。CIDR 表記で入力してください。
    続けてサブネットを構成します。既定で default というサブネットが設定されていますが、これを削除して別に作成したり、編集して利用したりできます。サブネットは必要に応じて複数作成できます。
    サブネットの構成ができたら、画面下の [次:セキュリティ] をクリックします。
  6. 仮想ネットワークのセキュリティに関する追加機能が設定できます。
    いずれも後から構成可能です。ここではそのまま画面下の [次:タグ] をクリックします。
  7. 必要に応じて仮想ネットワークにタグを付け、[次:確認および作成] をクリックします。
  8. [検証に成功しました] と表示され、表示されている構成に問題が無ければ、[作成] をクリックします。
  9. しばらくするとデプロイが完了します。
    [リソースに移動] をクリックします。
  10. 以上で仮想ネットワークが作成できました。

仮想ネットワークと外部との接続

仮想ネットワークは、別の仮想ネットワーク、オンプレミスのネットワーク、Azure の PaaS サービスと接続して通信することができます。

仮想ネットワークのピアリング

2つの仮想ネットワークを接続して、仮想ネットワーク間で通信を行うことができます。この機能を「ピアリング」と呼びます。ピアリングされた2つの仮想ネットワーク間では、相手の仮想ネットワークへの通信は自動的にルーティングされ、相手の仮想ネットワーク内の IP アドレスに到達できます。
(ピアリングする仮想ネットワーク間で IP アドレス空間が重複していない必要があります。)
2つの仮想ネットワークが異なるリージョン、異なるサブスクリプションであってもピアリングで接続することが可能です。

仮想ネットワーク ピアリングで相手の仮想ネットワークに送信されるトラフィックはすべて Azure のバックボーンネットワークを経由します。そのため地理的に離れたリージョンのサブネット間でも待ち時間の短い広帯域幅の接続が可能となります。

以下の図では VNet A と VNet B がピアリングされているので、それぞれの仮想ネットワーク内の IP アドレスは相互に到達可能です。

ただし仮想ネットワークピアリングは推移的には機能しません。つまり以下のようなピアリングが構成されている場合、「VNet A と VNet B」、「VNet B と VNet C」は相互に通信できますが、「VNet A と VNet C」は通信できません。

VNet A と VNet C を通信可能にするには、下図のようにこの両者間にもピアリングを構成します。

このように3つ以上の仮想ネットワーク間で相互に通信可能にするには、メッシュ構成のピアリングを作成する必要があります。

仮想ネットワーク ピアリングは以下の手順で作成できます。

  • 同じサブスクリプションの仮想ネットワーク同士の場合の手順です。
  1. Azure ポータルでピアリングするいずれかの仮想ネットワークのページを開きます。
  2. 左のナビゲーションから [ピアリング] を選択します。
  3. [追加] をクリックします。
  4. [この仮想ネットワーク] と [リモート仮想ネットワーク] のそれぞれの [ピアリングリンク名] を入力します。
    [リモート仮想ネットワーク] の [仮想ネットワーク] で、ピアリングする相手の仮想ネットワークを選択します。
  5. その他のオプションは変更せず既定のままにして、[追加] をクリックします。
  6. 仮想ネットワークピアリングが構成されました。
  7. しばらくすると、[ピアリング状態] が [接続済み] に変わります。これで仮想ネットワーク間の通信が可能になりました。

仮想ネットワークゲートウェイ

仮想ネットワークゲートウェイは仮想ネットワークに設置できる VPN ゲートウェイ装置です。仮想ネットワークゲートウェイに割り当てられたパブリック IP アドレスに対して VPN 接続することで、オンプレミスのネットワークからのサイト対サイト VPN 接続(S2S VPN)や、クライアントからのポイント対サイト VPN 接続(P2S VPN)が行えます。また専用線接続(Express Route)でのオンプレミス ネットワークとの接続も可能です。

仮想ネットワークゲートウェイは仮想ネットワーク内の専用のサブネット(ゲートウェイサブネット)に接続させる必要があります。ゲートウェイサブネットは "GatewaySubnet" という名前である必要があります。またゲートウェイサブネットに仮想ネットワークゲートウェイ以外のリソースを接続できません。

仮想ネットワークゲートウェイについて詳しくは、以下の記事を参照してください。

仮想ネットワークゲートウェイは以下の手順で作成できます。
詳細な作成手順については下記記事を参照してください。

  1. Azureポータルにアクセスします。
  2. [その他のサービス] をクリックします。
    [すべてのサービス] 画面で左のナビゲーションから [ネットワーキング] を選択し、[仮想ネットワークゲートウェイ] の [+ 作成] をクリックします。
  3. [仮想ネットワークゲートウェイの作成] で、サブスクリプションを選択し、仮想ネットワークゲートウェイの名前を付けます。リージョン(地域)では仮想ネットワークゲートウェイを設置する仮想ネットワークがあるリージョンを選択します。
    SKU では仮想ネットワークゲートウェイのサイズ(性能)を選択します。SKU と世代については下記を参照してください。

    仮想ネットワークを選択すると、ゲートウェイサブネットのアドレス範囲も自動的に設定されます。

  4. 仮想ネットワークゲートウェイに割り当てるパブリック IP アドレスを構成します。新規作成する場合は名前を入力します。
    仮想ネットワークゲートウェイの SKU で AZ が付いているもの(VpnGw1AZ など)を選択した場合は、可用性ゾーンの構成を選択します。仮想ネットワークゲートウェイのゾーン冗長について詳しくは「Azure Availability Zones でのゾーン冗長仮想ネットワーク ゲートウェイについて - Azure VPN Gateway | Microsoft Learn」を参照してください。

    [アクティブ/アクティブモードの有効化] を有効にすると、高可用性のための2番目のパブリック IP アドレスの指定ができます。アクティブ/アクティブモードについて詳しくは「アクティブ/アクティブ S2S VPN 接続を構成する - Azure VPN Gateway | Microsoft Learn」を参照してください。

  5. すべて指定できたら [確認および作成] をクリックします。
  6. [検証に成功しました] と表示され、表示されている構成に問題が無ければ、[作成] をクリックします。
  7. 仮想ネットワークゲートウェイのデプロイが開始されます。
    仮想ネットワークゲートウェイのデプロイには時間がかかります。
  8. しばらくするとデプロイが完了します。
    [リソースに移動] をクリックします。
  9. 以上で仮想ネットワークゲートウェイが作成できました。

作成した仮想ネットワークゲートウェイに対してオンプレミスネットワークやクライアントから VPN 接続する方法については、以下の記事を参照してください。検証済みの VPN ルーターを利用すれば、簡単な操作で接続可能です。

PaaS サービスと仮想ネットワークの接続

Azure では数多くの PaaS サービスが提供されています。こうした PaaS のサービスが仮想ネットワークの中で実行されているように取り扱える仕組みが用意されています。その仕組みとして、Private Link とサービスエンドポイントを簡単に紹介します。

Private Link

Private Link は Azure の PaaS に用意されている仮想ネットワーク専用の接続口です。インターネット(グローバル IP アドレス)を使わずに仮想ネットワークから PaaS のサービスにアクセスすることができます。
Private Link を利用するには、仮想ネットワーク内にプライベートエンドポイントという Azure PaaSサービス用の特別なネットワークインターフェースを設置します。このネットワークインターフェースは仮想ネットワーク内の他のリソースからは、あたかも Azure PaaS サービスに直接接続されているように見えます。プライベートエンドポイントに割り当てられたプライベート IP アドレスを経由して、仮想ネットワークから Azure PaaS サービスにアクセスできます。もちろんピアリングしている他の仮想ネットワークからもアクセス可能です。

さらに上の図のように、仮想ネットワークゲートウェイを経由して接続しているオンプレミスのネットワークからも、プライベートエンドポイントの IP アドレスにアクセスできます。
これにより、Azure PaaS サービスをあたかもイントラネットの中で実行しているかのように取り扱うことが可能になります。インターネット経由でのアクセスに比べて信頼性や速度、機密性などで大きなメリットがあります。
Private Link について詳しくは、以下の記事を参照してください。

サービスエンドポイント

サービスエンドポイントも同じように仮想ネットワークから Azure PaaS サービスに直接接続できる仕組みですが、Private Link とこの機能を有効にしたサブネット内のリソースからプライベート IP アドレスのままで PaaS サービスのパブリック IP アドレスに接続可能にする仕掛けです。

PaaS サービスに直接アクセスできるのは特定のサブネットのプライベート IP アドレスを持つリソースに限られますので、Private Link と異なりオンプレミスのネットワークやピアリングしている他の仮想ネットワークからサービスエンドポイントを利用することはできません。
サービスエンドポイントについて詳しくは、以下の記事を参照してください。

Private Link とサービスエンドポイントの違いについて詳しくは、以下の記事を参照してください。

まとめ

仮想ネットワークは Azure の IaaS を利用する際の重要な基盤となる要素です。ルーティングや名前解決の機能が Azure 側から提供されるので短時間で簡単に利用を開始できます。その一方でルーティングや名前解決、オンプレミス ネットワークとの接続をユーザーが構築して制御することも可能なので、オンプレミスネットワークと同等の構成も行えます。
また仮想ネットワークゲートウェイと Private Link を利用すると Azure の PaaS で提供されているデータベースや Web アプリケーションなどのサービスをイントラネット内で完結する形で(インターネット アクセス無しに)利用できるので、オンプレミスのサーバーをクラウド化し、さらに PaaS に移行するといったシナリオも実現できます。
サーバー更改やシステムの増強でクラウドの利用を検討されている場合は、どのような仮想ネットワークの構成が可能でどれが最適かを検討されるようお勧めします。仮想ネットワークの構成や構築方法でご不明の点、お悩み事がありましたら、ぜひ当社担当営業までお問い合わせください。

マルチクラウドの記事