Skip to content

ENI (Elastic network interface) ​

ENI ​

ENI는 VPC 환경에서 가상 네트워크의 역할을 하는 논리적 네트워크 구성 요소로 온프레미스 환경에서 사용되는 NIC에 대응되는 개념입니다. 이 글에서는 Tencent cloud VPC 콘솔로 ENI에 대한 개념을 설명합니다.

ENI와 서브넷의 관계 ​

ENI을 생성하려면 먼저 서브넷이 있어야 합니다. ENI는 서브넷에 속하는 요소이며 서브넷은 VPC생성을 전제로 하니 다음과 같은 포함관계를 가집니다.

Tencent cloud 콘솔에서 ENI를 생성 시 먼저 VPC와 Subnet을 선택해야 하는 것을 알 수 있습니다.

CVM 인스턴스와 ENI ​

위에서 ENI는 넓게 보면 VPC에 속하는 것으로 설명했습니다. 즉, Tencent cloud에서 어떤 리소스가 VPC네트워킹의 자격을 얻으려면 해당 자원이 ENI에 연결되어 있어야합니다. 따라서 CVM 인스턴스를 생성할때 기본적으로 1개의 ENI가 자동으로 연결됩니다. 이를 Primary ENI라고 합니다. CVM 생성 시 인스턴스에 붙어있는 기본 Primary ENI는 unbound할 수 없습니다.

그렇다고 1개의 인스턴스에 1개의 ENI만 연결될 수 있는 것은 아닙니다. 우리가 컴퓨터에 여러개의 랜카드를 꽂는 것 처럼 1개의 인스턴스에는 여러개의 ENI와 바인딩 될 수 있습니다. 최대 연결 가능한 ENI의 갯수는 CVM Configuration 마다 차이가 있습니다. (참고 : https://www.tencentcloud.com/document/product/576/18527?from_cn_redirect=1)

반대로 1개의 ENI에 여러 개의 인스턴스를 바인딩 하는 것은 가능할까요? 불가능합니다. 1개의 ENI는 한 번에 1개의 인스턴스에만 바인딩 될 수 있습니다. 인스턴스를 우리가 타는 택시라고 가정하고 ENI를 승객에 비유해보면 이해가 쉽습니다. 1대의 택시에는 여러 명의 손님이 동시에 탈 수 있지만, 1명의 손님이 여러 대의 택시에 동시에 탈 수는 없습니다. (상반신은 이쪽 택시에, 하반신은 저쪽 택시에, 하지 않는 이상..)

Security group 과 ENI ​

VPC 환경의 인스턴스를 생성할때 자동으로 기본 Security group과 사설 IP가 할당되는 걸 알 수 있는데, 이들 또한 인스턴스에 할당된 ENI에 연결되는 요소들입니다. 같은 의미로, 1개의 ENI는 반드시 1개의 Security group을 가진다는 걸 알 수 있습니다. 그렇다면 1개의 ENI는 여러 개의 Security group과 동시에 연결될 수 있을까요? 가능합니다.

1개의 CVM 인스턴스가 여러 개의 보안그룹 룰의 통제를 받을 수 있는 것과 같습니다.

Tencent cloud 콘솔에서도 특정 ENI에 여러개의 Security group 연결이 가능한 것을 확인할 수 있습니다. 이로 인해 VPC 네트워킹에서 보안정책을 좀 더 유연하게 관리할 수 있습니다.

ENI의 독립성 ​

이렇게 보면 ENI가 굉장히 의존적인 것 같지만 그렇지 않습니다. ENI는 어느 인스턴스와도 연결되지 않아도 됩니다. 생성 전제조건인 VPC와 서브넷만 지정해주면 ENI 구성의 필수요소들 (Security group, MAC address, private IP)을 지닌채로 독립적으로 존재할 수 있습니다. 인스턴스에 연결되지 않은 ENI는 그 자체로는 어떠한 의미도 가지지 않을 뿐입니다.

IP Address 와 ENI ​

CVM 인스턴스를 생성하면 인스턴스에 할당된 ENI에 랜덤하게 private IP가 부여됩니다. 이것이 곧 인스턴스의 private IP라고 볼 수 있습니다.

개별 ENI가 보유할 수 있는 private IP의 갯수는 CVM configuration에 따라 최소 6개에서 최대 30개입니다. (https://www.tencentcloud.com/document/product/576/18527?from_cn_redirect=1)

Tencent cloud 에서 ENI 정보를 보면 부여된 private IP들을 확인할 수 있습니다. primary ENI의 primary IP(private)는 ENI 생성 시 ENI가 속한 서브넷의 CIDR 블록 내의 IP 값에서 랜덤한 값으로 설정되고, Secondry IP는 auto-assign이 가능합니다. 추가로 생성되는 ENI (Secondary ENI)는 primary IP부터 auto-assign이 가능합니다.

참고 : primary ENI의 primary IP는 추후 수정이 가능하지만, Secondary ENI의 primary IP는 수정이 불가능합니다.

추가 Private IP ​

Primary ENI 의 primary IP (private) 를 제외한 나머지 private IP의 경우 assign 후에 해당 OS의 네트워크 설정을 거쳐 IP를 직접 추가해줘야 합니다.

Tencent cloud ENI 콘솔에서 ENI를 생성하여 CVM와 연결하고

새로운 private IP (192.168.3.7)을 ENI에 할당한 뒤 동일 VPC 환경 내에서 해당 IP로 접속을 시도하면 접속이 안됩니다.

현재 ENI에 새로운 private IP(192.168.3.7)가 configure이 되어 있지 않아서 그렇습니다.

plaintext
ip addr add <추가할 private IP> dev eth0
//이때 private IP는 서브넷 마스크까지 모두 입력해야 한다.

새 private IP를 추가하면

image.png

Private IP가 configure 된 모습을 확인할 수 있습니다. 이제 접속을 다시 시도하면 정상적으로 접속이 될 것입니다. 이번엔 새로 Secondary ENI를 추가하여 private IP를 설정해보겠습니다.

image.png

ENI를 생성한 뒤 인스턴스와 바인딩 한 뒤 서버에서 확인하면

image.png

새로 추가한 ENI가 인식되는 걸 볼 수 있습니다. (eth1)

image.png

같은방법으로 Secondary ENI의 primary IP (192.168.3.12) 를 추가하면 됩니다. (이때 다른 ENI에 할당을 해도 OS계층에서 네트워크 설정을 변경한 셈이기 때문에 통신에는 문제가 없지만 되도록 콘솔설정과 같은 ENI에 매핑하는 것이 좋습니다.)

마치며 ​

ENI는 VPC 네트워킹의 핵심 요소이고 VPC 네트워크 환경을 제어하는 리소스 이지만 라이트한 클라우드 유저나 혹은 자주 클라우드를 사용하는 사람들도 ENI에 대해 간과하고 넘어가는 경우가 많습니다. 사실 ENI에 대한 깊은 이해 없이도 서브넷과 VPC에 대한 간단한 개념만 있다면 콘솔로 클라우드 리소스를 생성하고 VPC 네트워크 환경을 구성하는데에 큰 무리가 없기 때문입니다. 또한 ENI는 단독으로 비용이 부과되는 서비스도 아니니 더욱 그렇습니다. 그러나 ENI는 VPC 네트워킹에서 빼놓을 수 없는 요소이기에 ENI를 이해하면 VPC를 좀 더 폭 넓게 활용할 수 있을 것입니다.

基于 VitePress 构建 · 部署于腾讯云 EdgeOne Pages