VPCネットワーク
デフォルトVPC
設定名 | 設定内容 | 設定の割当最小単位 |
---|---|---|
VPC | デフォルトVPC全体のネットワークアドレス。範囲 172.31.0.0/16 | リージョン |
サブネット | 各AZに1つずつ設置。 [/20]のネットワークアドレスが割り当てられる。 | AZ |
ルートテーブル | VPCネットワークアドレス範囲内の通信はVPC内部へルーティング。それ以外はインターネットに向けたルーティング。 | サブネット |
インターネットゲートウェイ | インターネットへの接続用ゲートウェイが作成され、ルートテーブルに割り当てられている。 | VPC |
ネットワークACL | インバウンド・アウトバウンドともに全ての通信を許可 | サブネット |
セキュリティグループ | インバウンドは全ての通信を拒否、アウトバウンドは全ての通信を許可 | インスタンス |
- VPCネットワークアドレスは一度設定すると後から変更できないので注意
カスタムVPC
VPC → VPCを作成
で新規に作成する。
- テナンシーを専用にすると利用料が割高に
- 新規作成時、自動でルートテーブル・ネットワークACL・セキュリティグループが作成される
- EC2インスタンスでパブリックDNSを使用する場合は、DNSホスト名を有効化する
aws cli経由で作成
$ aws ec2 create-vpc --cidr-block 10.0.0.0/16 # Nameをつけたい場合 *******はVPC ID $ aws ec2 create-tags --resources vpc-*********** --tags Key=Name,Value=awscli # hostname 有効化 aws ec2 modify-vpc-attribute --vpc-id vpc-********* --enable-dns-hostnames
サブネット
大きなネットワークを複数の小さなネットワークに分割して管理する際の管理単位となるネットワークのこと。
VPC -> サブネット -> サブネット作成
で新規に作成する。
- ELBを作成する予定があるサブネットは余裕をもって
/24
以上のネットワーク範囲で作成すること
aws cli経由で作成
$ aws ec2 create-subnet --vpc-id vpc-*********** --availability-zone ap-northeast-1a --cidr-block 10.0.0.0/24 # tag Name作成(resource idは上記実行時に返ってくるsubnet-***********) $ aws ec2 create-tags --resources subnet-************ --tags Key=Name,Value=awscli
ルートテーブル
サブネット単位で設定することが出来る、サブネット内で稼働するEC2インスタンスのネットワークルーティングを制御する。
VPCネットワークを作成すると、自動的にルートテーブルも作成される。
VPC -> ルートテーブル -> ルートテーブルの作成
で新規に作成する。
aws cli経由で作成
$ aws ec2 create-route-table --vpc-id vpc-**************** # tag name $ aws ec2 create-tags --resources rtb-************* --tags Key=Name,Value=awscli
作成したサブネットとルートテーブルの関連付け
ルートテーブル -> 作成したルートテーブルを選択 -> サブネットの関連付け -> 編集 -> サブネットにチェック
でおk
作成したサブネットはVPC内の1つのルートテーブルに関連付ける必要がある。
- メインルートテーブルに自動的に関連付けされたサブネットはそのままにせず、明示的にルートテーブルと関連付けるようにする。
- メインルートテーブルを他のルートテーブルに変更した場合、明示的に関連付けていないサブネットは新たに設定したメインルートテーブルに関連付けられてしまい、それまで出来ていた通信ができなくなったり不要な通信が出来るようになったりする等の問題が発生するため。
- メインルートテーブルはできるだけ必要最低限のルーティング設定にしておく、VPCの内部通信のみ可能な設定から変更しないようにする
aws cli経由で作成
$ aws ec2 associate-route-table --route-table-id rtb-***************** --subnet-id subnet-******************
インターネットゲートウェイ
VPC内で稼働するEC2インスタンスがインターネットを通じて外部と通信する際に必要。EC2以外のリソースも同様で通信する際に必要。VPCごとに1つだけ紐付けが可能。
ルートテーブルのターゲットとして使用する。
VPC -> インターネットゲートウェイ -> インターネットゲートウェイの作成
で新規に作成する。
VPCと関連付ける
アクション -> VPCにアタッチ
で作成したVPCと関連付けられる。
aws cli経由で作成
$ aws ec2 create-internet-gateway # tag name(igw-******は上記実行時に取得) $ aws ec2 create-tags --resources igw-************ --tags Key=Name,Value=awscli-gateway # VPCへアタッチ $ aws ec2 attach-internet-gateway --internet-gateway-id igw-*********** --vpc-id vpc-**********
インターネットゲートウェイをルーティング先に指定する
aws cli経由で作成
# igw-*******/rtb-*********は先程作成したもの $ aws ec2 create-route --route-table-id rtb-*************** --destination-cidr-block 0.0.0.0/0 --gateway-id igw-***************** ````