すのふら

すのふら

日々の備忘録

Amazon VPCについて勉強

AWS 認定ソリューションアーキテクト – アソシエイトを受けるため、改めてAmazon Web Service(AWS)の勉強をする。

この本を一読したうえで機能単位で勉強していく。

VPC(Virtual Private Cloud)とは

  • AWS上にプライベートネットワーク空間を構築することが可能できる。任意のIPアドレスの範囲を選択することで仮想ネットワークを構築することができる。
  • 論理的なネットワーク分離が可能。必要に応じてAWS内との接続やオンプレミスとの接続を実施することが可能。
  • プライベートネットワーク空間内で細かく設定・制御できる。サブネットやルートテーブル、ネットワークゲートウェイ設定など。
  • 様々な接続オプションを利用できる。インターネット経由 or VPN/専用線(Direct Connect)

冗長性や、セキュアな接続を担保しつつ、様々なところへ接続するために使用される機能という感じ。


VPCの作成イメージ

以下のような形でVPCを構築し、VPCの中にそれぞれ設定を実施していく。

f:id:snofra:20201124233803p:plain

AWS入門者向け 初心者が最初に理解すべきEC2とVPCの基本的な用語解説 | Avintonジャパン株式会社 より引用

手順としては以下のような形。

  1. VPCを作成
  2. Subnetを作成(Public or Private、もしくは両方)
  3. Subnetの中にEC2などのインスタンスを起動させる
  4. Internet GatewayVPCにセットする(VPC←→インタネットができるように)
  5. ルートテーブルにPublicのIPを追加
  6. Private Subnetを作っている場合、NAT Gatewayを作成し、privateのインスタンス→インターネットができるようにする

ひとつのリージョンに対して、複数のVPCを設定できる(上限5)
ひとつのVPCに対し、複数アベイラビリティゾーンを設定できる
また、ひとつのVPCに対し、複数サブネットを設定できる

複数のアベイラビリティゾーンに対し、ひとつのサブネットがまたぐことはできない
アベイラビリティゾーンは地域(リージョンよりも細かい)なので、1拠点につき1サブネットサブネットということか。

関連機能としては以下

サブネット

VPC内に構成するネットワークセグメント。

nw.seeeko.com

サブネットは大きく分けて2つで構成することが可能。片方だけでも可。

  1. パブリックサブネット
  2. プライベートサブネット

この二つの違いはルーティング。
ルートテーブル内のデフォルトゲートウェイ(0.0.0.0/0)へのルーティングにインターゲットを指定したものがパブリックサブネット。
なければプライベートサブネット。

RDSなどマルチAZ機能があるものを利用する際には、異なるアベイラビリティゾーン上でサブネットを作成する必要がある。

パブリックサブネットはインターネットからの接続を許容する場合、フロントの画面などが該当する。
プライベートサブネットはインターネットからの接続は許容しないが、プライベートサブネットからパッチの入手などでインターネットへ接続したい場合に使用する。DBなどの情報がそちらに存在される。


インターネットゲートウェイ

VPCからインターネットへでるためのゲートウェイ


ルートテーブル

サブネット内の静的ルーティングを定義するもの。設定単位はサブネット。


NATゲートウェイ

プライベートサブネットからインターネットに出るために実施する設定。
サブネットにも記載したが、サブネットに紐づくルートテーブルにインターネットゲートウェイのルーティングが存在しないものが、プライベートサブネット
つまり単独ではインターネットに出ることができない。

プライベートサブネットにはDBサーバがあったり、誰かにアクセスされると非常に困るため。

プライベートサブネットからインターネットに出たい場合に使用するのが、NATゲートウェイ

