はじめに
CloudFront の Origin に IPv6 が使えるようになりました!!
CloudFront の Origin が IPv6 に対応していなかったため、Origin に ALB を利用したい場合は IPv4 を利用するか、VPC Origin を利用する必要がありました。
今回のアップデートで Origin に IPv6 が使えるようになったため、ALB を Dualstack without public IPv4 にすることができ、Publi IPv4 の料金を抑えることが可能です。
CloudFront の設定
既存の CloudFront では Origin で設定を変更できます。
- IPv4のみ(デフォルト)— CloudFrontがIPv4経由でオリジンに接続するために使用するデフォルト設定です。
- IPv6のみ — オリジンドメインをIPv6アドレスに変換する必要があります。CloudFrontはオリジン接続にIPv6アドレスのみを使用します。
- デュアルスタック — IPv4とIPv6の両方で接続できます。
ALB の設定
ALBでは「Edit IP address type」から変更できます。
-
IPv4 ー パブリックとプライベートのIPv4接続
-
デュアルスタック ー パブリックとプライベートのIPv4接続。パブリックとプライベートのIPv6接続
-
Public IPv4 のないデュアルスタック ー プライベートIPv4接続。パブリックとプライベートのIPv6接続
事前に 利用する VPC と Subnet で IPv6 が利用できるようにしておく必要があることに注意してください。
IPv6で名前解決できるかも確認します。
% dig xxxxxxxx.ap-northeast-1.elb.amazonaws.com AAAA
; <<>> DiG 9.10.6 <<>> xxxxxxxx.ap-northeast-1.elb.amazonaws.com AAAA
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47521
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xxxxxxxx.ap-northeast-1.elb.amazonaws.com. IN AAAA
;; ANSWER SECTION:
xxxxxxxx.ap-northeast-1.elb.amazonaws.com. 60 IN AAAA yyyy:yyyy:yyyy:yyyy:f299:99e5:d6d:yyyy
xxxxxxxx.ap-northeast-1.elb.amazonaws.com. 60 IN AAAA yyyy:yyyy:yyyy:yyyy:2e77:585c:73c9:yyyy
xxxxxxxx.ap-northeast-1.elb.amazonaws.com. 60 IN AAAA yyyy:yyyy:yyyy:yyyy:791d:6e97:7aa7:yyyy
;; Query time: 22 msec
;; SERVER: 10.148.97.74#53(10.148.97.74)
;; WHEN: Fri Sep 12 22:05:23 JST 2025
;; MSG SIZE rcvd: 169
問題ないです。
IPv4の名前解決も確認しておきます。
% dig xxxxxxxx.ap-northeast-1.elb.amazonaws.com A
; <<>> DiG 9.10.6 <<>> xxxxxxxx.ap-northeast-1.elb.amazonaws.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53703
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;xxxxxxxx.ap-northeast-1.elb.amazonaws.com. IN A
;; AUTHORITY SECTION:
ap-northeast-1.elb.amazonaws.com. 31 IN SOA ns-1683.awsdns-18.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 60
;; Query time: 22 msec
;; SERVER: 10.148.97.74#53(10.148.97.74)
;; WHEN: Fri Sep 12 22:07:23 JST 2025
;; MSG SIZE rcvd: 169
IPv4では解決できないことも想定通りです。
念の為、ENIも確認しておきます。
Public IPv4はなく、Private IPv4とIPv6が付与されていることがわかります。
ALB のセキュリティグループの設定
セキュリティグループで CloudFront からのリクエストのみを許可している場合は CloudFront のIPv6 用の Managed prefix list を指定する必要があります。
Managed prefix list は VPC > Managed prefix lists から確認できます。
CloudFront からリクエストを確認
IPv6を利用できない環境ローカル環境からCloudFront経由で接続してみます。
% curl -v "https://d2qi37f0jf8y2l.cloudfront.net/api/v1/pictures"
* Host d2qi37f0jf8y2l.cloudfront.net:443 was resolved.
* IPv6: (none)
* IPv4: 3.173.195.58, 3.173.195.161, 3.173.195.40, 3.173.195.165
* Trying 3.173.195.58:443...
* Connected to d2qi37f0jf8y2l.cloudfront.net (3.173.195.58) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-AES128-GCM-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
* subject: CN=*.cloudfront.net
* start date: May 5 00:00:00 2025 GMT
* expire date: Apr 23 23:59:59 2026 GMT
* subjectAltName: host "d2qi37f0jf8y2l.cloudfront.net" matched cert's "*.cloudfront.net"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M01
* SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://d2qi37f0jf8y2l.cloudfront.net/api/v1/pictures
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: d2qi37f0jf8y2l.cloudfront.net]
* [HTTP/2] [1] [:path: /api/v1/pictures]
* [HTTP/2] [1] [user-agent: curl/8.7.1]
* [HTTP/2] [1] [accept: */*]
> GET /api/v1/pictures HTTP/2
> Host: d2qi37f0jf8y2l.cloudfront.net
> User-Agent: curl/8.7.1
> Accept: */*
>
* Request completely sent off
< HTTP/2 200
< content-type: application/json; charset=utf-8
< content-length: 5567
< date: Fri, 12 Sep 2025 13:13:44 GMT
< x-amzn-trace-id: Root=1-68c41c87-219999b82e24dd435c2cd1ee
< x-frame-options: SAMEORIGIN
< x-xss-protection: 0
< x-content-type-options: nosniff
< x-permitted-cross-domain-policies: none
< referrer-policy: strict-origin-when-cross-origin
< vary: Accept, Origin
< etag: W/"bfb268d2a06eefd0bc98845a7047653e"
< cache-control: max-age=0, private, must-revalidate
< x-request-id: bc99c995-8704-4846-b223-db71aa86d07c
< x-runtime: 0.075180
< x-cache: Miss from cloudfront
< via: 1.1 d378e69f0d86636650cb287a06732cf6.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT12-P8
< alt-svc: h3=":443"; ma=86400
< x-amz-cf-id: ZwDoXEeUIaCA1rkpyD196mSX5vr83rZ8FtN0YDeL62erfefXc4xfSg==
<
IPv4 で CloudFront へ接続し、ALBへはIPv6で接続ができています。
まとめ
Public IPv4 で接続している ALB を 簡単に IPv6 にすることができました。
Public IPv4 の料金を簡単に抑えることができるため、ぜひ利用してみてください。



