1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFront のOrigin が IPv6 に対応!!

Posted at

はじめに

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の両方で接続できます。

スクリーンショット 2025-09-12 21.56.36.png

ALB の設定

ALBでは「Edit IP address type」から変更できます。

  • IPv4 ー パブリックとプライベートのIPv4接続

  • デュアルスタック ー パブリックとプライベートのIPv4接続。パブリックとプライベートのIPv6接続

  • Public IPv4 のないデュアルスタック ー プライベートIPv4接続。パブリックとプライベートのIPv6接続

スクリーンショット 2025-09-12 21.58.41.png

事前に 利用する 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も確認しておきます。

スクリーンショット 2025-09-12 21.10.49.png

Public IPv4はなく、Private IPv4とIPv6が付与されていることがわかります。

ALB のセキュリティグループの設定

セキュリティグループで CloudFront からのリクエストのみを許可している場合は CloudFront のIPv6 用の Managed prefix list を指定する必要があります。

Managed prefix list は VPC > Managed prefix lists から確認できます。

スクリーンショット 2025-09-12 22.03.54.png

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 の料金を簡単に抑えることができるため、ぜひ利用してみてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?