この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
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)でした!