AWS完全に理解する

2022-03-05に作成

AWSに対して学習した際のアウトプットを記します。

基本的には、以下から対応するサービスの資料を参照してまとめてます。

サービス別資料 | AWS クラウドサービス活用資料集

所有者限定モードのためこのボードには投稿できません ボードとは?

Amazon VPC完全に理解したかった

Amazon VPCとは

AWS上の仮想ネットワーク空間を構築できるサービスです。
ただ、ネットワーク空間を作っても、コンピューティング機能が無ければ意味がない(例えるなら、ルーターとLANケーブルしかない状態)ため、EC2などを併用することが前提となるサービスです。

Amazon VPC とは? - Amazon Virtual Private Cloud

学習成果

以下の資料を参考にまとめました。
なお、以降は説明がない限りはIPv4をもとにした通信の設定です。

20201021 AWS Black Belt Online Seminar Amazon VPC (PDF)

また、関連する内容として、以下も参考にまとめました。

あまり使ったことのないサービスは理解が難しい......。
省略形も多すぎて理解が追付かないです。
とりあえずGWってついていたらゲートウェイって読むようにしたいですね。

概要

  • データセンターのネットワークを、AWS上に仮想的なプライベートネットワーク空間として構築できる
    • 任意のIPアドレスレンジの利用が可能
    • 論理的なネットワーク分離が可能
    • ネットワーク同士の接続が可能
    • ネットワーク環境のコントロールが可能
    • 複数のコネクティビティオプションの選択が可能
  • 様々なコンポーネントを組合せる

コンポーネント

よく使われる省略形を前頭に記しています。

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

  • インターネット (The Internet) と通信するための通り道
    • VPC内のEC2インスタンスがVPC外部と通信する際には必須
  • VPC内のEC2インスタンスなどからはIPアドレスなどで直接参照できない
    • ルートテーブルによって通信先を教えてもらう必要がある

サブネット

  • VPC内のネットワーク範囲の1つ
    • VPCより小さい

仮想ルータ

  • ルートテーブルを保持している、サブネット内の仮想的なルーター

ルートテーブル

  • VPC内のパケットの通信先を表す
    • いわゆるiptablesのようなもの
  • VPC作成時にデフォルトで1つのルートテーブルが作成される

VPC Peering

  • VPC間の接続に使う
  • 1対1の関係
    • VPCを複数構築している場合は、最大で指数関数的に作成する必要がある

NATゲートウェイ

  • プライベートサブネットのリソースがインターネットまたはAWSクラウドへ通信するために必要
    • パブリックサブネットのリソースには不要
  • かつてはEC2インスタンスでNATを作る必要があった(NATインスタンス)

VPCエンドポイント

  • Client VPN接続構築時に、オンプレミスとVPC内EC2インスタンスの接続に使う
  • VPC内EC2インスタンスからVPC外AWSリソースへの接続に使う
    • AmazonProvidedDNSで通信先を教えてもらう必要あり
    • 無料(PrivateLinkと異なる)
    • アクセス制御にはIAMポリシーのような構文(エンドポイントポリシー)を利用する

EIP: ElasticIP

  • 固定IPアドレスの設定が可能なサービス

VGW: バーチャルプライベートゲートウェイ

  • VPN接続に利用する接続口
  • 関連リソースが少なく、設定が容易

VPNコネクション

  • VPN通信そのもの、または、VPN通信経路

VIF: 仮想インターフェイス

  • コネクション(物理接続)を通してAWSリソースにアクセスするための論理インター芸す
    • AWSと利用者のルーターの間でBGPピアを確立し経路交換をするために必要
    • VLAN IDを持つ
  • 種類
    • プライベートVIF: プライベートIPを介してVPCに接続
    • パブリックVIF: パブリックIPを介してAWSの全リージョンに接続
    • トランジットVIF: TGW用のDirect Coonnectゲートウェイに接続

CGW: カスタマゲートウェイ

  • VPN接続の利用者側にある物理デバイスまたはソフトウェアデバイス

ENI: Elasticネットワークインタフェース

  • いわゆるNIC
  • EC2インスタンスに紐付く
    • インスタンスタイプにより上限が決まっている
  • サブネットにも紐付く?
    • サブネットのENIというのは、サブネット内のEC2インスタンスに紐付けたENIのことを指しているのかもしれない
  • 接続方法によって規格が変化するっぽい
    • ENA ENI
    • EFA ENI
    • VPC ENI
    • TGW ENI

ENA: Elasticネットワークアダプタ

  • ENIの種類の1つ
  • 一般的なEC2インスタンスに紐付くENI

PrivateLink

  • VPC内EC2インスタンスからVPC外AWSリソースへの接続に使う
    • サブネットにエンドポイント用のプライベートIPアドレスが生成される
    • AmazonProvidedDNSで通信先を教えてもらう必要あり
    • 有料(VPCエンドポイントと異なる)
    • アクセス制御にはSGを利用する
    • 冗長な設計を意識する必要がある
    • オンプレミスにネイティブ対応
  • VPC間の接続に使う
  • 1対Nの関係
    • スケーラブル
      • アプリケーションの共有
    • IPアドレスが重複していてもOK

