Rubyと筋肉とギターとわたし

筋トレが仕事です

【aws】vpcネットワークを作っていくメモ

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-**********

インターネットゲートウェイをルーティング先に指定する

  1. VPC -> ルートテーブル
  2. 作成したルートテーブル選択
  3. 編集
  4. ルートを追加
  5. 送信先 0.0.0.0/0にし、ターゲットをインターネットゲートウェイにし作成した igw idを選択
  6. 変更を保存

aws cli経由で作成

# igw-*******/rtb-*********は先程作成したもの
$ aws ec2 create-route --route-table-id rtb-*************** --destination-cidr-block 0.0.0.0/0 --gateway-id igw-*****************
````