Amazon VPC
AWSでは「Amazon VPC」と言う領域を作ることでそこに自由にネットワークを構築できるアンマネージドサービスです。IPアドレスの範囲をもらえるのでその中でサブネットを分割したりして「Amazon EC2インスタンス」(仮想サーバのこと)を配置したりします。
概要図
VPCの特徴
VPCはアベイラビリティゾーン(AZ:データセンター)はまたげるがリージョン(国)は跨げないです。
例
アベイラビリティゾーンは跨げる。
ap-northeast-1a(東京のとあるデータセンター) → ap-northeast-1c(東京のとあるデータセンター)
リージョンは跨げない。
eu-west1(アイルランド)→eu-west2(ロンドン)は跨げない。
名前解決
VPC内の名前解決をするオプション機能がありその機能を有効にするとインスタンスにDNS名が設定される。
サブネット
VPC内にサブネットを作成した場合は、どこかのアベイラビリティゾーンにサブネットが作成されます。サブネット上にEC2等のインスタンスを作成した場合はそのサブネットと同じアベイラビリティゾーンに配置されます。
サブネットの特徴
VPCと異なりアベイラビリティゾーンすらも跨げないので注意しましょう。
サブネット化の利点
- アベイラビリティゾーンを分けて配置することで耐障害性を高めることが可能な点
- インターネットにつなぐサーバー(Web)、インターネットにはつながないサーバ(DB)等アクセス範囲を分けて管理する等ができる点
- セキュリティも高めることが可能
サブネット同士の通信
別々のアベイラビリティゾーンにあってもサブネット同士は問題なく通信は可能です。
ただ、アベイラビリティゾーンが遠い場合は距離による遅延や通信費用が発生する場合があるので注意。
コストを重視する場合は同一のアベイラビリティゾーンに配置すれば良いですし、耐障害性を高めたい場合は別々のアベイラビリティゾーンにサブネットを配置します。
ルートテーブルの関連づけ
サブネットをインターネットに公開する場合は新たに作成したインターネットゲートウェイをここに設定する必要があります。
サブネットの種類
パブリックサブネット
デフォルトゲートウェイにインターネットゲートウェイが設定されておりインターネットに接続可能なサブネットの事です。
以下のような用途が考えられます。
- Cloud9(開発用)
- Ingress(インターネット疎通用)
プライベートサブネット
デフォルトゲートウェイにインターネットゲートウェイが設定されておらずインターネットに接続不可能なサブネットの事です。
以下のような用途が考えられます。
- DBサーバー
- Egress(VPCエンドポイント用)
- アプリケーション用(フロントエンド アプリ、バックエンドアプリ)
NATゲートウェイ
プライベートのサブネットをインターネットに接続させたい等の用途で使います。稼働時間と転送バイト単位の両方で課金されてしまうので注意が必要です。
VPCエンドポイントとは?
異なるVPC、異なるリージョンに配置されたAWSサービス同士の通信をインターネット経由ではなく、Amazonのネットワーク内で繋ぐサービスのこと。
二つの機能
ゲートウェイエンドポイント
メリット
NATゲートウェイを設置しなくても、プライベートサブネット内サービスからVPC外サービスに対してセキュアにアクセスできる。
指定できるサービス
「S3」と「DynamoDB」のみ。
インターフェイスエンドポイント
メリット
インターネットを経由しないセキュアな通信を実現できる。
今までは、ゲートウェイエンドポイント経由でS3やDynamoDBにアクセスできなかった。また、WAN接続している企業においてもインターネットを経由している企業に関しては格納先としてS3を選択するということができなかった。
NATの負荷軽減になる。
VPCの設計
IPアドレス範囲を設計する。
プライベートIPを選択する。
VPCでは仮想プライベートネットワーク空間になるので10.0〜や172.16等のプライベートIPかの使用をすること。
VPCのサブネットマスクは大きめに設定する。
/28から/16を選ぶことになりますが、作成後は変更できないですしIPアドレスが枯渇すると困るので最大の/16を選ぶのが良いでしょう。
他のネットワーク(オンプレ等)と重複しないよう気を付ける。
VPCやアカウントを分ける基準
異なるシステムの場合
VPCを分けるのではなく、AWSアカウント自体を分けてしまいましょう。
同じシステムで環境が異なる場合
同じシステムの場合は下記の点を考慮して同じアカウントでVPCとリージョンを分けてしまうのが良いでしょう。
- IAMの設定を環境ごとにする必要がない。
- 全環境のリソースが作業中に見えないので事故ることがない。
サブネットの設計
/24が一般的
VPCのサブネットマスクは/16が一般的ですが、サブネットのサブネットマスクは少し広めの/24が一般的です。将来必要なIPアドレス数を見積もって設計するようにしましょう。
/28
これにした場合はELBを設定できなくなってしまうので注意が必要です。おそらく15個程度しかIPを確保できないのにELBで10個程度はIPアドレスを消費してしまうためだと思われます。
サブネットの分割基準
下記のようなことを考慮した上でサブネットを分割するかを考慮します。
- インターネットアクセスの有無
- 拠点アクセスの有無
- ルーティングポリシー
- 可用性
複数AZで冗長化する。
耐障害性を高めるためにサブネットを同じ構成にして複数のAZ(アベイラビリティゾーン)で冗長的に配置するのが一般的。
「デフォルトVPC」と「デフォルトサブネット」について
各リージョンにはあらかじめ「デフォルトVPC」と「デフォルトサブネット」が作成されています。
当時
昔はデフォルトでVPCを一度削除するとAWSサポートに連絡しなければ再作成できませんでした。
なので、デフォルトVPCとデフォルトサブネットは削除しない習慣がありました。
2017年以降
2017年にAWSがマネジメントコンソールからデフォルトVPCを再作成できるようになりました。デフォルトルートの宛先がAny(0.0.0.0/0)となっているので本番環境のネットワーク設定としては不十分です。
最近は、デフォルトVPCは削除する方針が一般的になっています。
VPCの構築
名前タグ
任意の名前をつけます。
IPv4 CIDR
例えば、「10.0.0.0/16」や「10.0.0.0/24」などと事前に決めておいたCIDR情報を入力します。
IPv6 CIDR ブロック
IPv6を使わないのであれば、「IPv6 CIDR ブロックなし」を選んでおけば良いでしょう。
テナンシー
物理ハードウェアを占有するかのオプションになります。占有するとEC2などの料金が割高になったりするので、「デフォルト」を選んでおけば良いでしょう。
サブネットを作成
例えば、パブリックサブネットを「10.0.10.0/24」、プライベートサブネットを「10.0.20.0/24」と決めたりします。
VPC ID
先ほど作成したVPCを指定します。
サブネット名
任意のサブネット名をつけます。
アベイラビリティゾーン
任意の場所を選択します。
IPv4 CIDRブロック
例えば、「10.0.10.0/24」などのようにVPC上のより小さい区画になるよう指定します。
インターネットゲートウェイの作成
パブリックサブネットからインターネットに繋げるために必要です。
名前タグ
任意の名前をつけます。
インターネットゲートウェイの作成後にVPCにアタッチ
作成ずみのインターネットゲートウェイを選んで、アクション→VPCにアタッチ→使用可能なVPCで作成したVPCを選択して「アタッチ」ボタンを押します。
ルートテーブルの作成
すでに、VPCを作成した段階でルートテーブルを自動的に作成されていますが、新規でもう一つ追加してインターネットゲートウェイを紐づけます。
これによって、パブリックサブネットからインターネットに接続できるようになります。
名前タグ
任意の名前をつけます。
VPC
先ほど作成したVPCを選択します。
ルートテーブル作成後に、サブネットを関連づける。
先ほど作成したサブネットにルートテーブルを関連づけます。「サブネットの関連づけの編集」から単純に選んで保存するだけです。
ルートを追加
送信先
「0.0.0.0/0」を選びます。
ターゲット
先ほど作成したインターネットゲートウェイを選択します。
この記事へのコメントはありません。