コンテンツにスキップ

AWS で IPv6 only subnet を使ってみた

概要

AWS では以前から部分的に IPv6 をサポートしていますが、VPC 内で IPv6 を使う場合、IPv4 を無効にできずデュアルスタックにするしかなかったため、IPv4/IPv6 両方のトラフィックが発生してセキュリティグループなどの管理コストが増えてしまうことがひとつの難点でした。

内部ネットワークを IPv6 化する利点としては以下のようなものがあると思います。

  • サブネットごとのホスト数を考慮したアドレス設計が不要になる。(サブネットを作るときにどう分割するか決めておく必要があった。)
  • グローバルユニークなアドレスを使うため、サブネットを相互接続する際にバッティングすることがない。
  • NAT ゲートウェイ/インスタンスが不要になる。(代わりに Egress Only Interget Gateway を使いますが、こちらは料金がかからない。)

このたび、IPv6 だけでサブネットを構築することができるようになったようなので、試してみました。

参考)

HOWTO

TODO

動作確認

[ec2-user@i-0a7b82428ff495a19 ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9001
        inet 169.254.166.89  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::498:ff:fe3c:19cf  prefixlen 64  scopeid 0x20<link>
        inet6 2406:da14:901:2411:5150:9d49:c06:b42e  prefixlen 128  scopeid 0x0<global>
        ether 06:98:00:3c:19:cf  txqueuelen 1000  (Ethernet)
        RX packets 4538  bytes 651378 (636.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5175  bytes 596299 (582.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • パブリック DNS 名はつかない
  • 自分自身の IPv4 アドレスが引けないので、

IMDS

IMDS と通信するためのアドレスは持っており、IPv4 のままで良いようです。

curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"

IPv6 でアクセスは、、できない??

curl -X PUT "http://[fd00:ec2::254]/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"

DNS 解決

[ec2-user@i-0a7b82428ff495a19 ~]$ dig a www.google.com
()
;; SERVER: fd00:ec2::253#53(fd00:ec2::253)
()

fd00:ec2::253 が DNS リゾルバになっているようです。

アップデート

[ec2-user@i-0a7b82428ff495a19 ~]$ sudo yum update
Failed to set locale, defaulting to C
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/core/2.0/aarch64/41ac7fbfd1e159fb26681f9529ea3df5d1797ae2988548e9fde6366dcffb4cfe/repodata/repomd.xml?instance_id=i-0a7b82428ff495a19&region=ap-northeast-1: [Errno 12] Timeout on https://amazonlinux-2-repos-ap-northeast-1.s3.ap-northeast-1.amazonaws.com/2/core/2.0/aarch64/41ac7fbfd1e159fb26681f9529ea3df5d1797ae2988548e9fde6366dcffb4cfe/repodata/repomd.xml?instance_id=i-0a7b82428ff495a19&region=ap-northeast-1: (28, 'Connection timed out after 5001 milliseconds')

Amazon Linux 2 の yum リポジトリは IPv6 でサービスしていない。

AWS API

AWS API エンドポイントは IPv6 に対応しているか? VPC Endpoint は?

IPv6 only のサブネットで ECS を使ったらどうなるか

IPv6 only のサブネットで Elastic Beanstalk を使ったらどうなるか

IPv6 only のサブネットで Lambda を使ったらどうなるか

Lambda を VPC に収容した場合、パブリックサブネットであってもインターネットに出ることができないため、VPC Endpoint か NAT Gateway を使う必要があります。

所感