AWS VPC 네트워킹
AWS VPC 안에서 동작하는 서비스가 네트워킹을 하기 위해선 ENI, 보안 그룹, NACL, 라우팅 테이블 이 네 가지를 각각 적재적소로 사용해야 합니다.
여기서 네트워킹의 용도에 따라 위의 네 가지를 아래와 같이 구분지을 수 있습니다.
네트워킹의 주체: ENI
네트워킹 제어: 보안 그룹, NACL, 라우팅 테이블
이번 글에선 네트워킹을 제어를 담당하는 보안 그룹, NACL, 라우팅 테이블에 대해 설명하고자 합니다.
보안 그룹(Security Group, SG)
보안 그룹은 ENI(서비스)에 접근하는 트래픽을 제어하는 역할을 합니다. 화이트 리스트 방식으로 허용할 IP, 포트를 명시합니다. 또한 하나의 보안 그룹이 여러 개의 ENI에 연결될 수 있고 하나의 ENI가 여러개의 보안그룹을 연결할 수 있습니다.
인바운드 규칙과 아웃바운드 규칙
- SG는 인바운드와 아웃바운드 규칙을 별도로 둬, 서비스에 드나드는 모든 트래픽을 통제합니다.
(보안그룹 설정 시 다른 보안그룹의 rule로 사용할 수 있습니다) 인바운드 규칙에선 목적지 ip를 적을 필요가 없고, 아웃바운드 규칙에선 소스 ip를 알 필요가 없습니다.
NACL(Network Access Control List)
NACL은 기본적으로 서브넷에 접근하는 트랙픽을 제어하는 역할을 합니다. 하나의 서브넷은 하나의 NACL을 사용해야만 합니다. 다른 NACL을 연결할 시, 기존의 NACL와의 연결은 자동으로 끊어집니다. 기본적으로 화이트리스트 기반으로 트래픽을 관리하여, 허용할 IP 대역을 입력하며 이때 규칙 번호에 따라 순차적으로 적용되기 때문에 동일한 CIDR 블록에 있는 IP 대역에 대해 Allow or Deny 시 순서가 매우 중요합니다. 또한 클라이언트의 포트를 저장하지 않아서, 아웃바운드 규칙에 클라이언트의 포트를 미리 알고 지정해 놓아야 합니다. 포트를 일일이 기억하기는 번거로워, 보통 클라이언트 ip를 허용할 때 포트는 any open으로 해놓은 경우가 많습니다.
라우팅 테이블
IGW(Internet Gateway)
- VPC 내부의 서비스가 인터넷으로 접속하게 해주는 리소스입니다. 즉, IGW를 거쳐 트래픽이 인터넷으로 전송됩니다. IGW는 리전 기반 서비스이고 연결 대상은 VPC입니다. 수명 주기 동안 리전 내부의 모든 VPC에 1:1로 연결하고 해제할 수 있습니다.
- 트래픽이 Internet으로 나갈 때, 실제 IGW에서 NAT Table을 참조하여 Public IP로 변환하여 인터넷으로 전송합니다.
- IGW와 연결된 서브넷을 퍼블릭 서브넷이라 합니다.
NAT Gateway
- 프라이빗 서브넷에서 실행중인 서비스가 인터넷 망 외부의 서비스에 접속하기 위해선, NAT Gateway를 거쳐야 합니다.
- 트래픽이 나가는 프로세스는 Private Subnet Instance -> NAT Gateway(Instance IP를 NAT Gateway의 Private IP로 변환) -> IGW(NAT Table 참초하여 NAT Private IP를 Public IP로 변환) -> 인터넷 순으로 진행됩니다.