AWS側が用意しているNATゲートウェイの代わりにEC2インスタンスを代わりに使用することができる。(NATインスタンス
高可用性なのはNATゲートウェイ

docs.aws.amazon.com


CIDR(Classless Inter-Domain Routing)

同じネットワークとして扱うIPアドレスの個数を調整する。

https://wa3.i-3-i.info/word11989.html

172.31.0.0/16 の場合、
2進法で10101100 00011111 11000000 00000000となるが、16はネットワーク部をどこにするのかということを決められる。(この場合10101100 00011111 )

これを実施することで、同じネットワークに所属するものが何かというものを決めることができる。
つまり、172.31.0.0/16と172.31.1.0/16は同じネットワークにいるといえる。

CIDRの数によって設定できるIPアドレスの数が異なるが、冗長性を考えて設定する必要がある。
VPCのCIDRは16が推奨されている。サブネットは24。

CIDRが16が65,536のIPを設定できる。
24は256、23が512、32が1。

www.ahref.org



VPCエンドポイント

VPCからリージョンサービス(S3など)を利用したい場合、VPCの外に存在するサービスに対し接続を行わなければならないので、インターネットの外に出てしまう。

それだとセキュアな接続にはならないので、インターネットに出ないようにするためにVPCエンドポイントを使用する。

f:id:snofra:20201125000913p:plain
https://devlog.arksystems.co.jp/2018/05/11/4896/ より引用

VPC エンドポイントでは、PrivateLink を使用する AWS サービスや VPC エンドポイントサービスに VPC をプライベートに接続できます。
VPC エンドポイント - Amazon Virtual Private Cloud

つまりインターネットを経由せずに接続することが可能。
デフォルトではIAM ユーザーにはエンドポイントを使用するためのアクセス権限がないので、IAMポリシーに権限追加する必要がある。

具体的には2つのつなぎ方が存在。


ゲートウェイ

ネットワークレイヤー層のVPCエンドポイント。
ルートテーブルに指定されたターゲットを追加することでインターネットを経由せずにプライベート接続できる。

エンドポイントのIDと接続したいサービスのIDを設定することでアクセス制御が可能(
VPC エンドポイント - Amazon Virtual Private Cloud
料金は無料で、AWS側にて冗長性を担保してくれているものとなる。

以下が使用できる対象。

S3とDynamoDBだけなので、SAAの試験でVPCエンドポイントの問題が出た場合、S3とDynamoDBのワード出てたら確実にゲートウェイ型。


インターフェイスAWS PrivateLink)型

アプリケーションレイヤー層のVPCエンドポイント。AWS PrivateLinkとも呼ばれる。
APIコールに対してインターネットを経由せずにプライベート接続できる。

具体的にはVPC内サブネットのDNSに対して問い合わせを行うとプライベートIPアドレスで回答される。その情報でVPCエンドピントからAPIに対し転送が行われる仕組み。

ゲートウェイ型とは、Elastic Network Interface(ENI)を使用する点で違うので、そもそも転送する場所が違う(ゲートウェイVPCからだが、privateLink型はサブネット)。

ENIのためアクセス制御はセキュリティグループを使用できるが、ENIを使用するために料金がかかる。

docs.aws.amazon.com


以下が使用できる対象。APIが存在する系のものには大体あるイメージか。

VPC エンドポイント - Amazon Virtual Private Cloud


VPN vs DirectConnect

VPCとの接続として、VPNを使用した接続と、DirectConnectを使用した専用線接続の2種類が存在する。

VPN接続:バーチャルプライベートゲートウェイを利用したサイト間VPN
専用線接続:DirectConnectを利用した接続。安定しているので本番環境向け。日本では閉域性という点で利用される傾向がある。

VPCからオンプレミスを接続する場合は、必ずサブネットのルートテーブルに設定が必要。

VPN接続と専用線接続の違い

f:id:snofra:20201126002130p:plain

専用線接続は物理的に接続する準備しなければならないので、リードタイムがかかる。
データ移行などでリードタイムを気にする場合はVPN接続をするのが良い。

VPN接続は障害時の切り分けが難しかったり、ネットワーク品質に難がある。

それぞれの特徴については以下に記載。

VPN接続

いわゆるサイトtoサイトVPN(サイト間VPN)を指す。

f:id:snofra:20201125233307p:plain
単一および複数の Site-to-Site VPN 接続の例 - AWS Site-to-Site VPNより引用

ひとつのVPN接続はふたつのIPsec暗号化プロトコル冗長化している状態。

専用線接続

AWSとオンプレミス側で専用線契約を結び専用線接続を実施する。

f:id:snofra:20201125235151p:plain
AWS Direct Connect とは - AWS Direct Connectより引用

接続はVPCに向けたプライベート接続と、S3やDynamoDBなどのAWSサービスへの接続としてパブリック接続がある。

サイト間VPNよりも一貫性があり、帯域のパフォーマンス向上、ネットワークコストも削減できる。

AWS Direct Connect Gateway

AWS Direct Connect Gateway は中国を除くAWSのすべてのリージョンにおいて、グローバル IP ルートを受信するパブリック仮想インターフェイスを作成することや、エンドポイントへのアクセスの有効化機能が提供されます。
また、複数の AWS リージョンに渡り Virtual Private Cloud (VPC) で接続性を確立することができ、それぞれ複数の BGP セッションを確立する必要がないので、管理作業を減らしネットワークデバイスへの負担も軽減することができます
AWS Direct Connect の AWS Transit Gatewayサポートが東京リージョンに対応しました | Amazon Web Services ブログ

f:id:snofra:20201126000151p:plain
AWS Direct Connect の AWS Transit Gatewayサポートが東京リージョンに対応しました | Amazon Web Services ブログより引用

複数のオンプレミスから複数リージョンのVPCに接続するためにはAWS Direct Connect Gatewayを使用することで可能。

ただし、VPC側は同一アカウントでなければらない点と中国には接続できない。


VPN接続と専用線接続の冗長化

VPNとDirectConnectを同じVGWに接続することができる。
その場合はDirectConect側が優先される。

そのため、DirectConectはアクティブ、VPNはスタンバイにさせて、DirectConectが障害が起きた場合にVPNにするのがよい。

VPNにフェイルオーバーする際の注意事項として、接続回線が違うのでパフォーマンス懸念が発生する可能性がある。


VPCピアリング接続 vs AWS Transit Gateway

VPN間を通信する手段として、VPCピアリング接続 と AWS Transit Gatewayのふたつが存在する。
似たような機能だが、若干違う。

qiita.com


VPCピアリング接続

異なるVPC間をプライベート接続するサービス。
無料のサービスとなる。

f:id:snofra:20201126004729p:plain
VPC ピア機能とは - Amazon Virtual Private Cloudより引用

f:id:snofra:20201126004514p:plain
VPC ピアリングの基本 - Amazon Virtual Private Cloudより引用

通常はVPC間はそれぞれ独立したプライベートネットワークのため、通信を行えない。
VPCピアリング接続を行うことで、インターネット経由せずにAWSプライベートネットワーク内で直接通信することが可能。
リージョンをまたぐことも可能。日本<-->北米。


ただし、VPC-A<-->VPC-B<-->VPC-Cの場合、VPC-AはVPC-Aとだけ接続しているので、VPC-Cにアクセスすることができない。

ピアリング先のVPCを使ってインターネットに出ることはできない。
VPC-A<-->VPC-Bの場合、VPC-Aの中のサブネットがVPC-Bのサブネットからインターネットに接続しようとしてもそれはできない。

dev.classmethod.jp


AWS Transit Gateway

VPCピアリング接続と大きく違うのは、オンプレミスとの接続も使用できるという点。
ただし、VPCピアリング接続とは違い有料サービス。

VPC同士の接続のほかに、

  • VPC<-->DirectConnect<-->オンプレ
  • VPC<-->VPN<-->オンプレ
  • 複数のVPC<-->DirectConnectGateway<-->オンプレ

という構成も可能。

DirectConnectGatewayのイメージは以下。

f:id:snofra:20201126005354p:plain
Direct Connect ゲートウェイへのトランジットゲートウェイアタッチメント - Amazon Virtual Private Cloudより引用

同じリージョンにある複数の VPN または VPC に対して 1 つの接続をAWS Transit Gatewayで管理する形。





VPCエンドポイントを使ってS3に接続できない場合

ネットワークアクセスまたは Amazon VPC から Amazon S3 への接続を許可するセキュリティルールが原因で、ゲートウェイ VPC エンドポイントとの接続問題が発生している場合があります。
VPC エンドポイントから S3 への接続問題のトラブルシューティング

  1. VPCDNS設定が有効になっているか確認
  2. ルートテーブルをS3に設定(上記ゲートウェイ型の設定がされているか確認)
  3. 対象インスタンスのセキュリティグループのoutboundがS3を許可しているか
  4. ネットワークACLのinbound側がS3からのトラフィックを許可しているか
  5. VPCエンドポイントやS3へのIAMポリシーが許可されているか。(S3のバケットポリシー権限も含め確認)

テストの観点だと、ルートテーブルとセキュリティグループ、ネットワークACL、IAMポリシーが正しくないという理由で問題がでそう。


踏み台サーバを使用したセキュアなリモートアクセス

VPC内のEC2インスタンスに対し、リモートからセキュアにアクセスするために踏み台サーバを使用することができる。

踏み台サーバーを利用する理由はそれぞれの環境により異なりますが、以下が挙げられます。
1. セキュリティ的な観点
– 各サーバーに直接アクセスできないため外部から侵入されるリスクを軽減できる

2. 運用的な観点
– パブリックIPを各サーバーに割り振る必要がないため運用不可を軽減できる
– 外部通信に対するアクセス制御の対象を踏み台サーバーに限定できるため運用不可を軽減できる
http://awsinfra.site/2018/05/17/post-14/


踏み台サーバ構成のポイント

  • SSHRDBなどリモートアクセスが必要な場合のみ、踏み台サーバを起動
  • 踏み台サーバはパブリックサブネット上に設置し、パブリックIPを設定する
  • 踏み台サーバのセキュリティグループはSSHRDBからのアクセスを許可。アクセス元は不特定多数(0.0.0.0/0)ではなく、特定のIPにする
  • 踏み台サーバから接続されるインスタンスには、必要に応じて「踏み台サーバからのSSHRDBのみ許可」の設定をセキュリティグループにする


オンプレミス側との接続

Direct Connectと仮想プライベートゲートウェイ

Direct Connect

オンプレミス環境とAWSの間を専用線で接続するサービス。構想句なネットワーク帯域で安定した通信を実現可能。
オンプレミス側<-->接続ポイント<-->AWSで接続する。

接続ポイント<-->AWS側の可用性はAWSが提供するが、オンプレミス側<-->接続ポイントはユーザ側が考慮する。

仮想プライベートゲートウェイ(インターネットVPN

オンプレミス環境とAWSの間をインターネットプロトコルセキュリティ (IPsec) VPN 接続するサービス。

各メーカーのルータに最適化された設定ファイルをAWSコンソールからダウンロードし、設定ファイルを元にオンプレミス側のルーター設定を行う。
専用線ではなく、あくまでインターネット回線を使用するので、速度や安全性がDirect Connectには劣る。

以下Direct Connect vs 仮想プライベートゲートウェイ
f:id:snofra:20190528170315p:plain


オンプレミス側との接続冗長化した高可用性を担保する


Direct Connect冗長化パターン

Direct Connectを2回線分用意することで、速度・安全性を維持したまま冗長化することが可能。
ただし、コスト面が高くなる。


Direct Connect+仮想プライベートゲートウェイ複合パターン

Direct Connect側に障害が発生した場合、仮想プライベートゲートウェイに切り替える。
仮想プライベートゲートウェイへフェイルオーバーした場合、通信品質やパフォーマンスに影響が発生する可能性がある。