Amazon EC2とVPCがIPv6に対応しました #reinvent
ども、大瀧です。
本日AWSのプライベートネットワークサービスAmazon VPCのIPv6対応が発表されました。早速試してみた様子をレポートします。
VPCのIPv6対応範囲
今回のIPv6対応にはいくつか制限があります。以下にまとめます。
- 対象リージョンはオハイオのみ(今後他のリージョンに展開予定)
- IPv4のようにCIDRのレンジは選択できず、グローバルの/56プレフィックスが割り当てられる
設定手順
既存のVPCにIPv6プレフィックスの割り当てを追加してみます。今回はデフォルトVPCに設定しました。Amazon VPCの管理画面でVPC一覧を表示し、VPCのコンテキストメニューから[Edit CIDRs]をクリックします。
[Add IPv6 CIDR]ボタンをクリックすると、AWSが確保している/56のIPv6プレフィックスが割り当てられます。
VPC全体のプレフィックスが決まったので、次はサブネットのプレフィックスです。サブネットには/56のアドレス空間から/64のプレフィックスを割り当てます。VPCサブネットの一覧画面からサブネットのコンテキストメニューにある[Edit IPv6 CIDRs]をクリックします。
[Add IPv6 CIDR]ボタンをクリックします。
サブネットプレフィックスの末尾2桁を入力し、右側のチェックアイコンをクリックすればOKです。
VPCの設定は一旦これで完了です。IPv6インターネットにトラフィックを送信するためには追加設定が必要なので後述します。
EC2インスタンスの設定
続いて、EC2インスタンスにIPv6アドレスを割り当てます。既定のインスタンス作成ウィザードにはIPv6アドレスの設定が含まれないため、インスタンス作成後、コンテキストメニューの[ネットワーキング] - [Manage IP Addresses]から追加します。
[IPv6 addresses]の項目にある「新しいIPの割り当て」リンクをクリックし、右下の[更新する]ボタンを押下します。
下記のようにIPv6アドレスが割り当てられました。
IPv6インターネットへの送信設定
EC2インスタンス同士のIPv6通信であればこれまでの設定で十分ですが、外部ネットワークにトラフィックを送信するためにはゲートウェイとルーティングテーブルの設定が必要です。Direct Connect経由のオンプレミス環境との通信はVGW、インターネットとの双方向通信にはIGWが利用できます。今回のIPv6サポートと同時に新たに追加された、送信のみを扱うEgress Only Internet Gateway(EGW)をIGWの代わりにインターネットへの送信に利用することもできるようになったので、今回はEGWで試してみます。VPCの管理画面から作成し、作成時にVPCを選択すればOKです。
ルーティングテーブルの設定は、従来のIPv4と特に変わりません。送信先がIPv6表記をサポートしているので、今回はデフォルトルートをEGWに設定し、IPv6インターネットにトラフィックが送信できるように設定しました。
これでOKです。
動作確認
では、EC2インスタンスのOSから確認してみましょう。今回はAmazon Linux AMIを利用しました。追加の設定は特に必要なく、IPv6が有効でインスタンスに追加したIPv6グローバルアドレスが確認できます。デフォルトルートのエントリーは暗示的なルーターのリンクローカルアドレスが入っていますね。
[ec2-user@ip-172-31-11-186 ~]$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 02:82:5F:5D:16:F1 inet addr:172.31.11.186 Bcast:172.31.15.255 Mask:255.255.240.0 inet6 addr: fe80::82:5fff:fe5d:16f1/64 Scope:Link inet6 addr: 2600:1f16:b98:8d00:e270:c102:29a5:bfcb/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1 RX packets:29029 errors:0 dropped:0 overruns:0 frame:0 TX packets:1177 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:41514924 (39.5 MiB) TX bytes:105074 (102.6 KiB) [ec2-user@ip-172-31-11-186 ~]$ ip -6 route unreachable ::/96 dev lo metric 1024 error -113 pref medium unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113 pref medium unreachable 2002:a00::/24 dev lo metric 1024 error -113 pref medium unreachable 2002:7f00::/24 dev lo metric 1024 error -113 pref medium unreachable 2002:a9fe::/32 dev lo metric 1024 error -113 pref medium unreachable 2002:ac10::/28 dev lo metric 1024 error -113 pref medium unreachable 2002:c0a8::/32 dev lo metric 1024 error -113 pref medium unreachable 2002:e000::/19 dev lo metric 1024 error -113 pref medium 2600:1f16:b98:8d00::/64 dev eth0 proto kernel metric 256 pref medium unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113 pref medium fe80::/64 dev eth0 proto kernel metric 256 mtu 9001 pref medium default via fe80::96:f4ff:fea8:4cbb dev eth0 proto ra metric 1024 expires 1792sec hoplimit 64 pref medium
では、先日IPv6がサポートされたCloudFrontのIPv6アドレスを確認し、pingを送出してみます。(個人WebサイトにCloudFrontに向けたRoute 53エイリアスレコードを向けています)
[ec2-user@ip-172-31-11-186 ~]$ host -t aaaa takipone.com takipone.com has IPv6 address 2600:9000:2023:800:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:1200:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:2600:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:3e00:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:4200:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:5000:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:6400:13:3635:7840:93a1 takipone.com has IPv6 address 2600:9000:2023:da00:13:3635:7840:93a1 [ec2-user@ip-172-31-11-186 ~]$ ping6 2600:9000:2023:800:13:3635:7840:93a1 PING 2600:9000:2023:800:13:3635:7840:93a1(2600:9000:2023:800:13:3635:7840:93a1) 56 data bytes 64 bytes from 2600:9000:2023:800:13:3635:7840:93a1: icmp_seq=1 ttl=46 time=130 ms 64 bytes from 2600:9000:2023:800:13:3635:7840:93a1: icmp_seq=2 ttl=46 time=130 ms 64 bytes from 2600:9000:2023:800:13:3635:7840:93a1: icmp_seq=3 ttl=46 time=130 ms ^C --- 2600:9000:2023:800:13:3635:7840:93a1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 130.563/130.784/130.981/0.171 ms
pingレスポンスがIPv6で返ってきていますね!
まとめ
VPCおよびEC2のIPv6対応の様子を紹介しました。AWSのマネージドサービスのIPv6サポートも順次進んで行くと思いますので、AWSのIPv6対応がさらに進みそうですね!
IPv6化のメリットとしては豊富なアドレス空間があるので、例えばLambda on VPCでIPv4アドレス数の確保に苦戦する場合の解決策として期待できるんじゃないかなぁと社内で話してたりします。LambdaのIPv6対応とIPv6 Only VPCが実現すれば!