🔐 AWS Site-to-Site VPN
IPv4 / IPv6 トラフィック完全ガイド
VPN トンネルの「外側」と「内側」で IPv4 / IPv6 を自在に組み合わせる仕組みを図解
VPN トンネルは「外側の道路」と「中身の荷物」で、それぞれ IPv4 / IPv6 を選べる
1本の VPN 接続で IPv4 と IPv6 の両方を同時に運ぶことはできない(別々に接続が必要)
外部トンネル IPv6 は Transit Gateway / Cloud WAN のみ対応(VGW は非対応)
既存 VPN に後から IPv6 を追加できない → 削除して新規作成が必要
🚂 たとえ話:貨物列車とトンネルの関係
VPN の IPv4/IPv6 の仕組みを「鉄道」にたとえて理解しましょう
AWS Site-to-Site VPN を「鉄道システム」にたとえてみましょう。
外部トンネル IP(IPv4 / IPv6)は、列車が走る「線路・トンネルの規格」です。従来の狭軌線路(IPv4)と、新型の広軌線路(IPv6)があります。
内部パケット(IPv4 / IPv6)は、列車に積む「貨物コンテナの種類」です。従来型コンテナ(IPv4 パケット)と、新型コンテナ(IPv6 パケット)があります。
重要なルール:1本の列車(VPN 接続)には1種類のコンテナしか積めません。従来型と新型を混載することはできないため、両方を運びたい場合は2本の列車を手配する必要があります。
| 鉄道のたとえ 🚂 | AWS VPN の実体 | ポイント |
|---|---|---|
| 線路・トンネルの規格 | 外部トンネル IP アドレス | IPv4(従来)または IPv6(新型)を選択 |
| 貨物コンテナの種類 | 内部パケットの IP バージョン | IPv4 または IPv6 のいずれか1種類のみ |
| 1本の列車 = 1種類のコンテナのみ | 1本の VPN 接続 = 1つの IP バージョンのみ | IPv4 と IPv6 の混載は不可 |
| 2本の列車を手配 | 2本の VPN 接続を作成 | デュアルスタックには2本必要 |
| 新型線路は最新の駅でのみ利用可能 | 外部 IPv6 は TGW / Cloud WAN のみ | VGW(旧型駅)は非対応 |
| 線路を走行中に規格変更は不可 | 既存 VPN に後から IPv6 追加は不可 | 削除 → 新規作成が必要 |
📐 VPN トンネルの外側と内側の構造
「トンネルの外側の IP」と「中を流れるパケットの IP」は独立して選択できます
📦 4つの IP 構成パターン
外側トンネルと内側パケットの IPv4/IPv6 の組み合わせは4パターンあります
VGW ✓ TGW ✓ Cloud WAN ✓
VGW ✗ TGW ✓ Cloud WAN ✓
VGW ✗ TGW ✓ Cloud WAN ✓
VGW ✗ TGW ✓ Cloud WAN ✓
⚠️ 重要な制約ルール
IPv4/IPv6 VPN で覚えておくべき6つの制約
1本の VPN 接続で IPv4 と IPv6 のトラフィックを同時に流すことはできません。デュアルスタックには2本の VPN 接続が必要です。
既存の Site-to-Site VPN 接続に対して IPv6 サポートを追加することはできません。既存接続を削除して新規作成する必要があります。
外部トンネル IP に IPv6 を使えるのは Transit Gateway または Cloud WAN で終端する VPN のみ。VGW では使えません。
外部トンネル IP に IPv6 を使う場合、AWS 側と Customer Gateway 側の両方に IPv6 アドレスを割り当てる必要があります。
プライベート IP VPN は外部トンネル IP に IPv6 をサポートしません。RFC 1918 または CGNAT アドレスのみ使用可能です。
IPv6 VPN は IPv4 VPN と同じスループット(Gbps / PPS)、MTU、ルート制限をサポートします。暗号化方式も同一です。
📊 ゲートウェイタイプ別 対応比較表
どのゲートウェイでどの構成が使えるかを一覧で確認
| 構成パターン | VGW (仮想プライベートGW) |
Transit Gateway | Cloud WAN |
|---|---|---|---|
| ① IPv4 外部 + IPv4 内部 | ✓ | ✓ | ✓ |
| ② IPv4 外部 + IPv6 内部 | ✗ | ✓ | ✓ |
| ③ IPv6 外部 + IPv6 内部 | ✗ | ✓ | ✓ |
| ④ IPv6 外部 + IPv4 内部 | ✗ | ✓ | ✓ |
| プライベート IP VPN | ✗ | ✓ (IPv4のみ) | ✗ |
🔄 デュアルスタック VPN 構成
IPv4 と IPv6 の両方をハイブリッド接続するための構成
💻 設定例(IPv6 VPN 作成)
AWS CLI / CloudFormation / Terraform による IPv6 対応 VPN の設定例
# 1. Customer Gateway 作成(IPv4 パブリック IP を指定) aws ec2 create-customer-gateway \ --type ipsec.1 \ --bgp-asn 65000 \ --ip-address 203.0.113.1 # 2. IPv6 内部パケット対応の VPN 接続を作成 # TunnelInsideIpVersion を ipv6 に設定 aws ec2 create-vpn-connection \ --type ipsec.1 \ --customer-gateway-id cgw-0abc123def456 \ --transit-gateway-id tgw-0xyz789ghi012 \ --options '{"TunnelInsideIpVersion":"ipv6"}' # 3. VPN 接続の状態を確認 aws ec2 describe-vpn-connections \ --vpn-connection-ids vpn-0abc123456 \ --query 'VpnConnections[0].State'
AWSTemplateFormatVersion: '2010-09-09' Description: IPv6 Site-to-Site VPN with TGW Resources: CustomerGateway: Type: AWS::EC2::CustomerGateway Properties: Type: ipsec.1 BgpAsn: 65000 IpAddress: 203.0.113.1 VpnConnectionIPv6: Type: AWS::EC2::VPNConnection Properties: Type: ipsec.1 CustomerGatewayId: !Ref CustomerGateway TransitGatewayId: !Ref TransitGateway # IPv6 内部パケットを有効化 VpnTunnelOptionsSpecifications: - TunnelInsideIpVersion: ipv6 - TunnelInsideIpVersion: ipv6
# Customer Gateway resource "aws_customer_gateway" "main" { bgp_asn = 65000 ip_address = "203.0.113.1" type = "ipsec.1" } # IPv6 VPN Connection (TGW に接続) resource "aws_vpn_connection" "ipv6" { customer_gateway_id = aws_customer_gateway.main.id transit_gateway_id = aws_ec2_transit_gateway.main.id type = "ipsec.1" # IPv6 内部パケットを有効化 tunnel_inside_ip_version = "ipv6" tunnel1_inside_ipv6_cidr = "fd00::/126" tunnel2_inside_ipv6_cidr = "fd00::4/126" }
✅ ベストプラクティス vs ❌ アンチパターン
- Transit Gateway を使ってデュアルスタック VPN を構成する
- IPv6 移行は段階的に ─ まず ② の構成(IPv4 外 + IPv6 内)から開始
- BGP を使用して IPv6 ルートを動的に交換する
- VPC とオンプレミスの両方で IPv6 CIDR を事前に設計する
- 2本の VPN 接続を独立して監視し、個別にフェイルオーバーを設計する
- VGW で IPv6 VPN を使おうとする(非対応で失敗する)
- 既存 VPN に IPv6 を「後から追加」できると思い込む
- 1本の VPN で IPv4 + IPv6 トラフィックを混載しようとする
- プライベート IP VPN で外部 IPv6 アドレスを使おうとする
- CGW 側に IPv6 アドレスを割り当てずに IPv6 外部トンネルを作成する
🔧 トラブルシューティング
原因: VGW(仮想プライベートゲートウェイ)を選択している可能性
原因: CGW 側に IPv6 アドレスが設定されていない
原因: VPC サブネットに IPv6 CIDR が関連付けられていない
原因: 仕様上、既存 VPN への IPv6 後付けは不可
📝 AWS 認定試験対策(ANS-C01 / SAP-C02)
- 1 「1本の VPN で IPv4 と IPv6 を同時に」→ 不可。デュアルスタックには2本の VPN 接続が必要
- 2 「VGW で IPv6 VPN」→ 非対応。IPv6 は TGW / Cloud WAN でのみ使用可能
- 3 「既存 VPN への IPv6 追加」→ 不可。削除 → 新規作成が必要
- 4 IPv6 VPN トンネルの CIDR: /30 IPv4 + /126 IPv6(fd00::/8 範囲)
- 5 外部 IPv6 を使う場合: AWS 側 + CGW 側の両方に IPv6 アドレスが必要
- 6 Private IP VPN は外部 IPv6 アドレスをサポートしない(RFC 1918 / CGNAT のみ)
- 7 問題文で「デュアルスタック」「IPv6 移行」が出たら → TGW + 2本の VPN 接続を想起する