[アップデート] AWS PrivateLinkがIPv6をサポートしました
IPv6を使っていきたいな
こんにちは、のんピ(@non____97)です。
皆さんはIPv6を使っていきたいなと思っていますか? 私は思っています。
最近、IPv6をサポートしたというアップデートが多いので、このビッグウェーブに乗りたいなと思っています。
本日、そのビッグウェーブに乗ってAWS PrivateLinkがIPv6をサポートしたとアナウンスがありました。
AWS公式ブログにもこちらのアップデートについての投稿がされていますね。
早速IPv6のPrivateLinkを触ってみたので紹介します。
アップデートの紹介
AWS PrivateLinkがIPv6をサポートしました。(2度目)
IPv6をサポートしたことにより、エンドユーザーがIPv6のIPアドレスしか持っていなくても接続できます。
IPv6の設定をするとIPv4で接続できなくなるということはなく、IPv4とIPv6どちらのIPアドレスも割り当てたデュアルスタックな状態にもできるので、単純にアクセス可能な間口が広がるイメージです。
抜粋 : Expedite your IPv6 adoption with PrivateLink services and endpoints
IPv6のIPアドレスを割り当てるとなると、気になるのはインターネットからのアクセスです。インターネットからPrivateLinkにアクセスされるのは嫌ですよね。
安心してください。インターネットアクセスはデフォルトで無効になっています。そのため、Internet Gatewayを介したトラフィックを受信しません。
Internet access disabled by default: VPC Endpoint Elastic Network Interfaces (ENIs) with IPv6 addresses are private and not addressable from the Internet. The ENIs cannot receive any traffic over your VPC’s Internet Gateway (IGW), due to the DenyAllIGWTraffic attribute enabled on them. This cannot be disabled upon creation nor once deployed.
Expedite your IPv6 adoption with PrivateLink services and endpoints
IPv6のPrivateLinkは全てのパブリックAWSリージョンとGovCloudリージョンで利用可能です。
なお、タイプ「Gateway Load Balancer」ではサポートされません。
やってみた
検証の構成
検証は以下の構成で行います。
Consumer VPC上にIPv6のPrivateLinkを作成し、Consumer VPCのEC2インスタンスからIPv6でPrivateLinkにアクセスします。NLBとNginxをインストールしたEC2インスタンス間はIPv4で通信します。
検証に必要なリソースはAWS CDKでデプロイします。
こちらのコードのリポジトリは以下になります。
なお、2022/5/12時点ではAWS CDK、CloudFormationではPrivateLinkにIPv6の設定をすることはできなかったので、AWS CDKでデプロイ後に手動でIPv6で通信できるように設定変更します。
作成されたリソースの確認とIPv4での接続テスト
まず、作成されたリソースの確認とIPv4での接続テストを行います。
npx cdk deploy
で各種リソースをデプロイします。
IPv6のトラフィックを受信するには、NLBのIPアドレスタイプをデュアルスタックにする必要があります。
「NLBのIPアドレスタイプ」を確認すると、確かにdualstack
になっています。
次に、作成されたエンドポイントサービスを確認します。
「サポートされているIPアドレスタイプ」はipv4
になっています。
PrivateLinkも確認します。
「IPアドレスタイプ」、「DNSレコード」どちらもipv4
となっています。
表示されているDNS名vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com
を名前解決してみます。
$ dig vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com +short 10.10.0.46
IPv4のIPアドレスが返ってきました。
こちらのPrivateLinkにcurl
でアクセスしてみます。
$ curl -I vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com HTTP/1.1 200 OK Server: nginx/1.20.0 Date: Thu, 12 May 2022 07:06:23 GMT Content-Type: text/html Content-Length: 3520 Last-Modified: Thu, 15 Jul 2021 21:46:50 GMT Connection: keep-alive ETag: "60f0acca-dc0" Accept-Ranges: bytes
HTTPステータスコード200
が返ってきましたね。PrivateLinkを介してNginxをインストールしたEC2インスタンスまで通信できていそうです。
PrivateLinkにIPv6でアクセスできるように設定変更
それでは、PrivateLinkにIPv6でアクセスできるように設定変更します。
まず、エンドポイントサービスのIPアドレスタイプを変更します。
エンドポイントサービスを選択して、アクション
-サポートされているIPアドレスタイプを変更
をクリックします。
「サポートされているIPアドレスタイプ設定の変更」で、IPv6にチェックを入れて変更を保存
をクリックします。
「サポートされているIPアドレス」にipv6
が追加されました。
次に、エンドポイントのIPアドレスタイプとDNSレコードのIPタイプを変更します。
エンドポイントを選択して、アクション
-エンドポイント設定の変更
をクリックします。
「IPアドレスタイプ」をデュアルスタック
に、「DNSタイプ」をIPv6
に変更して、変更を保存
をクリックします。
「IPアドレスタイプ」がデュアルスタック、「DNSレコード」のIPタイプがipv6
が変更されました。
IPv6での接続テスト
それでは、IPv6で接続テストをします。
表示されているDNS名vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com
を名前解決してみます。
$ dig vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com AAAA +short 2600:1f18:4405:f202:81cb:f95e:4f0c:12d5
IPv6のIPアドレスが返ってきました。
こちらのPrivateLinkにcurl
でアクセスしてみます。
$ curl -Iv vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com * Trying 2600:1f18:4405:f202:81cb:f95e:4f0c:12d5:80... * Connected to vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com (2600:1f18:4405:f202:81cb:f95e:4f0c:12d5) port 80 (#0) > HEAD / HTTP/1.1 > Host: vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com > User-Agent: curl/7.79.1 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 200 OK HTTP/1.1 200 OK < Server: nginx/1.20.0 Server: nginx/1.20.0 < Date: Thu, 12 May 2022 09:10:49 GMT Date: Thu, 12 May 2022 09:10:49 GMT < Content-Type: text/html Content-Type: text/html < Content-Length: 3520 Content-Length: 3520 < Last-Modified: Thu, 15 Jul 2021 21:46:50 GMT Last-Modified: Thu, 15 Jul 2021 21:46:50 GMT < Connection: keep-alive Connection: keep-alive < ETag: "60f0acca-dc0" ETag: "60f0acca-dc0" < Accept-Ranges: bytes Accept-Ranges: bytes < * Connection #0 to host vpce-06a155d9b56cebe73-7527juv0.vpce-svc-0708827e5bacce7db.us-east-1.vpce.amazonaws.com left intact
IPv6でアクセスし、HTTPステータスコード200
が返ってきたことを確認できました。IPv6を使用した状態でも、PrivateLinkを介してNginxをインストールしたEC2インスタンスまで通信できていそうです。
IPv6サポートのビッグウェーブに乗り遅れるな
AWS PrivateLinkがIPv6をサポートしたアップデートを紹介しました。
IPv6サポートのビッグウェーブに乗り遅れないように、アップデートキャッチアップしておきたいですね。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!