Virtual Private Cloudについて学びましょう!
AI生成コンテンツは不正確または誤解を招く可能性があります。
Virtual Private Cloudの略で、AWS上で論理的に独立した空間を提供してリソースを実行できるようにします。
AWSにはリージョンごとにDefault VPCとCustom VPCが存在します。 Default VPCは各リージョンにデフォルトで1つずつ作成されており、 Custom VPCはリージョンごとに最大5つまで作成できます。
ネットワーク領域を分割したネットワークです。 クラウド環境のVPCでもサブネットを通じてネットワークを分離して分割できます。
サブネットに割り当てたIP帯域が10.0.0.0/24の場合、10.0.0.0~10.0.0.255のうち
| アドレス | 説明 |
|---|---|
| 10.0.0.0 | ネットワークアドレス |
| 10.0.0.1 | AWS VPC仮想ルーターアドレス |
| 10.0.0.2 | AWS DNSサーバーアドレス |
| 10.0.0.3 | 将来の新機能のために予約 |
| 10.0.0.255 | ネットワークブロードキャストアドレス |
また、AWS SubnetにはPublic SubnetとPrivate Subnetが存在します。 Public Subnetは外部インターネットと直接通信できるネットワークであり、 Private Subnetは外部インターネットと直接通信できない閉じたネットワークです。*ただしPrivateサブネットの場合もNATゲートウェイがあれば外部との通信が可能です。
インスタンスレベルでのセキュリティ技術はSecurity Groupです。 サブネットで使用するセキュリティ技術も存在し、それがAccess Control List(ACL)です。
| Public Subnet VPC作成 | 検証 |
|---|---|
| VPC作成 | EC2インスタンス作成 |
| パブリックサブネット作成 | EC2インスタンスアクセス後、通信確認 |
| インターネットゲートウェイ作成およびVPC接続 | |
| パブリックルーティングテーブル作成およびサブネット接続 | |
| パブリックルーティングテーブル経路追加 |


*後でデフォルトVPCとユーザーVPCを区別する際、Name Tagの有無を確認できます


外部インターネットとの通信のためにIGWを作成し、VPCと接続します。


使用可能なVPC:作成したVPCを選択(CloudPeter-VPC)


ここまで進めると、インターネットと通信するためのIGWがVPCと接続され、サブネットも作成された状態です。 ただし、まだ外部インターネットへのアクセスは不可能です。VPCの仮想ルーティングテーブルに外部インターネットへのルーティング経路がないためです。


サブネット接続をクリック
サブネット接続の編集をクリック
以前作成したサブネットを選択


すべての設定が完了しました。 実際に通信が可能か検証しましょう。
通信確認のためにEC2インスタンスを作成します。
EC2 Consoleにアクセス -> インスタンス
インスタンスの起動をクリック

名前:Public-EC2 OSイメージ:Amazon Machine Image(AMI)、64bit インスタンスタイプ:T2.micro キーペア:いつも使用しているもの
ネットワーク設定 -> 編集

VPC:作成したVPCを選択(CloudPeter-VPC)
サブネット:作成したSubnetを選択(CloudPeter-Public-SN)
パブリックIP自動割り当て:有効化

セキュリティグループ:default

作成確認

パブリックIPでSSH接続後
ping google.com
pingが通れば成功!
| Private Subnet追加 | 検証 |
|---|---|
| プライベートサブネット作成 | EC2インスタンス作成 |
| NATゲートウェイ作成 | EC2インスタンスアクセス後、通信確認 |
| プライベートルーティングテーブル作成およびサブネット接続 | パブリックサブネットとプライベートサブネットの通信フロー |
| プライベートルーティングテーブル経路追加 |
VPC Consoleにアクセス -> サブネット
サブネット作成
VPC ID:作成したVPCを選択(CloudPeter-VPC)
名前タグ:CloudPeter-Private-SN
アベイラビリティーゾーン設定:ap-northeast-2c
IPv4 CIDRブロック:10.0.1.0/24

作成確認

VPC Consoleにアクセス -> NATゲートウェイ

名前:CloudPeter-NAT
サブネット:パブリックサブネットを選択(CloudPeter-Public-SN)
Elastic IP割り当てをクリック!

作成確認

VPC Consoleにアクセス -> ルーティングテーブル
名前タグ:CloudPeter-Private-RT
VPC:作成したVPCを選択(CloudPeter-VPC)

プライベートルーティングテーブルを選択
ルーティング編集をクリック

プライベートサブネット(CloudPeter-Private-SN)を選択

VPC Consoleにアクセス -> ルーティングテーブル
プライベートルーティングテーブルを選択
ルーティング編集をクリック
以下のように編集(NATゲートウェイを選択)

EC2 Consoleにアクセス -> インスタンス
名前:Private-EC2 ネットワーク:作成したVPCを選択(CloudPeter-VPC) サブネット:作成したプライベートサブネット(CloudPeter-Private-SN)
ネットワーク設定

高度な詳細

#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart上記のユーザーデータはパスワード方式でSSHにアクセスできるようにする設定です。 EC2インスタンスが起動時に読み込んで適用します。

Private-EC2のネットワークを確認すると、パブリックIPが付与されていないことが確認できます。
Public-EC2のIPでSSH接続
SSH接続した状態でPrivate-EC2のプライベートIPv4アドレスでSSH接続
NATを利用してping google.comにpingが通るか確認

*NATの場合、内部から外部への通信は可能ですが、外部からPrivate Subnetへのアクセスは不可能です