はじめに
EC2インスタンスのネットワーク設定を見ていると、「プライマリIPv6 IPを割り当てる」というオプションがあります。「IPv6アドレスを割り当てれば、それが自動的にプライマリになるのでは?」と思いきや、どうやらそういう訳ではないようです。
今回は、この「プライマリIPv6アドレス」が一体どういう機能なのか、詳しく解説していきます。
プライマリIPv6アドレスとは?
プライマリIPv6アドレスとは、EC2インスタンスなどに割り当てられる変更不可能なIPv6アドレスを指します。プライマリIPv6アドレスを有効すると、ENIに対して割り当てられた最初のIPv6アドレスがプライマリIPv6アドレスとなります。
注意点として、EC2のインスタンスでプライマリIPv6アドレスを有効にするとインスタンスに割り当てられた最初のIPv6アドレスは変更不可能になり、プライマリIPv6アドレスを無効にすることはできません。一度設定を変更すると戻せないということです。変更したい場合は、インスタンスの再作成などが必要です。
プライマリIPv6アドレスを有効にすることにより、誤ってIPv6アドレスを削除してしまったり、どれがメインのアドレスであるかわからなくなるといったことを防ぐことが可能です。IPv4のプライマリIPアドレスと同様に扱えますね。
今の所、マネジメントコンソールからインスタンスの作成を作成する時の設定値は、デフォルトでプライマリIPv6アドレスが有効にされない状態でした。プライマリIPv6アドレスを有効にしたい場合は、作成時に明示的に指定するか、既存のインスタンスであれば次に紹介した方法で設定変更する必要があります。
設定方法
マネジメントコンソール
マネジメントコンソールでの設定は、インスタンスのIPアドレスの管理から設定できます。以下の図にある「プライマリIPv6 IPを割り当てる」にチェックを入れます。

1つ目のIPv6アドレスがプライマリIPv6アドレスとして設定されました。プライマリIPv6アドレスは、割り当て解除のボタンが無効になっています。「プライマリIPv6 IPを割り当てる」も変更不可能な状態に変わっています。

AWS CLI
AWS CLIで既存のENIに設定を有効にする場合は、aws ec2 modify-network-interface-attributeコマンドで--assign-primary-ipv6オプションを使用します。
# ENIのIDを指定して、プライマリIPv6アドレスを有効化
$ aws ec2 modify-network-interface-attribute \
--network-interface-id eni-0fa4f67377aeccef8 \
--enable-primary-ipv6
# 設定後のENI情報を確認
$ aws ec2 describe-network-interfaces \
--network-interface-id eni-0fa4f67377aeccef8
{
"NetworkInterfaces": [
{
"AvailabilityZone": "us-east-1c",
"Description": "",
"Groups": [
{
"GroupId": "sg-0f8b49cb81fddbd01",
"GroupName": "my-home"
}
],
"InterfaceType": "interface",
"Ipv6Addresses": [
{
"Ipv6Address": "zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:ed73",
"IsPrimaryIpv6": true
},
{
"Ipv6Address": "zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:zzzz:4cce",
"IsPrimaryIpv6": false
}
],
以下略
コマンド実行後、describe-network-interfacesで確認すると、最初のIPv6アドレスのIsPrimaryIpv6がtrueになっていることがわかります。
まとめ
プライマリIPv6アドレスを有効にすると、ENIに割り当てられたIPv6アドレスの1つを固定(変更・削除不可に)することができます。意図せず変更してしまうなどを防ぐために、活用したい機能ですね。
参考情報
- Amazon VPC で Elastic Network Interface におけるプライマリ IPv6 アドレスのサポートを開始
- ネットワークインターフェース属性の変更 - Amazon Elastic Compute Cloud
石田順一(記事一覧)
カスタマーサクセス部 CS3課