はじめに
こんにちは、KUDs です。
先日、AWS のパブリック IP アドレス有料化に伴い以下の記事を書きました。
上記の記事では、使用中のパブリック IP アドレスを特定する方法を確認しました。
今回の記事では、その後の対策としてパブリック IPv4 アドレスを廃止し、IPv6 へ移行する手順を確認します。
AWS パブリック IPv4 アドレスの有料化について
前回の記事でも確認しましたが、改めておさらいしておきましょう。
概要
重要な点は以下です。
- 2024 年 2 月より、AWS はパブリック IPv4 アドレスの利用を課金対象としました。
- 新料金体系では、パブリック IPv4 アドレスを使用するすべてのサービスに対し、使用中の 1 IP アドレスあたり 0.005 USD / 時間 の料金が課金されます。
- パブリックな EC2 一台のみ運用している場合は 540 円 / 月 ぐらいのコスト増
- 「すべてのサービス」なので、以下のようなものも含まれます。
- RDS
- EKS
- ELB
- NAT Gateway 等 …
詳細は公式の発表をご参照ください。
公式の発表
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 使おう
猶予期間
パブリック IPv4 の料金の開始に伴い、AWS 無料利用枠に 750 時間の無料パブリック IPv4 アドレスが含まれるようになりました
投稿日: Feb 1, 2024
本日より、12 か月間無料の Amazon Elastic Compute Cloud の AWS 無料利用枠が更新され、1 か月あたり 750 時間のパブリック IPv4 アドレスの使用が含まれるようになります。Amazon EC2 の既存または新規の AWS 無料利用枠のお客様の場合、パブリック IPv4 アドレスを使用して EC2 インスタンスを起動すると、1 か月あたり 750 時間のパブリック IPv4 アドレスの使用が無料になります。
https://aws.amazon.com/jp/about-aws/whats-new/2024/02/aws-free-tier-750-hours-free-public-ipv4-addresses/
今回の有料化に伴いパブリック IP アドレスは無料利用枠の対象になりました。
IPv6 移行の猶予期間という建前ではないものの、なるはやで移行を検討すべきでしょう。
IPv6 の概要
そもそも IPv6 って何だ?という方向けに、基本的なところをおさらいします。
IPv6 の基本
- Internet Protocol version 6 の略称
- IPv4 アドレスの枯渇問題に対する長期的な解決策
- IPv6 は 128 ビットのアドレス長を持ち、理論上は約340澗(3.4 x 10^38)のユニークなIPアドレスを生成可能
- これによって、地球上のあらゆるデバイスに固有の IP アドレスを割り当てることが可能となり、デバイス間の直接通信が容易に
なお、AWS では、IPv6 をサポートする多くのサービスがあります。
- EC2インスタンス
- VPC(Virtual Private Cloud)
- S3(Simple Storage Service)
- ELB(Elastic Load Balancing)など
主要なサービスでIPv6の使用が可能です。
詳細は公式ドキュメントにまとまってますので、ご参照ください。
IPv6 と IPv4 の違い
IPv6 と IPv4 の主な違いは、前述の通りアドレス空間の大きさにあります。
- IPv4
- 32ビットのアドレス長を持ち、約43億のユニークなIPアドレスを提供
- インターネットの急速な成長によりこれらのアドレスはすでに枯渇
- IPv6
- 128ビットアドレス長は、実質的に無限に近いアドレス空間を提供
- 将来的なデバイスの増加に対応
そのため、IPv6 では、NAT(Network Address Translation)の必要性が低減します。
IPv4 環境では、パブリックIPアドレスの不足を補うためにNATを広く使用していますが、IPv6 では各デバイスがグローバルにユニークな IP アドレスを持つため、E2E の接続が行えるようになります。
さらに、IPv6 は、セキュリティ機能がプロトコルレベルで強化されています。
IPsec(Internet Protocol Security)は、IPv6 のオプションではなく必須の機能として組み込まれており、データの暗号化と認証を提供します。
これによって、IPv6 ネットワークは、設計段階からセキュリティが考慮されています。
AWS における IPv4 と IPv6 の違いは以下の公式ドキュメントが参考になるかと思います。
実際に IPv4 から IPv6 へ移行してみる
この章では、実際に VPC の設定を変更し、IPv6 を EC2 インスタンスに付与します。
もちろん、パブリック IPv4 アドレスは解除するように設定します。
VPC の設定を変更
まず、マネジメントコンソールを開き、対象の VPC を選択します。
CIDR の編集
次に、[アクション] > [CIDR の編集] を選択しましょう。
「新しい IPv6 CIDR を追加」をクリックします。
IPv6 CIDR を追加ウィンドウが表示されるので、「Amazon 提供の IPv6 CIDR ブロック」を選択し、「CIDR を選択」をクリックします。
これによって、IPv6 CIDR が追加されます。
問題なければ、「閉じる」をクリックし、設定を完了しましょう。
ネットワーク ACL の確認
NACL (Network Access Control List) の設定はこの時点で自動的に更新されるはずです。
念のため確認しておきましょう。
セキュリティグループの確認
同様に SG (Security Group) のアウトバウンドルールにも自動反映されますので、確認しておきましょう。
ついでに、インバウンドルールも IPv6 通信の必要性に応じて修正しておくと良いでしょう。
ルートテーブルの確認
同様に Route Table のルートも確認しておきましょう。
local は自動反映されますが、インターネット向けの通信や vpc peering 等は適宜設定しましょう。
サブネットの設定
さて、次にサブネットの設定を行っていきます。
IPv6 CIDR の編集
まずはサブネットの CIDR を割り当てましょう。
対象のサブネットを選択し、アクションから「IPv6 CIDR の編集」を選択します。
IPv6 CIDR を追加を選択し、良しなに設定し、保存します。
サブネットの設定を編集
次に、IPv6 の自動割り当てを有効にしましょう。
対象のサブネットを選択し、アクションから「サブネットの設定を編集」を選択します。
IPv6 アドレスの自動割り当てを有効にする にチェックをしましょう。
パブリック IPv4 アドレスの自動割り当てを有効化 のチェックは外しましょう。
保存をクリックします。
EC2 インスタンスへの IPv6 アドレス割り当て
ここまでの設定が完了している場合、EC2 インスタンスを新規起動すれば自動的に IPv6 アドレスが付与され、パブリック IPv4 アドレスは付与されないはずです。
AMI を取得し、新規にインスタンスを起動してみることをおすすめします。
「起動後の EC2 インスタンスからパブリック IPv4 を外して IPv6 を付けたい」
という方もいらっしゃるかと思います。
ここでは詳細に解説しませんが、以下の記事が参考になるかと思います。
EC2 起動後にパブリック IPv4 アドレスを削除する
In order to deassociate the public IPv4 address, kindly follow these steps below
- Create an ENI and attach it to the instance.
- Allocate an Elastic IP address using the below doc[1]
- Associate the Elastic IP to the primary ENI that has the public IP of the instance[2].
- Refresh the browser page and observe the instance public IP has changed to the new Elastic IP address.
- Disassociate the Elastic IP address from the primary ENI by following the below doc[3]
- Refresh the browser page again, and observe the instance public IP has been removed.
- Release the Elastic IP[4] and detach the ENI attached by the step #1.
References:
https://repost.aws/ja/questions/QUVmpO9BWGSuGwQh5tXk3f5w/how-to-remove-ipv4-public-ip-address-from-ec2-instances-before-february-2024-ipv6
[1] Elastic IP addresses – Allocate an Elastic IP address – https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-allocating
[2] Elastic IP addresses – Associate an Elastic IP address with an instance or network interface – https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating
[3] Elastic IP addresses – Disassociate an Elastic IP address – https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating-different
[4] Elastic IP addresses – Release an Elastic IP address – https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-releasing
EC2 起動後に IPv6 アドレスをインスタンスに割り当てる
To assign an IPv6 address after launch
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html#assign-ipv6-address
- Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.
- In the navigation pane, choose Instances.
- Select your instance, and choose Actions, Networking, Manage IP addresses.
- Expand the network interface. Under IPv6 addresses, choose Assign new IP address. Enter an IPv6 address from the range of the subnet or leave the field blank to let Amazon choose an IPv6 address for you.
- Choose Save.
さいごに
本記事では、パブリック IPv4 を削除し、IPv6 を付与する方法について確認しました。
実際にはアーキテクチャによって他にも様々な検討事項が発生するはずです。
- ELB を利用している場合は IP アドレスタイプを Dualstack に変更する必要があるでしょう。
- S3 もエンドポイントを変更する必要があるかもしれません。
- プライベートサブネットの場合は Egress-Only Internet gateway を検討する必要があるかも。
- インスタンス内部のアプリケーションも設定変更する必要があるかも?
- いや、そもそも外部の API は IPv6 に対応しているのか?
- …
考えることは山積みですが、時代の流れには乗る必要があります。
完全に余談ですが、WordPress も IPv6 への対応必要性について言及していますね。
乗り遅れないように頑張りましょう。
以上です。
コメント