TGW: Transit Gateway

  • VPC間の接続に使う
    • VPC間の接続が無い場合や、1つのハブVPCがある場合などでは、使う必要は無い
      • VPCとハブVPC間の接続にはVPC Peeringを使えばよい
      • VPCとオンプレミス間の接続にはDXGWを使えばよい
      • TGWはハブとしては優秀だが、そこそこコストがかかる
  • 1000以上のVPCとオンプレミス間の相互接続のハブとして使う
    • 1つのVPN接続で複数にVPCへ接続が可能
      • 複数のVPN接続を束ね、 Equal Cost Multi Path (ECMP) を利用し帯域を増やす
        • レイテンシーに一貫性を求めない場合に利用する
          • そうでない場合はDirect Connectを利用する
        • 行きと帰りのトラフィックが異なる可能性がある
  • データストリームを仮想的に複数のアプリケーションに配信可能
  • 1対1でも1対Nでも、ルートテーブルによって関係は変わる
    • スケーラブル
      • ネットワークの共有
    • AZ単位
      • VPC間の通信は同一AZのENIを経由して通信する
        • E.g.
          • リクエスト
            1. EC2 in SubnetA1 in VPCx in ap-northeast-1a
            2. ENI in SubnetA2 in VPCx in ap-northeast-1a
            3. TGW
            4. ENI in SubnetA4 in VPCy in ap-northeast-1a
            5. EC2 in SubnetC3 in VPCy in ap-northeast-1c
          • レスポンス
            1. EC2 in SubnetC3 in VPCy in ap-northeast-1c
            2. ENI in SubnetC4 in VPCy in ap-northeast-1c
            3. TGW
            4. ENI in SubnetC2 in VPCx in ap-northeast-1c
            5. EC2 in SubnetA1 in VPCx in ap-northeast-1a
        • ただし、同一AZのENIが存在する場合は、別AZ間の通信をする際に別AZ内のVPC内にENIが存在しないと通信がアウトバウンドでロストする
      • 送信先のVPC内に同一AZのENIが存在しなくても通信は可能
  • Acceleratedサイト間VPNオプション
    • もっとも近いAWS Edge LocationのVPNコネクションエンドポイントを利用できる
    • 目的のTGWのエンドポイントまでは、AWSネットワーク内を利用できる

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

  • NACLと比較して、ステートフルなファイアウォール
    • IN/OUTの戻りトラフィックは考えなくてよい
  • サーバ単位で設定する
  • Allowのみのホワイトリスト型
  • 全てのルールを適用(AND型)

NACL, ACL: ネットワークACLs

  • SGと比較して、ステートレスなファイアウォール
    • IN/OUTの戻りトラフィックについても明示的に許可/拒否する必要がある
  • サブネット単位で設定する
  • Allow/Denyのブラックリスト型
  • 設定順に適用(OR型)

ネットワーク空間の構築方法

  1. まずは全体のネットワーク空間をVPCとして定義する
    • アドレスレンジを選択する
      • VPC空間としてのサブネット(CIDRブロック)を定義するようなもの
    • リージョン単位で作成する
    • E.g.
      • ap-northeast-1: 172.31.0.0/16
  2. 利用するサブネットを定義する
    • VPC空間内で利用するサブネット(CIDRブロック)を定義する
      • IPアドレス
      • サブネットマスク
    • EC2インスタンスを配備する空間
    • AZ単位で作成する
      • 複数のAZをまたいでの作成はできない
    • E.g.
      • ap-northeast-1a: 172.31.0.0/24
      • ap-northeast-1c: 172.31.1.0/24
  3. (インターネットと接続する場合)IGWをVPCに生成する
    • 外部インターネットやAWSサービスと、2で作成したサブネット(パブリックサブネット)内のEC2インスタンスが、互いに接続するための通信経路
  4. (インターネットと接続しない場合)VGWをVPCに生成する
    • 仮想ルータを配置済みのオンプレミス環境サーバーと、2で作成したサブネット(プライベートサブネット)内のEC2インスタンスが、互いに接続するための通信経路
      • 通信経路はVPNコネクションまたは専用線
  5. ルートテーブルを編集する
    • サブネットごとに紐付け可能
    • EC2インスタンスのOSが確認できるのはプライベートIPのみであるため、VPC外部と通信するためには必ず IGW or VGW を通る必要がある
      • パブリックサブネットとプライベートサブネット間の通信は、プライベートIPで直接通信可能
      • VPC外部というのは、VPC外部に設置しているAWSの他リソース(別VPC内のEC2インスタンス、SQSなど)との通信も含む
    • ターゲットの設定例
      • 172.31.0.0/16(サブネット内の通信): local
      • 0.0.0.0/0(そのほか): 先ほど作成した IGW or VGW
  6. VPCへのIN/OUTトラフィックを許可する
    • SG
    • NACL

その他のVPCの機能

