まずはVPCネットワークを作成するところからCloudが始まるといっても過言ではありません!今回は初学者向けに、Cloudを使う上で理解することが必須のサービスである、VPCネットワークの概要とネットワークの周辺知識について解説をします。
VPCネットワークとは
Google Cloud 内で仮想化されているネットワークのことです。最初はイメージしにくいかと思いますが、Cloudでは仮想的なネットワークを作成して、そのネットワーク内でCloudサービスを使用します。そのため、VPCネットワークがないとインスタンスの作成が行えません。
プロジェクト作成時には以下のようなデフォルトのVPCネットワークが作成されています。
VPCネットワークは、IPアドレス、サブネット、ルートテーブル、ファイアウォールなどのネットワークリソースで構成されています。以下がVPCネットワークの構成図の例です。
上図の構成例ではVPCネットワーク内に2つのリージョンとサブネットがあり、それぞれ内部IPを持つインスタンスを持っております。まずは上記図の用語についてそれぞれ解説をしていきます。
リージョンとゾーン
まずはリージョンとゾーンについて説明します。
リージョンとは?
リージョンとは地理的に独立したデータセンターの集合です。世界中に配置されており、ユーザーがどこでGoogle Cloudを使いたいかを選ぶことが出来ます。以下のリンク先でGoogle Cloudが使用できるリージョンを確認することが出来ます。
ゾーンとは?
リージョンのさらに小さな単位です。リージョンは「データセンターの集合」ですが、ゾーンはその中のデータセンター1つ1つのことです。1つのリージョンの中には複数のデータセンターがあるため、ユーザーはその中から使用したいデータセンターを選ぶことが出来ます。
複数のリージョンやゾーンを選択することで大規模災害が発生した際に素早く復旧するなど、可用性を向上させることが出来ます。
サブネット
サブネットワークとは
サブネットとはVPCネットワーク内のIPアドレスの範囲です。VPCネットワーク内のネットワークを「サブネット」という単位で細かく区切ることが出来ます。サブネットを作成することによって、ネットワークのセキュリティやパフォーマンスを向上させることが出来ます。
インスタンスには、作成したサブネットのIP範囲でIPアドレスが割り当てられます。上記の例でいうと、10.130.0.0/20というIP範囲のサブネットに、10.130.0.2のIPアドレスを割り当てたインスタンスを作成しています。このようにして、サブネットのIPアドレスの範囲をインスタンスに割り当てていきます。
サブネットワークはゾーンをまたぐことが出来る
Google Cloud は同じサブネットワーク内の異なるゾーンにインスタンスを作成することが可能です。また、両方に同様のファイアウォールルールを適用することもできます。
VPC Routing
VPC Routingでは、VPC内のトラフィックをルーティングします。つまり、VPC内の通信をどこに送信するかを制御します。ルートテーブルに宛先のネットワークが記載されています。VPCルーティングを使用することで、トラフィックをインターネットや他のVPCネットワークなどに振り分けることが出来ます。
各VPC ネットワークにはいくつかのデフォルトのルートが用意されており、 サブネット間でのトラフィックのルーティングや、条件を満たすインスタンスからインターネットへの通信に使用されます。
ファイアウォール
ファイアウォールルールとは
ファイアウォールルールを使用することで、Google Cloud のネットワークへの通信を制御します。特定の IP アドレス、ポート、プロトコルからのトラフィックを許可または拒否することで、ネットワークを保護し、不正のアクセスを防ぎます。
ファイアウォールルールはVPCネットワークに関連付けられていますが、インスタンスレベルにも適用することが出来ます。
デフォルトのルール
Google Cloud では、暗黙のルールとして、上り(内向き)の接続は拒否され、下り(外向き)の接続は許可されています。しかし、優先度が低いため、別のルールがある場合はそちらが優先的に適用されます。
- deny-all-ingress:上り接続の拒否
- allow-all-egress:下り接続の許可
デフォルトネットワークには、以下4つのインスタンスへの接続を許可する上りのファイアウォールルール設定されています。以下のルールが適用されているため、インスタンスを作成した際にRDP接続やSSH接続をしてインスタンスに接続することが可能になります。また、必要に応じて削除することも可能です。
- default-allow-internal:同じVPCネットワーク内の他のインスタンスからVMインスタンスへの接続を許可する
- default-allow-icmp:pingなどのツールを使用した通信を許可する
- default-allow-ssh:sshなどのツールを使用してインスタンスへ接続することを許可する
- default-allow-rdp:リモート デスクトップ プロトコル(RDP)を使用してインスタンスに接続することを許可する
その他のネットワーク関連の必須知識
VPCネットワークの概要については以上ですが、Google Cloud を使う上で重要だと思われるネットワーク関連の知識を説明します。
内部IPアドレスと外部IPアドレス
内部IPアドレスとは、Google Cloud の内部でしか使用することが出来ないIPアドレスです。内部IPアドレスはインターネットに接続されていないため、外部から接続することが出来ません。サブネットから静的内部IPアドレスを予約して、リソースに割り当てることが出来ます。
外部IPアドレスとは、インターネットに接続されているIPアドレスです。外部IPアドレスは、IPアドレスプールからエフェメラルなIPアドレスが割り当てられます。
セカンダリ CIDR 範囲とプライマリ CIDR 範囲
プライマリCIDR範囲とは、インスタンスに割り当てることが出来るIPアドレスの範囲です。
セカンダリCIDR 範囲とは、名前の通り、プライマリCIDR範囲とは別に割り当てることが出来るIPアドレスの範囲です。プライマリ CIDR 範囲に使用可能な IP アドレスが不足している場合やプライマリ CIDR 範囲と異なる IP アドレス範囲が必要な場合などに使用します。
そんなことあるの?と思うかもしれませんが、主にコンテナ技術を使用する際にセカンダリ CIDR 範囲が必要になります。コンテナはIPアドレスを2つ以上持つ必要があるからです。
現時点では、「そんなのあるんだ」程度の理解でよいと思います。もっと詳しく知りたい場合は以下の記事を読んでみてください。
異なるVPC間での通信
基本的には異なるVPCでの内部IPアドレスへの通信はできません。内部IPアドレス間での通信をしたい場合は、VPCネットワークピアリングやVPNなどを使用する必要があります。
VPNについては以下の記事を参考にしてください。
VPCネットワークピアリングとは
VPCネットワークピアリングを使用することで、2 つの VPCネットワークを接続して、各ネットワーク内のリソースが相互に通信できるようになります。外部IPを使用せずに、内部IPで安全に通信が出来ます。また、通信は組織をまたぐことが出来ます。
共有VPCとは
共有VPCを使用すると、VCPネットワークを複数のプロジェクトで共有することが出来ます。1箇所でネットワークを管理することが出来るようになり、セキュリティのリスクを軽減することが出来ます。
詳細は以下の記事を読んでみてください。