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®ion=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®ion=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 を使う必要があります。