Elastic Network Interface(ENI)
ENIがVPCとEC2インスタンスをつなぐ仕組み、IPアドレスやセキュリティグループなどの属性、プライマリ/セカンダリENIの使い分けと付け替えを解説します。
Elastic Network Interface(ENI)
**Elastic Network Interface(ENI、エラスティックネットワークインターフェイス)**は、VPC内のリソースをIPネットワークへ接続する仮想インターフェイスです。物理サーバーで使うネットワークインターフェイスカード(NIC)に相当し、EC2インスタンスなどのネットワーク接続点になります。
EC2インスタンスはAWS上で動作する仮想サーバーです。インスタンスにENIをアタッチすると、そのインスタンスはENIを通してVPCへ接続され、IPアドレスなどのネットワーク属性を利用できます。ENI自体が仮想的なネットワークカードとして働き、インスタンスとVPCの間をつなぎます。
ENIが持つネットワーク属性
ENIは単なる接続ケーブルではなく、ネットワーク接続に必要な属性を持つリソースです。代表的な属性には、プライベートIPv4アドレス、MACアドレス、セキュリティグループがあります。構成に応じて、追加のプライベートIPv4アドレス、IPv6アドレス、Elastic IPアドレスなども関連付けられます。
| 属性 | 役割 |
|---|---|
| プライベートIPv4アドレス | VPC内でインスタンスを識別し、プライベートな通信に使う。ENIにはプライマリのプライベートIPv4アドレスがあり、構成によってセカンダリのアドレスも持てる |
| MACアドレス | イーサネットレベルでネットワークインターフェイスを識別する |
| セキュリティグループ | ENIを通過する通信に対する許可ルールを適用する |
| Elastic IPアドレス | パブリックIPv4アドレスをENI上のプライベートIPv4アドレスに関連付ける |
| IPv6アドレス | VPCでIPv6を利用する構成において、IPv6ネットワークの通信に使う |
セキュリティグループはENIに関連付けられ、インスタンス単位の通信制御に使われます。ENIを別のインスタンスへ移すと、ENIに設定されたネットワーク属性を引き継げるため、セキュリティグループやアドレスを含む接続点をまとめて移動できます。ネットワークACLはENIではなくサブネットに関連付けるため、ENIを移動した後は移動先サブネット側の制御も確認します。
Elastic IPアドレスはENIそのものの属性というより、ENI上のプライベートIPv4アドレスに関連付けるパブリックアドレスです。Elastic IPを利用する構成では、インターフェイスの付け替えだけでなく、アドレスの関連付け先も確認します。パブリックIPv4アドレスの扱いと料金は種類や利用条件によって異なるため、最新のAmazon VPC料金を確認してください。
プライマリENIとセカンダリENI
EC2インスタンスには、起動時にプライマリENIが関連付けられます。これはインスタンスの基本的なネットワーク接続を担い、インスタンスのライフサイクルと密接に結び付いています。プライマリENIはインスタンスが動作している間にデタッチできません。
要件に応じて、インスタンスへセカンダリENIを追加でアタッチできます。たとえば、アプリケーション用と運用管理用のネットワーク接続を分けたり、ネットワークアプライアンスに別の接続点を持たせたりできます。どの構成が可能かはインスタンスタイプごとのネットワーク機能やアタッチ上限に従います。
1つのインスタンスにアタッチできるENIの数や、各ENIに割り当てられるIPアドレス数は一律ではありません。インスタンスタイプ、サイズ、利用するアドレスファミリーなどにより上限が変わるため、構成を決める際はインスタンスタイプごとのネットワークインターフェイス上限を確認します。
セカンダリENIの付け替えとフェイルオーバー
セカンダリENIは、デタッチして別のEC2インスタンスへアタッチできます。ENIは特定のアベイラビリティゾーン(AZ)に属するため、付け替え先のインスタンスは同じAZに配置されている必要があります。また、付け替え先のインスタンスタイプが追加ENIをサポートし、アタッチ数の上限を超えないことも確認します。
この性質を使うと、アプリケーションが使うプライベートIPアドレスやセキュリティグループなどをセカンダリENI側にまとめ、障害時にそのENIを正常なインスタンスへ付け替える構成を作れます。たとえば、帳票生成サービスの待受アドレスをセカンダリENIに割り当て、代替インスタンスへ切り替えると、クライアント側の接続先アドレスを維持したまま復旧できる場合があります。
ENIの付け替えは、インスタンスの障害検知、代替インスタンスの準備、デタッチと再アタッチ、アプリケーションの起動やヘルスチェックまでを自動で行う仕組みではありません。切り替えの制御、所要時間、接続中のセッションへの影響、名前解決や監視の更新などは、別途設計・実装する必要があります。プライマリENI自体を付け替えてフェイルオーバーすることはできないため、付け替え対象とするネットワーク属性をセカンダリENIに配置できるかを事前に検討します。
設計時に確認すること
ENIを追加するときは、インスタンスへの接続可否だけでなく、アドレス設計と通信制御も合わせて確認します。
- AZとインスタンスタイプ:ENIが属するAZとインスタンスのAZをそろえ、インスタンスタイプのENI数・IPアドレス数の上限を確認する。
- IPアドレスの割り当て:利用するプライベートIPv4、IPv6、Elastic IPの数や関連付け先を確認し、サブネットの空きアドレスを確保する。
- セキュリティグループ:ENIに関連付けるグループと、その受信・送信ルールが必要な通信だけを許可していることを確認する。
- ルートとサブネット:ENIを配置するサブネットに適用されるルートテーブルとネットワークACLを確認する。ENIを移動した場合は移動先サブネットの経路・制御も通信要件に合うよう設定する。
- ライフサイクル:インスタンス終了時にENIを削除するか保持するか、ENIのデタッチ・再アタッチを誰がどのように実行するかを決める。
- 中継用途:ルーターやファイアウォールなど、インスタンス自身を送信元・宛先としないパケットを中継する場合は、ソース/宛先チェックとルート設定の両方を確認する。詳細はVPC Flow Logs、ENI、ソース/宛先チェックを参照する。
学習の要点
- ENIはVPC上の仮想ネットワークインターフェイスで、物理サーバーのNICに相当する。EC2インスタンスなどのリソースは、ENIを介してVPCへ接続する。
- プライベートIPアドレス、MACアドレス、セキュリティグループなどの属性はENIに結び付く。構成により複数のIPアドレスやElastic IPも利用する。
- インスタンス起動時に使われるプライマリENIは、インスタンスの稼働中にデタッチできない。追加のセカンダリENIは条件に合えば別インスタンスへ移せる。
- ENIの付け替えでは、同一AZ、インスタンスタイプの対応、アタッチ上限を確認する。ENIの属性を移せても、アプリケーションの復旧やフェイルオーバー全体は自動化されない。
- 通信の可否はENIのセキュリティグループだけで決まらない。ルートテーブル、サブネットのネットワークACL、OSやアプリケーションの設定も確認する。
公式ドキュメント
重要ポイント
- ▸Elastic Network Interface(ENI)はVPC内のリソースがネットワークへ接続するための仮想インターフェイスで、物理サーバーのNICに相当する
- ▸ENIをEC2インスタンスにアタッチすると、プライベートIPアドレスやMACアドレス、セキュリティグループなどのネットワーク属性をインスタンスに持たせられる
- ▸ENIにはプライマリとセカンダリがあり、プライマリENIはインスタンスの存続中にデタッチできないが、セカンダリENIは条件を満たせば同じAZの別インスタンスへ移動できる
- ▸セカンダリENIを付け替えると、インターフェイスに結び付いたプライベートIPアドレスやMACアドレス、セキュリティグループなどを引き継いで切り替えられる
- ▸ENIのアタッチ可能数やIPアドレス数はインスタンスタイプなどで異なり、付け替え先は同一AZなどの条件を満たす必要がある
このトピックの学習を完了しますか?
完了状態はいつでも切り替えられます
この試験ドメイン内で次の学習に進む
同じサービスの関連トピック
VPC とネットワーク に関連するトピックを続けて確認できます。