概要
既存VPCのIPv4環境を変更せずに、IPv6環境のVPCと通信したい場合の構成パターンを検証します。AWS PrivateLinkのResource GatewayおよびVPCエンドポイントを利用することで、NLB不要かつクライアント側のIPv4環境はそのままにIPv6通信が可能です。
アーキテクチャ
- 既存VPCの設定変更が不要:IPv4のみのまま利用可能。VPCエンドポイントを配置するのみ
- NLB不要:Resource Gatewayを使用することでNLBが不要
- マネージドサービスで完結:PrivateLink + Resource Gateway + VPCエンドポイントで構成
環境
| リソース | CIDR / IPアドレス |
|---|---|
| test-vpc1 | 10.0.0.0/16 |
| test-vpc1-subnet | 10.0.0.0/24 |
| test-vpc1-ec2 | 10.0.0.21 |
| test-vpc3 | 10.2.0.0/16, fd81:0:0:200::/56 |
| test-vpc3-subnet2 | 10.2.1.0/24 |
| test-vpc3-ec2 | 10.2.1.235, fd81::244:f59b:7da9:a60d:6a2e |
通信フロー
- test-vpc1-ec2(IPv4)からVPCエンドポイントへIPv4でアクセス
- VPCエンドポイントがPrivateLink経由でtest-vpc3のResource Gatewayへ転送
- Resource Gatewayがターゲット(test-vpc3-ec2のプライベートIPv6アドレス)にアクセス
- test-vpc3-ec2にIPv6で到達
初期設定
- test-vpc1:IPv6無効(IPv4通信のみ。既存環境を変更しない想定)
- test-vpc3:IPv6有効(プライベートIPv6 Unique Local Address)
プライベートIPv6の使用
プライベートIPv6アドレスはインターネットに広告されないアドレスで、IPv4のプライベートアドレスに相当します。AWSでプライベートIPv6を使用するには、VPC IPAM(IP Address Manager)が必要です。Resource ConfigurationでIPアドレスをターゲットに指定する場合、パブリックIPv6(Amazon提供のGUA)は指定できないため、今回IPAMを使用してプライベートIPv6の払い出しを行います。
Step 1:IPAMの作成とプライベートIPv6プールの設定
test-vpc3にプライベートIPv6 ULA CIDRを割り当てるため、IPAMを作成してIPv6 ULAプールを設定します。
1-1. IPAMの作成
- VPCコンソール → IPアドレスマネージャー → IPAM → 「IPAMを作成」
- 以下の設定で作成
| 設定項目 | 値 |
|---|---|
| 名前 | test-ipam |
| オペレーティングリージョン | ap-northeast-1 |
1-2. プライベートスコープにIPv6 ULAプールの作成
- IPAMコンソール → プール → プライベートスコープを選択
- 「プールを作成」で以下を設定
| 設定項目 | 値 |
|---|---|
| 名前 | test-ipv6-ula-pool |
| アドレスファミリー | IPv6 |
| スコープ | プライベートスコープ |
| ロケール | ap-northeast-1(VPCと同じリージョン) |
1-3. プールにCIDRをプロビジョニング
プールにIPv6 ULA CIDRをプロビジョニングします。
| 設定項目 | 値 |
|---|---|
| CIDR | fd81::/48 |
Step 2:test-vpc3にプライベートIPv6 CIDRを追加
IPAMプールからtest-vpc3にプライベートIPv6 CIDRを割り当てます。
2-1. VPCにIPv6 CIDRを追加
- VPCコンソール → VPC → test-vpc3 → 「CIDRの編集」
- 「新しいIPv6 CIDRを追加」を選択
- 以下を設定
| 設定項目 | 値 |
|---|---|
| IPv6 CIDRブロックソース | IPAMで割り当てられたIPv6 CIDRブロック |
| IPAMプール | test-ipv6-ula-pool |
| CIDR | fd81:0:0:200::/56 |
2-2. サブネットにIPv6 CIDRを割り当て
- VPCコンソール → サブネット → test-vpc3-subnet2 → 「IPv6 CIDRの編集」
- プライベートIPv6 CIDRを割り当て(fd81:0:0:200::/56)
2-3. test-vpc3-ec2のENIにプライベートIPv6アドレスを割り当て
- EC2コンソール → ネットワークインターフェイス → test-vpc3-ec2のENIを選択
- 「IPアドレスの管理」→ IPv6アドレスを追加
- プライベートIPv6 ULAのサブネット範囲からアドレスを割り当て
割り当て後、test-vpc3-ec2にログイン後、プライベートIPv6 ULAが割り当てられていることを確認します。
[root@ip-10-2-1-235 ~]# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 state UP qlen 1000
inet6 fd81::244:f59b:7da9:a60d:6a2e/128 scope global dynamic noprefixroute
valid_lft 447sec preferred_lft 137sec
Step 3:Resource Gatewayの作成
Resource Gatewayをtest-vpc3に作成します。Resource Gatewayはtest-vpc3内のリソース(test-vpc3-ec2)への入口となります。
手順
- VPCコンソール → PrivateLinkとLattice → リソースゲートウェイ → 「リソースゲートウェイを作成」
- 以下の設定で作成
| 設定項目 | 値 |
|---|---|
| 名前 | test-resource-gateway |
| IPアドレスタイプ | Dualstack |
| VPC | test-vpc3 |
| サブネット | test-vpc3-subnet2 |
| セキュリティグループ | test-vpc3-resource-gateway-sg |
※ IPアドレスタイプ「IPv6」はIPv6 onlyサブネットの場合のみ使用可能です。dualstack(IPv4+IPv6)サブネットの場合は「Dualstack」を選択します。
セキュリティグループの設定
Resource Gatewayに適用するセキュリティグループのアウトバウンドルールは検証のため、IPv6通信をフルオープンで設定します。
| 方向 | タイプ | プロトコル | ポート | 送信先 |
|---|---|---|---|---|
| アウトバウンド | すべてのトラフィック | すべて | すべて | ::/0 |
Step 4:Resource Configurationの作成
Resource Configurationで、アクセス先リソース(test-vpc3-ec2)の情報を定義します。ここでtest-vpc3-ec2のプライベートIPv6アドレスを指定します。
手順
- VPCコンソール → PrivateLinkとLattice → リソース設定 → 「リソース設定を作成」
- 以下の設定で作成
| 設定項目 | 値 |
|---|---|
| 名前 | test-resource-config |
| タイプ | Single |
| リソースゲートウェイ | test-resource-gateway(Step 3で作成) |
| リソース定義タイプ | IPアドレス |
| IPアドレス | fd81::244:f59b:7da9:a60d:6a2e(test-vpc3-ec2のプライベートIPv6) |
| プロトコル | TCP |
| ポート範囲 | 1-65535 |
Step 5:VPCエンドポイントの作成
test-vpc1にVPCエンドポイントを作成します。test-vpc1-ec2はこのVPCエンドポイント経由でtest-vpc3-ec2にアクセスします。
VPCエンドポイントの作成時にタイプとして「リソース」を選択することで、Resource Endpointとして作成されます。
手順
- VPCコンソール → エンドポイント → 「エンドポイントを作成」
- 以下の設定で作成
| 設定項目 | 値 |
|---|---|
| 名前 | test-resource-endpoint |
| タイプ | リソース |
| リソース設定 | test-resource-config(Step 4で作成) |
| VPC | test-vpc1 |
| サブネット | test-vpc1-subnet |
| IPアドレスタイプ | IPv4 |
| セキュリティグループ | test-vpc1-endpoint-sg |
test-vpc1はIPv4のみの環境のため、IPアドレスタイプは「IPv4」を選択します。これにより、test-vpc1-ec2はIPv4アドレスでVPCエンドポイントにアクセスできます。PrivateLink内部でIPv6に変換され、Resource Gateway経由でtest-vpc3-ec2に到達します。
セキュリティグループの設定
VPCエンドポイントに適用するセキュリティグループで、test-vpc1-ec2からのインバウンドを許可します。検証のためすべてのトラフィックを許可しています。
| 方向 | タイプ | プロトコル | ポート | 送信元 |
|---|---|---|---|---|
| インバウンド | すべてのトラフィック | すべて | すべて | 10.0.0.0/24(test-vpc1-subnet) |
Step 6:セキュリティグループの設定
test-vpc3-ec2のセキュリティグループで、IPv4アドレスは許可せず、Resource GatewayからのIPv6インバウンドを許可します。Resource GatewayのENIからのアクセスとなるため、test-vpc3-subnet2のIPv6 CIDR範囲を許可します。検証のためすべてのトラフィックを許可しています。
| 方向 | タイプ | プロトコル | ポート | 送信元 |
|---|---|---|---|---|
| インバウンド | すべてのトラフィック | すべて | すべて | fd81:0:0:200::/56(test-vpc3のプライベートIPv6 CIDR) |
Step 7:疎通確認
test-vpc3-ec2にNginxをインストール
Resource Endpointを経由する通信はTCPのみサポートのため、疎通確認用にtest-vpc3-ec2にNginxをインストールします。
[root@ip-10-2-1-235 ~]# dnf install nginx
[root@ip-10-2-1-235 ~]# systemctl start nginx
test-vpc1-ec2からのアクセス確認
VPCエンドポイントを作成後、エンドポイントの「リソース設定の関連付け」タブでDNS名を確認します。
DNS名を使用してtest-vpc1-ec2からアクセスします。
[root@ip-10-0-0-21 ~]# curl vpce-xxxxxxxxxxxxxxxxx.rcfg-xxxxxxxxxxxxxxxxx.xxxxxxx.vpc-lattice-rsc.ap-northeast-1.on.aws
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, nginx is successfully installed and working.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
test-vpc1-ec2(IPv4のみ)からPrivateLink経由でtest-vpc3-ec2(IPv6)のNginxにアクセスできることを確認しました。
IPv6通信の確認
test-vpc3-ec2のNginxアクセスログを確認し、Resource Gateway経由でIPv6通信が行われていることを確認します。
[root@ip-10-2-1-235 ~]# tail /var/log/nginx/access.log
fd81::228:3626:c:6926:5745 - - [21/Jun/2026:05:46:18 +0000] "GET / HTTP/1.1" 200 896 "-" "curl/8.17.0" "-"
アクセス元IPが fd81::228:3626:c:6926:5745(Resource GatewayのENIに割り当てられたプライベートIPv6アドレス)で記録されており、IPv6で通信していることが確認できました。
まとめ
本構成により、以下の確認を実施しました。
- 既存VPCの設定変更が不要:IPv4のみのまま利用可能。VPCエンドポイントを配置するのみ
- NLB不要:Resource Gatewayを使用することでNLBが不要
- マネージドサービスで完結:PrivateLink + Resource Gateway + VPCエンドポイントで構成










