ENI(Elastic Network Interface)

도은호·2025년 10월 6일
0

AWS SAA

목록 보기
7/46

ENI는 EC2의 가상 네트워크 카드(vNIC)로, 서브넷/AZ에 귀속되고 IP·보안그룹·MAC 등을 보유. ENI를 다루면 다중 NIC, 장애 극복, 보안 분리, 어플라이언스 아키텍처가 가능


1) ENI란?

  • EC2 인스턴스에 붙는 가상 NIC
  • 서브넷 = L3 경계에 속하며, 같은 AZ의 인스턴스에만 부착/이동 가능
  • eth0 = 기본(Primary) ENI: 떼기 불가 / 기본 라우팅과 보안그룹이 여기서 시작됨
  • 추가 ENI: 인스턴스 타입에 따라 여러 개까지 부착 가능(eth1, eth2 …)

2) ENI가 가진 속성(구성 요소)

  • Private IPv4(필수): 1개 이상. Secondary Private IP 여러 개 추가 가능
  • Public IPv4/EIP(선택): ENI의 특정 private IPEIP를 매핑
  • IPv6(선택): 하나의 ENI에 여러 IPv6 주소 가능
  • Security Groups: ENI 단위로 여러 개(기본 최대 5) 적용
  • MAC 주소 / DeviceIndex(eth0/eth1…) / Description / Tag
  • Source/Destination Check 플래그: NAT/라우팅 어플라이언스 시 비활성화 필요

3) 수명주기 & 부착 패턴

  • Create → Attach(같은 AZ) → In-Use → Detach → Delete
  • Primary ENI(eth0): 인스턴스와 “운명공동체”(분리 불가)
  • Secondary ENI: 핫 스왑 가능(운영 중 Detach/Attach) → 빠른 장애 극복(Failover)
  • 정지/시작: Primary Private IP는 유지, Public IPv4는 변경(EIP는 유지)
  • Warm-standby 패턴: EIP/보안그룹 세팅된 ENI를 예비 인스턴스로 빠르게 재부착하여 IP·방화벽 정책을 통째로 승계

4) 라우팅/보안과의 관계

  • 보안그룹(SG): ENI 단위로 적용 (인스턴스가 여러 ENI면 인터페이스별로 다른 SG 가능)
  • NACL: 서브넷 전체에 적용 (ENI와 무관)
  • 라우팅: 서브넷 라우트테이블이 결정. 다중 ENI로 서브넷을跨(가로질러) 브릿징하는 건 불가(L2 아님).
  • NAT/방화벽 인스턴스: Source/Dest Check 비활성화하고 다중 ENI로 퍼블릭/프라이빗 서브넷 사이 트래픽 중개

5) 대표 사용 사례

  • 장애 극복(ENI 이동): 서비스 IP, SG를 가진 ENI를 다른 인스턴스에 붙여 다운타임 축소
  • 관리망/데이터망 분리: eth0(관리), eth1(데이터)로 트래픽 분리 & SG 차등 적용
  • NAT/방화벽/IDS 등 가상 어플라이언스: 다중 ENI + 소스/목적지 체크 해제
  • 다중 IP 서비스: 한 ENI에 여러 private IP를 붙여 포트/서비스 분리
  • PrivateLink/Interface VPC Endpoint: 서비스 측에서 ENI 생성해 프라이빗 접속 제공

6) 제약/주의사항

  • ENI는 단일 서브넷/AZ 귀속다른 AZ로 직접 이동 불가
  • 네트워크 대역폭 한계는 인스턴스 타입 총량(ENI를 늘려도 총 대역폭 상한은 타입 스펙 영향)
  • 보안그룹은 ENI별, NACL은 서브넷별 적용
  • Cluster 배치그룹 사용 시 네트워킹 성능 튜닝(ENA/드라이버) 고려

7) 자주 나오는 시험 포인트 (SAA 체크리스트)

  • 빠른 IP 페일오버: ENI Detach/Attach + EIP 고정
  • NAT 인스턴스: Source/Dest Check 비활성화
  • Interface VPC Endpoint(PrivateLink) = ENI 생성으로 사설 연결
  • 멀티 NIC보안/트래픽 분리(SG를 ENI별로 다르게)
  • ENI는 같은 AZ에서만 이동 (교차 AZ 이동 X)

8) CLI

# 1) ENI 생성
aws ec2 create-network-interface \
  --subnet-id subnet-xxxxxxxx \
  --description "eni-app-data" \
  --groups sg-aaaabbbb sg-ccccdddd \
  --private-ip-address 10.0.2.50

# 2) ENI 부착 (같은 AZ 인스턴스에)
aws ec2 attach-network-interface \
  --network-interface-id eni-0123456789abcdef0 \
  --instance-id i-0123456789abcdef0 \
  --device-index 1  # eth1

# 3) Secondary Private IP 추가
aws ec2 assign-private-ip-addresses \
  --network-interface-id eni-0123456789abcdef0 \
  --private-ip-addresses 10.0.2.51 10.0.2.52

# 4) NAT/라우팅 어플라이언스: 소스/목적지 체크 끄기
aws ec2 modify-network-interface-attribute \
  --network-interface-id eni-0123456789abcdef0 \
  --source-dest-check "{\"Value\": false}"

# 5) ENI 분리/삭제
aws ec2 detach-network-interface --attachment-id eni-attach-0abc123...
aws ec2 delete-network-interface --network-interface-id eni-012345...

9) 요약

  • ENI = vNIC, 서브넷/AZ 귀속, 인스턴스에 부착
  • SG는 ENI별, NACL은 서브넷별
  • EIP는 ENI의 Private IP에 매핑
  • 장애 극복/보안 분리/어플라이언스 = ENI의 핵심 쓰임새
  • 교차 AZ 이동 불가, NAT 인스턴스는 Source/Dest Check 끔
profile
`•.¸¸.•´´¯`••._.• 🎀 𝒸𝓇𝒶𝓏𝓎 𝓅𝓈𝓎𝒸𝒽💞𝓅𝒶𝓉𝒽 🎀 •._.••`¯´´•.¸¸.•`

0개의 댓글