【EIP有料化】既存のVPCをIPv6対応にしてIPv4有料化問題に立ち向かう【IPv4枯渇問題】

どもども、皆様いかがお過ごしでしょうか。僕は子育てと家探しで日々てんやわんやしております。

今回の記事では既存のVPCにIPv6アドレスを割り当てて、EC2インスタンスにIPv6アドレスで接続してみたいと思います。

IPv6についての知識なんてとっくに抜けてしまったよ!という方は下記記事で事前に復習していただくことをおすすめします。

IPv6 アドレス指定の概要
基本情報技術者試験で問われる2進数と16進数の算出方法とは?

なぜIPv6なのか

(すぐにIPv6対応に取り掛かりたい方は次の章まで飛ばしてもらっても問題ありません!)

さて皆様、AWSによるパブリック IPv4 アドレスの利用に対する新しい料金体系を発表はもうごらんになられましたか?

発表の中で最も衝撃的な内容といえばやはり

2024 年 2 月 1 日より、特定のサービスに割り当てられているかどうかに関わらず、すべてのパブリック IPv4 アドレスの利用に対して 1 IP アドレスあたり 0.005 USD/時間 が課金されます(アカウントに払い出されているものの、 どの EC2 インスタンスにも割り当てられていないパブリック IPv4 アドレスに関しては、すでに課金が適用されています)。

https://aws.amazon.com/jp/blogs/news/new-aws-public-ipv4-address-charge-public-ip-insights/

ということでしょう。これは事件です。

AWSではElastic IP アドレス(以下EIP)を利用することでコンピューティングリソースなどに対して固定のIPv4アドレスを付与できることは既にご存知かも知れません。問題はその料金です。

これまでは割り当てられたEIPは特定のリソースと関連づけている限り費用はかかりませんでした。しかし、新料金体型では関連づけられているかどうかに関わらず一律1時間あたり$0.005の料金が発生します

これはかなり大きな問題で、例えば50個のEIPを利用している場合1ヶ月で$183ほどの料金が発生することとなります。当然ですがEIPを利用する限りずっとかかってくる費用です。

このような料金体型の背景として

IPv4 アドレスはますます希少な資源となっており、パブリック IPv4 アドレスを取得するためのコストは、過去 5 年間で 300% 以上上昇しています。この新しい料金体系の導入は、私たち自身のコストを反映したものであり、また、パブリック IPv4 アドレスの使用を節約し、モダナイゼーションおよび IPv4 アドレスの保全策として IPv6 の採用を奨励することを意図しています。

https://aws.amazon.com/jp/blogs/news/new-aws-public-ipv4-address-charge-public-ip-insights/

と説明されています。

もちろん今回紹介する方法をもってしてもIPv4からIPv6への置換はとてもハードなものであり、対応コストとEIPの追加コストをもとに対応するかどうかは慎重に検討するべきですが、少なくとも対応方法は抑えておくべきかと思います。

VPCをIPv6利用可能にする

今回実施する内容はAWS公式ドキュメントで紹介されているものになりますので、ぜひそちらもチェックしてください!(特に考慮事項は事前に参照いただいたほうがいいかと思います。)

VPC を IPv4 から IPv6 に移行する

今回行うのはVPCをIPv4とIPv6の両方を利用できるデュアルスタックモードで使用することであり、IPv4からIPv6への完全移行ではないという点はあらかじめ把握しておいてください。

それでは始めます。まずはAWSコンソール、VPCのページから今回IPv6対応するVPCを選択肢、画面右上「アクション」から「CIDR の編集」をクリックしてください。すると、下記のような画面になります。

上記画面左下の「新しいIPv6 CIDR を追加」をクリックしてみます。すると下記のような選択肢が表示されました。

それぞれの選択肢についての詳細はこちらの記事を参照してください。今回は「Amazon が提供する IPv6 CIDR ブロック」を選択します。すると…

無事IPv6アドレスが割り当てられていますね!続いてIPv6 CIDR ブロックをサブネットと関連付けましょう。

IPv6を適用するサブネットを選択し、「アクション」、「IPv6 CIDR の編集」、「IPv6 CIDR の追加」 の順に選択します。

上記のように追加できましたら保存しましょう。

続いてIPv6アドレスによるインターネット接続を可能にするためにルートテーブルを更新します。今回はパブリックサブネットに関連づけられているルートテーブルを更新するため以下のように宛先に ::/0 を選択し、ターゲットをインターネットゲートウェイの ID としました。(プライベートサブネットの対応についてはこちらを参照してください!)

これで準備完了です。

EC2インスタンスにIPv6を付与してSSH接続してみる

次にEC2インスタンスにIPv6アドレスを付与しましょう。EC2のページから「アクション」、「ネットワーキング」、「IP アドレスの管理」の進んでいきます。eth0の左隣にある三角マークをクリックするとIPの割り当てについて設定できるので、IPv6を自動割り当てしましょう。

そしてEC2のネットワーキングを確認すると

から

へと更新されており、IPv6が付与されていることがわかりました!

セキュリティグループの変更も忘れてはいけません。SSH接続元を制限している場合、IPv4だけでなくIPv6も許可しないと接続することはできないからです。こちらのサイトなどを利用してご自身のIPv6を確認し、該当IPからのSSH接続を許可してください。

あとはお好きなターミナルからIPv6を利用してSSH接続してみてください!いつもIPv4アドレスを指定している部分をIPv6アドレスに変更するだけで多くの場合は問題なく接続できるはずです!

無事接続できればIPv6対応完了です!

…とはいえ注意事項がまだ残っています。

AWSさんにお願い…

これで無事IPv6の利用が始まりIPv4料金発生問題解決!…かと思いきや新料金体型には以下のような驚くべき要項があります。

VPC 内のリソース、Amazon Global Accelerator、AWS Site-to-Site VPN トンネルに割り当てられた、使用中のパブリック IPv4 アドレス(AWSが提供するパブリック IPv4 アドレスおよび Elastic IP アドレスを含む)

https://aws.amazon.com/jp/blogs/news/new-aws-public-ipv4-address-charge-public-ip-insights/

そして下記のようなコンボが待ち構えています。

起動後に、インスタンスからパブリック IP アドレスの割り当てを手動で解除することはできません

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/using-instance-addressing.html

後出しになってしまって心苦しいですが、パブリックIPの自動割り当てを有効化して作成してしまったインスタンスはIPv4アドレスを紐付け解除できないため、どうしても料金が発生してしまうのが現状です。

これに対応するにはAMIからパブリックIPの自動割り当てを無効にした状態で再度インスタンスを該当VPC・サブネットに立ち上げる必要性があります。インスタンスの内容によってはなかなかにめんどくさいですよね…

AWSさん、自動割り当てされたパブリックIPv4アドレスを後から割り当て解除できるようにしてください!


ここまでお付き合いいただきありがとうございました!

↓おすすめ書籍

AWS

Posted by CY