ablog

不器用で落着きのない技術者のメモ

AWS の VPC(Virtual Private Network) についてメモ

※以下は個人的なメモです。最新の正確な情報はAWSの公式ドキュメントを参照してください。

VPC とは

Virtual Private Cloud (VPC) は、AWS アカウント専用の仮想ネットワーク。以下のコンポンーネントがある。

  • VPCに使うアドレスレンジ
    • VPCに設定するアドレスは既に使っている、もしくは使うであろうネットワークアドレスを避けるのがポイント
    • 推奨: 172.31.0.0/16 RFC1918レンジ、/16 (65,534アドレス)
    • 作成後変更はできないので注意が必要
    • VPCあたりのサブネット作成上限数はデフォルト200個
  • CIDRに/16 を設定した場合の各サブネット数と使えるIPアドレス数
サブネット
  • サブネットで利用できないIPアドレス
ホストアドレス 用途
.0 ネットワークアドレス
.1 VPCルータ
.2 Amazonが提供するDNSサービス
.3 AWSで予約
.255 ブロードキャストアドレス (VPCではブロードキャストはサポー トされていない)
アベイラビリティゾーン(AZ)
  • AZは1つ以上のデータセンターで構成される
  • 1リージョン内にAZが複数存在
  • AZはお互いに地理的・電源的・ネットワーク的に分離
  • 2つのAZを利用した冗長構成を容易に構築
  • リージョン内のAZ間は高速専用線で接続(リージョン間はインターネット経由)
ネットワークACL と セキュリティグループ
ネットワークACL セキュリティグループ
サブネットレベルで効果 サーバレベルで効果
Allow/DenyをIN・OUTで指定可能 (ブラックリスト型) AllowのみをIN・OUTで指定可能 (ホワイトリスト型)
ステートレスなので、戻りのトラフィックも明示的に許可設定する ステートフルなので、戻りのトラフィックを考慮しなくてよい
番号の順序通りに適用 全てのルールを適用
サブネット内のすべてのインスタンスがACLの管理下に入る インスタンス管理者がセキュリティグループを適用すればその管理下になる
AWSクラウドVPC
  • VPC内と外のどちらにリソースや エンドポイントが存在するかサービスによって異なる
  • VPCからAWSクラウドへのリソースはIGW経由の通信となる
    • プライベートサブネットからは→NATゲートウェイ
    • S3であればVPCエンドポイントの利用も可能
    • パブリックサブネットからは→自動割当てまたはEIPのパブリックIPから直接アクセス
  • S3へのアクセスはVPCエンドポイント利用 可能
VPCエンドポイント for S3
  • VPCエンドポイントをVPCに作成し、プライベートサブネットからAWSクラウド上のS3バケットにアクセス可能
  • VPCエンドポイントを作成すると、ルートテーブルの宛先にS3のプレフィックス、ターゲットにVPCエンドポイントが自動で設定されS3への通信がVPCエンドポイント経由となる
  • VPCエンドポイントポリシーでアクセス制御が可能
  • 追加費用なし(トラフィック課金もなし)
VPC Peering (VPCピア接続)
  • 2つのVPC間でトラフィックのルーティングが可能
  • 同一のAWSアカウントはもちろん、異なるAWSアカウント間(クロス アカウント)のVPC間をピア接続することも可能
  • 単一障害点や帯域幅ボトルネックは存在しない
  • 以下の点に注意
    • MTU (VPC Peering 1,500byte)
    • 直接PeeringしているVPCとのみ
    • 通信可能(2HOPは不可)
    • リージョンは跨げない
Amazon DNS サーバー
  • Amazonが提供するDNSサービス
  • 以下の2つのアドレスが利用可能
    • VPCのネットワーク範囲(CIDR)のアドレスに+2したIP(10.0.0.0/16の場合は10.0.0.2)
    • 169.254.169.253
  • VPC内のEC2インスタンスからのみ参照可能 (VPN専用線経由では参照できない)
  • Enable DNS resolution
    • 基本はyesとする
    • NoにするとVPCDNS機能が無効となる
  • Enable DNS hostname
    • TrueにするとDNS名が割り当てられる
    • “Enable DNS resolution”をtrueにしないと有効にならない
VPN接続構成
  • 1つのVPN接続は2つのIPsec トンネルで冗長化
  • ルーティングは以下が選択可能
    • 静的(スタティック)
    • 動的(ダイナミック:BGP)
  • カスタマゲートウェイの要件
