AWS Client VPN の IPv6 に関する考慮事項
クライアント VPN では、既存の IPv4 機能とともにネイティブ IPv6 接続がサポートされるようになりました。ネットワーク要件を満たすため、IPv6 のみ、IPv4 のみ、またはデュアルスタック (IPv4 と IPv6 の両方) のエンドポイントを作成できます。
IPv6 サポートの主要コンポーネント
クライアント VPN で IPv6 を使用する場合、2 つの主要な設定パラメータがあります。
- エンドポイントの IP アドレスタイプ
-
このパラメータは、エンドポイントにプロビジョニングされた EC2 インスタンスのタイプを決定する、エンドポイント管理 IP タイプを定義します。この IP タイプは、外部 VPN トンネルトラフィック (パブリックインターネット経由で OpenVPN のクライアントとサーバーの間を流れる暗号化されたトラフィック) を管理するために使用されます。
- トラフィック IP アドレスタイプ
-
このパラメータは、VPN トンネルを通過するトラフィックのタイプを定義します。この IP タイプは、内部で暗号化されたトラフィック (実際のペイロード)、クライアント CIDR 範囲、サブネットの関連付け、ルート、エンドポイントあたりのルールを管理するために使用されます。
IPv6 クライアント CIDR の割り当て
IPv6 クライアント CIDR の場合、CIDR ブロックを指定する必要はありません。Amazon は IPv6 クライアントの CIDR 範囲を自動的に割り当てます。この自動割り当てにより、IPv6 トンネルトラフィックの SNAT が不要となり、接続されたユーザーの IPv6 アドレスの可視性が向上します。
互換性の要件
IPv6 エンドポイントとデュアルスタックエンドポイントには、ユーザーデバイスとインターネットサービスプロバイダー (ISP) への依存関係があります。
-
CVPN クライアントを実行しているユーザーデバイスは、次の互換性表に示すように、必要とされる IP 設定をサポートする必要があります。
-
ISP は、接続が正しく機能するために必要な IP 設定をサポートしている必要があります。
-
IPv6 トラフィックまたはデュアルスタックトラフィックの場合、関連付けられた VPC サブネットには IPv6 またはデュアルスタックの CIDR 範囲が必要です。
DNS サポート
DNS は、IPv4、IPv6、デュアルスタックといった、すべてのタイプのエンドポイントでサポートされています。IPv6 エンドポイントの場合、--dns-server-ipv6 パラメータを使用して IPv6 DNS サーバーを設定できます。AAAA DNS レコードは、サービスとクライアントエンドの両方でサポートされています。
制限
IPv6 の制限事項は以下のとおりです。
-
IPv6 クライアントではクライアント間 (C2C) 通信はサポートされていません。IPv6 クライアントが別の IPv6 クライアントと通信しようとすると、トラフィックはドロップされます。
IPv6 のクライアントルート強制
クライアント VPN では、IPv6 トラフィックのクライアントルート強制をサポートするようになりました。この機能は、接続されたクライアントからの IPv6 ネットワークトラフィックが、管理者によって定義されたルートに従い、VPN トンネルの外部に誤って送信されないようにするのに役立ちます。
IPv6 クライアントルート強制サポートの主な側面:
-
既存の
ClientRouteEnforcementOptions.enforcedフラグは、IPv4 スタックと IPv6 スタックの両方で CRE を有効にします。 -
IPv6 クライアントルート強制では、重要な IPv6 機能を維持するために、特定の IPv6 範囲が除外されます。
::1/128— ループバック用に予約済みfe80::/10— リンクローカルアドレス用に予約済みff00::/8— マルチキャスト用に予約済み
-
IPv6 クライアントルート強制は、Windows、macOS、Ubuntu の AWS VPN クライアントのバージョン 5.3.0 以降で使用できます。
CRE を設定して有効にする方法など、CRE の詳細については、AWS Client VPN クライアントルート強制 を参照してください。
IPv6 リーク防止 (レガシー情報)
ネイティブ IPv6 サポートを使用しない古い設定でも、IPv6 リークを防ぐ必要がある場合があります。IPv6 リークは、IPv4 と IPv6 の両方が有効な状態で VPN に接続されているものの、VPN が IPv6 トラフィックをトンネルにルーティングしない場合に発生する可能性があります。この場合、IPv6 が有効な送信先に接続したときに、ISP から提供された IPv6 アドレスを使用して接続していることになります。これにより、実際の IPv6 アドレスがリークします。次の手順では、IPv6 トラフィックを VPN トンネルにルーティングする方法について説明します。
IPv6 リークを防ぐために、次の IPv6 関連のディレクティブをクライアント VPN 設定ファイルに追加する必要があります。
ifconfig-ipv6 arg0 arg1 route-ipv6 arg0
次の例のようになります。
ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1 route-ipv6 2000::/4
この例では、ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1 によって、ローカルトンネルデバイスの IPv6 アドレスが fd15:53b6:dead::2 に設定され、リモート VPN エンドポイント IPv6 アドレスが fd15:53b6:dead::1 に設定されます。
次のコマンド route-ipv6 2000::/4 は、2000:0000:0000:0000:0000:0000:0000:0000 から 2fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff の IPv6 アドレスを VPN 接続にルーティングします。
注記
例えば、Windows の「TAP」デバイスルーティングの場合、ifconfig-ipv6 の 2 つ目のパラメータが --route-ipv6 のルートターゲットとして使用されます。
組織は ifconfig-ipv6 の 2 つのパラメータを自身で設定する必要があり、100::/64 (0100:0000:0000:0000:0000:0000:0000:0000 から 0100:0000:0000:0000:ffff:ffff:ffff:ffff) または fc00::/7 (fc00:0000:0000:0000:0000:0000:0000:0000 から fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff) のアドレスを使用できます。100::/64 は破棄専用アドレスブロックであり、fc00::/7 は一意ローカルです。
別の例を紹介します。
ifconfig-ipv6 fd15:53b6:dead::2 fd15:53b6:dead::1 route-ipv6 2000::/3 route-ipv6 fc00::/7
この例では、設定により、現在割り当てられているすべての IPv6 トラフィックが VPN 接続にルーティングされます。
検証
貴社の組織では、おそらく独自のテストを実施することになるでしょう。基本的な検証は、フルトンネル VPN 接続を設定してから、IPv6 アドレスを使用して IPv6 サーバーに対して ping6 を実行することです。サーバーの IPv6 アドレスは、route-ipv6 コマンドによって指定された範囲内にある必要があります。この ping テストは失敗します。ただし、将来的に IPv6 サポートがクライアント VPN サービスに追加された場合は変わる可能性があります。ping が成功し、フルトンネルモードで接続しているときにパブリックサイトにアクセスできる場合は、さらにトラブルシューティングを行う必要があります。公開されているツールもあります。