デフォルトでは、EIP は NAT を介して ECS インスタンスのプライベート IP アドレスにマッピングされるため、オペレーティングシステムはプライベートアドレスのみを認識します。一部のアプリケーションでは、パブリック IP アドレスをネットワークインターフェイスに直接設定し、EIP を可視化する必要があります。
-
プロトコル要件:アクティブモードの FTP などのプロトコルでは、パケットのペイロードにホストのパブリック IP アドレスを含める必要があります。ペイロードにプライベート IP アドレスが含まれている場合、通信は失敗します。
-
送信元アドレスの検証:一部のサーバーでは、アウトバウンドネットワークインターフェイスの IP アドレスが、パブリックな出口 IP アドレスと一致する必要があります。
-
IPsec VPN:一部の VPN ソフトウェアでは、トンネルを確立するためにパブリック IP アドレスへの直接バインディングが必要です。
VPC のセカンダリ CIDR ブロックを使用すると、プライマリプライベート IP アドレスが EIP と一致する弹性ネットワークインターフェイス (ENI) を作成でき、オペレーティングシステムでパブリック IP アドレスを可視化できます。また、同じネットワークインターフェイスに IPv6 アドレスを割り当てることで、単一のインターフェイスで IPv4/IPv6 デュアルスタック通信を有効にすることもできます。
仕組み
VPC のセカンダリ CIDR ブロックを使用すると、パブリック IP アドレス範囲を含む任意の CIDR ブロックを、ユーザー定義のネットワークセグメントとして追加できます。これにより、次のことが可能になります:
-
EIP を含むパブリック CIDR ブロック (例:
118.XX.XX.0/24) を、VPC のセカンダリ CIDR ブロックとして追加します。 -
セカンダリ CIDR ブロックに vSwitch と ENI を作成し、その ENI のプライマリプライベート IP アドレスを EIP アドレスと一致するように設定します。
-
EIP を NAT モードで ENI にバインドし、オペレーティングシステムでパブリック IP アドレスを可視化します。
また、同じネットワークインターフェイスに IPv6 アドレスを割り当て、パブリック帯域幅を有効にすることで、IPv4/IPv6 デュアルスタック通信を実現することもできます。
制限事項
-
同一 VPC 内の通信:EIP が可視化された ECS インスタンスは、EIP を使用して通信する場合でも、パブリックインターネット経由ではなく、プライベートネットワーク経由で同一 VPC 内の他のインスタンスと通信します。
-
vSwitch の CIDR ブロック:セカンダリ CIDR ブロックに作成される vSwitch の CIDR ブロックには、EIP アドレスが含まれている必要があります。EIP を、vSwitch のシステム予約アドレスとして指定することはできません。IPv4 の場合、vSwitch の CIDR ブロックでは、ネットワークアドレス、ブロードキャストアドレス、および最初の 3 つの利用可能な IP アドレスが予約済みです。
-
ENI:
-
ECS インスタンスとそれにバインドされた ENI は、同じ VPC とアベイラビリティゾーンに存在する必要がありますが、異なる vSwitch に属することは可能です。
-
ECS インスタンスにアタッチできる ENI の数は、そのインスタンスタイプによって決まります。
-
-
セカンダリ CIDR ブロック:各 VPC は、最大で 5 つのセカンダリ IPv4 CIDR ブロックと 5 つのセカンダリ IPv6 CIDR ブロックをサポートします。
IPv4 EIP の可視化設定
コンソール
-
EIP の作成:EIPコンソールにログインし、EIP の作成 をクリックします。設定の詳細については、「EIP の選択」をご参照ください。
-
[課金方法]:従量課金 を選択することを推奨します。
-
[リージョン]:ECS インスタンスと同じリージョンを選択します。
-
他のパラメーターにはデフォルト値を使用できます。
EIP アドレスによって、後で設定するセカンダリ CIDR ブロックと vSwitch の CIDR ブロックが決まります。
-
-
VPC にセカンダリ IPv4 CIDR ブロックを追加し、vSwitch と ENI を作成します。
-
セカンダリ CIDR ブロックの追加:
-
VPCコンソールにログインし、ECS インスタンスが含まれる VPC の ID をクリックして詳細ページを開きます。
-
CIDR タブで、IPv4 CIDR の追加 をクリックします。カスタム CIDR ブロック を選択し、EIP アドレスを含む CIDR ブロックを入力します。
たとえば、EIP アドレスが
118.XX.XX.230の場合、CIDR ブロックを118.XX.XX.0/24に設定できます。
-
-
[vSwitchの作成] ページに移動して、セカンダリ CIDR ブロックに vSwitch を作成します。
-
VPC:ECS インスタンスが属する VPC を選択します。
-
IPv4 CIDR ブロック:親ブロックとして、追加したセカンダリ CIDR ブロックを選択します。
-
ゾーン:ECS インスタンスのアベイラビリティゾーンを選択します。
-
IPv4 CIDR ブロック:vSwitch の CIDR ブロックを入力します。このブロックは、追加したセカンダリ CIDR ブロックのサブネットであり、EIP アドレスを含んでいる必要があります。たとえば、EIP アドレスが
118.XX.XX.230の場合、vSwitch の CIDR ブロックを118.XX.XX.128/25に設定できます。
-
-
ENI の作成:
-
ECSコンソールの[ネットワークインターフェイス] ページに移動します。
-
[ネットワークインターフェイスの作成] をクリックします。
-
VPC、vSwitch、およびセキュリティグループ:ECS インスタンスが属する VPC とセキュリティグループ、およびセカンダリ CIDR ブロックに作成した vSwitch を選択します。
-
[プライマリプライベートIPアドレス]:EIP の IP アドレス (例:
118.XX.XX.230) を入力します。
-
-
-
-
リソースのバインド
-
EIP と ENI のバインド:EIPコンソールに移動し、対象の EIP を見つけ、操作 列で リソースと関連付ける をクリックします。
-
インスタンスタイプ:ENI を選択します。
-
モード:NAT Mode を選択します。
-
関連付けるインスタンスを選択してください:作成した ENI を選択します。
-
-
ENI と ECS インスタンスのバインド:
-
ECSコンソールの[ネットワークインターフェイス] ページに移動し、対象の ENI を見つけ、操作 列で [インスタンスのバインド] をクリックして、対象の ECS インスタンスを選択します。一部のインスタンスタイプはホットプラグをサポートしていません。ENI をバインドする前に、ECS インスタンスを停止する必要があります。
ECS インスタンスにアタッチされているセカンダリ ENI の数がインスタンスタイプの制限に達した場合、インスタンス設定を変更してインスタンスタイプをアップグレードできます。
-
ENI が有効になっていることの確認:ECS インスタンスにログインし、
ip addr showコマンドを実行して、セカンダリ ENI の IP アドレスが EIP と一致することを確認します。ENI が有効になっていない場合は、Linuxオペレーティングシステムでネットワークインターフェイスを認識するように設定する必要があります。
-
-
-
ポリシーベースルーティングの設定:ECS インスタンスのデフォルトルートは、プライマリネットワークインターフェイスである
eth0を指します。セカンダリ ENI であるeth1を経由して入ってくるリクエストが、同じパスを通って戻る (同一パスでの送受信) ようにするために、ポリシーベースルーティングを設定します。-
一時的な設定 (再起動時にリセットされます):
ip route add default via <vswitch_gateway> dev eth1 table 1001 ip rule add from <primary_private_ip_address> lookup 1001 -
永続的な設定:システムの起動時にルートが自動的に更新されるように設定し、永続化します。
-
-
結果の確認:ECS インスタンスにログインし、
curl -4 --interface eth1 ifconfig.meコマンドを実行して、出力 IP アドレスが EIP であることを確認します。
API
-
AllocateEipAddress API を呼び出して EIP を作成します。
-
AssociateVpcCidrBlock API を呼び出してセカンダリ CIDR ブロックを追加します。
-
CreateVSwitch API を呼び出して vSwitch を作成します。
-
CreateNetworkInterface API を呼び出して ENI を作成します。
-
AssociateEipAddress API を呼び出して EIP を ENI にバインドします。
-
AttachNetworkInterface API を呼び出して、ENI を既存の ECS インスタンスにバインドします。
IPv6 デュアルスタックの設定
上記の設定を拡張し、セカンダリ ENI に IPv6 アドレスを割り当てることで、デュアルスタック設定を有効化できます。
コンソール
-
VPC の IPv6 の有効化:
対象の VPC で IPv6 が有効になっていない場合、対象 VPC の IPv6 CIDR ブロック 列にある IPv6 CIDR ブロックの有効化 をクリックし、自動割り当て を選択して、VPC におけるすべての vSwitch の IPv6 機能を自動的に有効化する チェックボックスにチェックを入れます。システムは自動的にIPv6 ゲートウェイを作成し、IPv6 CIDR ブロックを割り当てます。
VPC と vSwitch で IPv6 がすでに有効になっている場合は、この手順をスキップできます。
-
ENI への IPv6 アドレスの割り当て:
ECSコンソールの[ネットワークインターフェイス] ページに移動します。対象の ENI を見つけ、操作 列の ENI IP の管理 をクリックして IPv6 アドレスを追加します。
-
オペレーティングシステムでIPv6アドレスを認識するように設定:ECS インスタンスにログインし、
sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6コマンドを実行します。コマンド実行後、ip -6 addr show dev eth1を実行してアドレスが認識されていることを確認します。[root@iZxxx]# ip -6 addr show dev eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 altname enp0s6 altname ens6 inet6 2408:4005:305:xxx:xxx:xxx:d28b/64 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::xxx/64 scope link noprefixroute valid_lft forever preferred_lft forever -
IPv6 アドレスのパブリック帯域幅の有効化:デフォルトでは、IPv6 アドレスは VPC 内通信のみをサポートします。IPv6 経由でインターネットにアクセスするには、パブリック帯域幅を有効にする必要があります。
-
IPv6 ゲートウェイコンソールにログインします。
-
対象 VPC の IPv6 ゲートウェイをクリックします。対象の IPv6 アドレスを見つけ、操作 列の IPv6 インターネット帯域幅の作成 をクリックしてパブリック帯域幅を設定します。
-
-
結果の確認:ECS インスタンスにログインし、
curl -6 ifconfig.meコマンドを実行して IPv6 のパブリックな出力を確認します。
API
-
既存の VPC と vSwitch については、ModifyVpcAttribute API と ModifyVSwitchAttribute API を呼び出し、
EnableIPv6パラメーターを設定して IPv6 を有効または無効にします。コンソールのワークフローとは異なり、API を使用して VPC と vSwitch の IPv6 を有効化しても、IPv6 ゲートウェイは自動的に作成されません。CreateIpv6Gateway API を呼び出して作成する必要があります。
-
AssignIpv6Addresses API を呼び出して、ENI に IPv6 アドレスを割り当てます。
-
AllocateIpv6InternetBandwidth API を呼び出して、IPv6 アドレスのパブリック帯域幅を購入します。
よくある質問
|
問題 |
考えられる原因 |
解決策 |
|
ENI のプライマリプライベート IP アドレスが無効です。 |
プライマリプライベート IP アドレスが vSwitch の CIDR ブロック内にありません。 |
vSwitch を再作成し、その CIDR ブロックに EIP アドレスが含まれていることを確認します。 |
|
ENI をバインドする際に、対象の ECS インスタンスを選択できません。 |
アベイラビリティゾーンが一致しません。 |
ENI と ECS インスタンスが同じアベイラビリティゾーンにあることを確認します。 |
|
ENI を ECS インスタンスにバインドする際にエラーが発生します。 |
インスタンスタイプがホットプラグをサポートしていません。 |
インスタンスを停止し、インターフェイスをバインドしてから、インスタンスを再起動します。 |
|
ENI が有効になっていません。 |
オペレーティングシステムが新しいネットワークインターフェイスを認識していません。 |
|
|
ECS インスタンスがインターネットにアクセスできません。 |
デフォルトルートがプライマリネットワークインターフェイスを指しています。 |
ルートの優先度を調整して、セカンダリ ENI がインターネットアクセスに使用されるようにするか、 |
|
非対称ルーティングが存在します。 |
ポリシーベースルーティングを設定して、同一パスでの送受信を確保します。 |
|
|
セキュリティグループが必要なトラフィックを許可していません。 |
セキュリティグループが必要な送信元からのトラフィックを許可しているか確認します。 |