機能 RFC
Pre-shared キーを使用して、IKE セキュリティ接続を 確立する RFC2409
トンネルを論理インターフェイスに結合する (経路ベースのVPN) -
トンネルモードで、IPsec セキュリティ接続を確立する RFC4301
暗号化前に IP パケットをフラグメント化する RFC4459
AES 128 ビット暗号化または AES 256 ビットの暗号 化機能を使用する RFC3602
(オプション)BGP ピアを確立する RFC4271
SHA-1 または SHA-256 のハッシュ機能を使用する RFC2404
VPN トンネルに入る TCP パケットの最大セグメントサ イズを調整する RFC4459
Diffie-Hellman Perfect Forward Secrecy を使用しま す。以下のグループがサポートされます。
フェーズ 1 グループ: 2,14~18,22,23,24
フェーズ 2 グループ: 1,2,5,14~18,22,23,24
RFC2409
パケットの "フラグメント化しない" フラグをリセット する RFC791
IPsec Dead Peer Detection の利用 RFC3706
専用線(Direct Connect)接続構成
  • AWSとお客様設備を専用線で ネットワーク接続
  • 相互接続ポイントへ専用線を敷設 し、AWSのルータと相互接続
  • 日本の相互接続ポイントは以下の2つ
    • 東京(Equinix TY2)
    • 大阪(Equinix OS1)
  • ルーティングはBGPのみ
  • 接続先は以下の2つ
  • VPNよりも一貫性がある
  • 帯域のパフォーマンスも向上
  • ネットワークコストも削減
VPCからオンプレミスへのルート設定
  • VPCからオンプレミスへの通信をするためには各サブネットのルートテーブルの設定が必要
    • 宛先: オンプレミスのIP
    • ターゲット:VGWのID
  • ルートテーブルで”ルート伝達 (プロパゲート)”を有効にするとVGWで受信したルート情報をルートテーブルに自動的に伝達(頻繁にオンプレのルートが更新 される場合はこちらを利用)
インターネットVPN vs 専用線
インターネットVPN 専用線
コスト 安価なベストエフォート回線も利用可能 キャリアの専用線サービスの契約が必要
リードタイム 即時~ 数週間~
帯域 暗号化のオーバーヘッドにより制限あり ~10Gbps
品質 インターネットベースのため経路上のネットワーク状態の影響を受ける キャリアにより高い品質が保証されている
障害時の切り分け インターネットベースのため自社で保持している範囲以外での切り分けが難しい エンドツーエンドでどの経路を利用しているか把握できているため比較的容易
VPC Flow Logs
  • ネットワークトラフィックをキャプチャ し、CloudWatch LogsへPublishする機能
  • ネットワークインタフェースを送信元/ 送信先とするトラフィックが対象
  • セキュリティグループとネットワークACL のルールでaccepted/rejectされた トラフィックログを取得
  • キャプチャウインドウと言われる時間枠 (約10分間)で収集、プロセッシング、 保存
  • RDS, Redshift、ElasticCache WorkSpacesのネットワークインタフェーストラフィックも取得可能
  • 追加料金はなし(CloudWatch Logsの標準料金は課金)
  • Flow Log レコードの項目
フィールド 説明
version VPC flow logsのバージョン
account-id flow logを取得したAWSアカウント
interface-id ログストリームが適用されているネットワークインタフェースのID
srcaddr 送信元アドレス(※)
dsraddr 送信先アドレス(※)
srcport 送信元ポート
dsrport 送信先ポート
protocol IANAで定義されたプロトコル番号
packets キャプチャウインドウの中で取得したパケット数
bytes キャプチャウインドウの中で取得したバイト数
start キャプチャウインドウ開始時のUNIX時間
end キャプチャウインドウ終了時のUNIX時間
action トラフィックのアクション(ACCEPT/REJECT)
log-status ログステータス(OK/NODATA/SKIPDATA)
IPv6対応
  • S3、CloudFront、WAF、Route53、VPC、ALBがIPv6対応
VPCにおけるIPv4とIPv6の特徴と制限
IPv4 IPv6
アドレス体系 32bit 128bit
VPCでの利用 デフォルトで適用 オプトイン(自動適用ではなく任意)
CIDRブロックサイズ 16~28bitで選択 自分で任意のアドレスを設定可能 56bit固定 かつ自動で56bit CIDRが アサインされる(選べない)
サブネットブロックサイズ 16~28bitで選択 64bit固定
パブリックIP/ プライベートIP それぞれ存在 (NATを介してパブリックIPをプライマリプライベートIPにMAP) パブリックのみ (プライベートにするにはEgress-only Internet Gatewayを利用)
インスタンスタイプ 全てのインスタンスタイプ M3、G2を除く全ての現行世代の インスタンスタイプでサポート
アマゾン提供DNS プライベートIP、Elastic IPに対する それぞれのDNSホスト名を受信 提供されるDNSホスト名はなし
閉域接続 VPN、DirectConnect DirectConnectのみ
代表的なVPCのリミット
リソース
リージョン当たりの VPC の数 5
VPC 当たりのサブネットの数 200
AWS アカウント当たり、1 リージョン内の Elastic IP 数 5
ルートテーブル当たりのルートの数 100
VPCあたりのセキュリティグループの数 500
セキュリティグループあたりのルール数(In/Out) 50
ネットワークインタフェースあたりのセキュリティグループ 5
VPC当たりのアクティブなVPCピア接続 125
VPCあたり(仮想プライベートゲートウェイ)のVPN接続数 10
VPCの作成方法