🪡

【図解】AWSのENI(Elastic Network Interface)を理解する

に公開

はじめに

AWSを使っていると「ENI」という言葉を見かけますが、実際に意識して触れる機会はあまりありません。それでもサービスは普通に動くので、スルーしてしている人も多いと思います。

ですが、ENIを理解すると、EC2の通信の仕組みやVPCの設計が一気にクリアになります。
本記事では、そのENIの役割と仕組みを整理していきます。

対象読者

  • EC2やVPCは使ったことがあるけど、「ENIって何?」という方
  • AWSのネットワーク構成を理解したい初中級エンジニアの方

基礎:ネットワークインターフェース(NIC)とは?

ENIを理解するためには、ネットワークインターフェース(NIC)を先に理解する必要があります。
NICとは、パソコンなどのデジタル機器をネットワークに接続するための出入り口のことです。

まず、PCの中のデータは「デジタル語(0と1)」でできています。
そして、ネットワークを流れるデータは「電気信号や電波」です。
NICは、この「デジタル語」と「電気信号」を瞬時に翻訳し、正確にネットワーク送り出したり、受け取ったりする役割を果たします。

オンプレミスとクラウドのNIC

通信の出入り口の役割を果たすNICは、通常PCやサーバーの物理的な部品として組みまれています。
しかし、クラウドの世界(AWSなど)では、この「通信の出入り口」の機能だけを必要なときに自由に付け替えられるようにした、仮想的な(形のない)仕組みがあります。

それが今回解説するENI(Elastic Network Interface)です。

ENIとは何か?

ENI(Elastic Network Interface)は、AWSのVPC(仮想プライベートクラウド)内で動作するEC2インスタンスの「仮想ネットワークカード(NIC)」です。

物理的なPCにNICがあることでネットワークに接続できるのと同じように、EC2インスタンスがVPCという仮想ネットワークと通信するためには、ENIという「通信の差し込み口」が不可欠です。

ENIとは、物理的なNICの機能(通信の出入り口)をクラウド上で「仮想的」に再現し、自由に付け替えられるようにしたものだとイメージしてください。

ENIは単なる通信ポートではなく、EC2インスタンスのネットワーク属性をすべてまとめる役割を担っています。

概念 役割
ENI EC2のネットワークの玄関口
EC2 ENIを通じてVPC内の他のリソースや外部と通信する主体
VPC ENIが接続される仮想的なネットワーク環境

ENIの保持している情報

ENIは、EC2インスタンスのネットワーク接続を定義する以下の重要な要素を保持しています。

①仮想アドレス情報

ENIは、インスタンスがネットワーク内で識別されるために必要なアドレス情報を持ちます。

プライマリIPv4アドレス
ENIに自動で付与されるメインのIPアドレス。EC2の基本的な通信はこれを使用します。

セカンダリIPv4アドレス
必要に応じて追加できる予備のIPアドレス。
一つのインスタンスで複数のWebサイトやサービスを動かしたい場合や、特定のIPを切り替えて利用したい場合に活用されます。

IPv6アドレス
IPv4と並行して、ENIにIPv6アドレスを割り当てることも可能です。
グローバルユニークであるため、インターネットに直接公開する際の選択肢となります。

Elastic IP (EIP) の割り当て
ENIに固定のグローバルIPである Elastic IP を関連付け可能。
通常のパブリックIPと異なり、インスタンスの再起動や停止後もIPアドレスが変わらないため、外部からの安定したアクセスポイントを提供します。

②MACアドレス

ENIごとに自動的に割り当てられる**ローカルな通信のための「専用の番号」**です。同じネットワーク内(VPC内)で「どのEC2インスタンスへデータを届けるか」を正確に区別するための識別子 となります。
世界に一つしかない固有の番号で、ユーザーが変更することはできません。

③セキュリティグループ

セキュリティグループの関連付け
ENIに直接セキュリティグループ(仮想ファイアウォール)を関連付け可能。
例えば、「22番ポートは閉じる」「80番ポートだけ開ける」といった通信制御のルールをENI単位で設定可能です。

④その他

ENI自体を一意に識別するための「ENI ID」とそのENIがどの仮想プライベートネットワーク(VPC)で使用されるかを特定するための「VPC ID」も保持しています。

ENIの種類

EC2インスタンスにアタッチされるENIには、その役割と柔軟性によって2種類あります。

🔷 プライマリENI

  • EC2起動時に必ず1つ作られるENI
  • このENIに付与されるプライマリIPv4アドレスが、EC2の基本的な通信に使われる
  • 削除やデタッチはできず、インスタンスと一体化している(必須のNIC)

🔷 セカンダリENI

  • ユーザーが必要に応じて追加するENI
  • インスタンス実行中にアタッチ/デタッチ可能
  • プライマリENIと違い柔軟に扱え、サブのネットワーク口として利用できます

ENIの料金

ENI自体の料金

ENIの作成・保持は無料
プライマリENIも、追加のセカンダリENIも、ENIそのものには課金されない

課金が発生するケース

ENIを使う時に間接的に料金が発生するのは以下のような場合

Elastic IP(固定グローバルIP)の割り当て
EC2が停止している状態でElastic IPを保持している場合
Elastic IPを複数持っている場合
※いずれも少額だが課金対象となる
 
データ転送量
ENIを通じてVPC外(インターネットや別リーション)へ通信する際は、通常のデータ転送料金が発生
VPC内の同一AZの通信は無料、異なるAZ間の通信は課金

制約事項

ENIの数の上限

インスタンスにアタッチできる最大ENI数が決まっています
小さいインスタンスは少なく、大きいインスタンスは多いです

ENIあたりのIPアドレス数

1つのENIに割り当てられるIPアドレス数にも上限があります
インスタンスタイプごとに「ENI数✖️IP数」で最大IP数が決まります

t2.micro c5.18xlarge
最大ENI 15
ENIあたりのIP 50
合計IP数 4 750

インスタンスタイプに依存する理由

ENIやIPの数は、インスタンスの仮想ハードウェア性能(ネットワーク帯域やNIC数)に依存しています。
つまり「小さいマシンにNICをたくさん差す」ことはできないという制約です。

まとめ

  • ENI(Elastic Network Interface) = EC2にネットワークを繋ぐための仮想NIC。
  • IPアドレスやセキュリティグループを持ち、追加・付け替えで柔軟な設計が可能。
  • 高可用性や複数ネットワークの利用に役立つが、数やIPにはインスタンスタイプごとの制限あり。

Discussion