Ingress Routing

  • IGW/VGWのIN/OUTトラフィックを特定EC2インスタンスのENIに設定できる
    • 特定EC2インスタンスの経由を強制できる
    • ENIがIGW/VGWの代わりになるイメージ

DHCP

  • サブネット内にDHCPサーバが存在する
    • サブネット内のENIにIPアドレスを自動割当て
    • プライベートIPを固定した場合は、EC2インスタンスの再起動によって変化しない

Route53 resolver (AmazonProvidedDNS)

  • Amazonが提供するDNSサービス
  • VPC内のEC2インスタンスからのみ参照可能

Route 53 Resolver for Hybrid Clouds

  • オンプレミスからDirect Connect/VPN経由でVPC Provided DNSへの直接悪節可能なDNSエンドポイントを提供

DNS

  • DNS機能の有効化とホストへのDNS名割当て
    • Enable DNS resolution
      • AmazonProvidedDNSを利用できるようにする
    • Enable DNS hostnames
      • FQDNが自動的に割当てられる

Amazon Time Sync Service

  • 時刻同期可能なNTPサーバ
    • プライベートサブネット内でも利用可能
    • うるう秒への対策は実装済み
  • VPC内で稼働する全てのEC2インスタンスが利用可能

IPv6

  • Site-to-Site VPNでIPv6が利用可能
  • IPv4と比べて、いくつか制限あり
    • CIDRブロックサイズは56bit固定、かつ自動でアサインされる
    • サブネットブロックサイズは64bit固定
    • プライベートIPは標準では無し
      • Egress-only Gateway (EGW) を利用すればIPv6においてもプライベートIPが利用可能
    • AWSから提供されるDNSホスト名は無し

VPCシェアリング

  • アカウントをまたいだVPCの共有によりVPC数の削減が可能
  • 通信もVPC内で完結

VPC Flow Logs

  • ネットワークトラフィックをキャプチャしてCloudWatch LogsやS3にログデータを送信できる

VPC Traffic Mirroring

  • EC2インスタンスのENIからネットワークトラフィックをミラーリングできる
  • VPCフローログに含まれないパケット内容の取得が可能

Amazon GuardDuty

  • EC2またはIAMにおける脅威を検出する

VPCとのプライベートネットワーク接続

VPN接続

エンドポイントを利用したAWS Client VPN

  • OpenVPNベースでのクライアントVPN接続を提供するマネージドサービス
  • VPC内のプライベートサブネットと、クライアントVPNエンドポイントを、AWS Client VPNとしてグルーピングする
  • 通信経路: VPNクライアント <-> クライアントVPNエンドポイント <-> ENI (on EC2 in Private Subnet)

VGWを利用したサイト間VPN (Site-to-Site VPN)

  • 1つのVPNコネクションを2つのIPsecトンネルが利用して冗長化
  • 通信経路: CGW <-(VPNコネクション)-> VGW <-> ENI (on EC2)

TGWを利用したサイト間VPN (Site-to-Site VPN)

  • Hyperplaneテクノロジーで処理ノードをマルチAZに分散して冗長化
  • 通信経路: `CGW <-(VPNコネクション)-> TGW <-> TGW ENI (on EC2)

専用線接続

AWS Direct Connect

  • オンプレミスと接続する専用線(これはキャリアと契約する必要がある)の片側とAWSクラウドをDirect Connectロケーションで接続するサービス
    • オンプレミスと直接接続する専用線サービス
  • 本番サービス向け
  • LAG: Link Aggregation Group
    • 複数の接続経路を集約して1つの論理インターフェイスとして提供する
    • Link Aggregation Control Protocol (LACP) を使用する
  • 通信経路: CGW <-(Direct Connect Connection)-> 相互接続ポイント <-> ...
    • 相互接続ポイントの接続先
      • VPC
      • AWSクラウド
      • TGW
    • 接続経路
      • Direct Connectロケーションと利用者機器が同じロケーション
        • CGW <-(WAN回線)-> CGW in Direct Connect ロケーション <-(LAG)-> Direct Connect Device <-> AWS Cloud
      • Direct Connectロケーションから別業者の専用線で接続
        • CGW <-(専用線)-> 別業者機器 in Direct Connect ロケーション <-(LAG)-> Direct Connect Device <-> AWS Cloud
      • パートナー様閉域網(IP-VPN網、モバイル網など)経由で接続
        • CGW <-> 閉域網 <-> 別業者機器 in Direct Connect ロケーション <-(LAG)-> Direct Connect Device <-> AWS Cloud

DXGW: Direct Connect Gateway

  • 同一アカウントに所属する複数リージョンの複数AZから複数リージョンの複数VPCに接続できる機能
  • 通信経路: CGW <-(Direct Connect Connection)-> 相互接続ポイント <-(VIF)-> DXGW <-> ENI (on EC2 in VPC)

VPNとDirect Connectの冗長化

  • VPNとDirect Connectを同じVGWに接続可能
  • Direct Connectが優先
    • Direct Connectが何かしらの原因により通信障害が発生した場合、VPN経由での通信が可能