はじめに
社内向けにAzure系の研修を実施したり資格取得の支援を行っている関係もあって、たまに個別に質問を受けることがあります。
これまでは個別に回答していたのですが、せっかくなので一般的な内容はブログに書いてしまった方が共有できるし、業務として可視化されるよなー、と思ったので、記事にしてみることにしました。
Azure 仮想ネットワークとは?
Azure上で、利用者が自由にネットワークを構成できる機能です。主に、仮想マシン同士の通信で利用されます。*1
原則として、作成した仮想ネットワークは独立しているので、どんなIPアドレスを設定しても、他の利用者とのIP重複を気にする必要はありません。*2
IPアドレスやサブネットマスク、DNSを設定する、といったネットワークの基本的な考え方はオンプレミスと変わらないのですが、一部、Azure 仮想ネットワーク独自の用語や考え方があるので、まずそこを理解してもらうとスムーズに利用が出来ると思います。
Azure 仮想ネットワークの用語と考え方
仮想ネットワーク
Virtual Network、略してVNetとも呼ばれます。この後でアドレス空間やサブネットなどの用語が出てきますが、それらも含んだ、Azureの仮想ネットワークを利用する際の一番大きなくくりとなります。
アドレス空間とサブネット
ネットワークとして「10.1.0.0/24」を利用したい、となった場合に、Azure 仮想ネットワークでは、「アドレス空間」と「サブネット」という二つの設定で定義をしてあげる必要があります。
まず、アドレス空間の設定で、仮想ネットワーク全体で利用するアドレス範囲を定義してあげます。*3
その上で、アドレス空間で定義したアドレス範囲を切り出す形で、サブネットの定義をします。例えば今回は、defaultサブネットとclientサブネットの二つを作成します。
構造としてはこうなっています。
今回は二つのサブネットを作りましたが、「いや、自分、別にネットワーク分けなくてもいいんですけど...」というケースでもサブネットを作成する事は必須です。ただ、必ずしもサブネットを複数作る必要はありませんので、分けたくない場合はアドレス空間内にサブネットを一つだけ作って利用してください。*4
仮想マシンとネットワークインターフェースとプライベートIPアドレス
ここでは、主に利用されるであろう仮想マシンを例にとります。
仮想マシンを作成する際は、どの仮想ネットワーク、どのサブネットに配置するか、を決める必要があります。
ここで設定したサブネットから、仮想マシンが利用可能なIPアドレスが払い出されます。
構造としてはこうなります。
ただ、厳密にいうと、仮想マシンそのものにプライベートIPアドレスが設定されているわけではありません。仮想マシンに紐づいているネットワークインターフェースがあり、ネットワークインターフェースにてプライベートIPが設定されています。
これは、物理のPCでもNICが複数あったり、有線LANと無線LANで別々のIPを設定する事を考えてもらうとイメージしやすいかと思います。
なので、厳密にはこのようになっています。
仮想マシンから見たIPアドレス
Azure仮想マシンにリモートデスクトップ接続すると、Azureポータルで確認したものと同じIPが設定されていることが分かります。
また、IPアドレスはDHCPで割り当てられている事も分かります。*5
Azure仮想ネットワーク内での仮想マシン同士の通信
アドレス空間やサブネットをなぜ分けるか、どう分けるか、などは、仮想マシンなどのリソースが複数あるケースを考える必要があります。
同じ仮想ネットワーク・同じサブネット内の仮想マシン同士の通信
同じ仮想ネットワーク・同じサブネット内の仮想マシン同士は相互に通信が可能です*6
同じ仮想ネットワーク・異なるサブネット内の仮想マシン同士の通信
同じ仮想ネットワーク・異なるサブネット内の仮想マシン同士も、やはり相互に通信が可能です。*7
ただ、サブネットを分けた場合、サブネット間の通信をまとめて制御するような使い方が出来ます。
例えば、clientサブネットからdefaultサブネットへの通信は、HTTPは許可するがSQLの通信はブロックする、といった事も出来ます。
サブネットを分ける理由は他にもありますが、このようにサブネット間で通信の制御が出来るというのは一つの大きなポイントになるかと思います。
異なる仮想ネットワークの仮想マシン同士の通信
一方、仮想ネットワーク自体が異なる場合は、仮想マシン同士は通信が出来ません。もし、別の仮想ネットワークに構築した仮想マシン同士を、プライベートIPで通信させたい場合は、仮想ネットワーク同士をピアリングという方法で相互接続させるなど、別の手段が必要になります。
仮想マシン同士で相互通信を行いたい場合、基本的には同じ仮想ネットワークにまとめる、というのが原則となります。
おわりに
今回は、まず、プライベートIPでの通信に関係する部分についてまとめました。
次回はパブリックIPでの通信について書きたいと思います。
*1:Web AppsなどのPaaSサービスを仮想ネットワークに接続して通信をAzureデータセンター内で完結させたり、オンプレミスとVPNと接続して利用するケースもありますが、本記事では割愛します
*2:ピアリングやVPNの場合は重複の考慮が必要です。また、どんなIPといっても、プライベートIPを利用するケースが一般的かと思います
*3:アドレス範囲は複数、非連続で設定することも可能。10.1.0.0/16と192.168.1.0/24など
*4:アドレス空間のアドレス範囲とサブネットのアドレス範囲を同じにする事も可能
*5:ちなみに、Azure仮想マシン上でIPアドレスを固定値に設定する、というのは基本的にはNGです
*6:クライアントファイアウォールなどでブロックしているケースは除く
*7:サブネットを作成すると自動的にルーティングが設定されるため、ルーティングの考慮も不要です。
舟越 匠(日本ビジネスシステムズ株式会社)
人材開発部に所属。社内向けの技術研修をしつつ、JBS Tech Blog編集長を兼任。2024年8月からキーマンズネットでPower Automateの連載を開始。好きなサービスはPower AutomateやLogic Apps。好きなアーティストはZABADAKとSound Horizon。
担当記事一覧