AWS VPC(Virtual Private Cloud)는 클라우드 환경을 퍼블릭과 프라이빗이 논리적으로 독립된 네트워크 영역으로 분리할 수 있게 해주는 서비스 이다. 아래에 내용을 본다면 IPv4 CIDR 이라는 내용이 존재하는데 IPv4 CIDR(사이더)에 대한 것은 링크를 통해 연결하겠다.
위와 같은 정보로 등록을 하게 되면 하위에 리소스 맵 탭에 다음과 같이 정보가 나온다.
위에 리소스 맵에 표기된 정보 외에 설정 정보들이 VPC 내에 존재하는데 그중 서브넷과, 라우팅 테이블, 인터넷 게이트웨이, NAT 게이트웨이에 대한 설명을 우선 적으로 진행하고자 한다.
Subnet
Subnet은 VPC를 특정 규칙에 의해 나눈 조각들이며, 하나의 Subnet은 하나의 AZ(Availablility Zone)에 할당 된다.
위에 신규 설정한 VPC ID를 선택하게 되면 아래처럼 IPv4 VPC CIDR 블록을 또 한번 잘게 쪼갤 수 있다 이때 통상적으로 private이 public 보다 더 잘게 쪼개 져야 하는데 그 이유는 public 영역에 할당될 IP들이 통상적으로 더 많아서 그렇게 하는게 Default이다.
또한 가용영역은 아래 처럼 a, b, c ,d 네개의 영역을 선택할 수 있으며 통상적으로 a 와 c를 default로 이용하게 되어있다. 그 이유는 가용영역 마다 올릴수 있는 ec2인스턴스에 대한 유형들이 달라 질 수 있는데 a, c에 올릴 수 있는 ec2 인스턴스 유형이 더 많기 때문이다.
VPC를 생성하게 되면 묵시적으로 내부에 라우팅 테이블이 생성되어 내부 서브넷간에는 통신이 가능하게 된다.
하위에 라우팅 테이블을 보면 묵시적으로 Name 이 '-' 된 테이블을 확인해 볼 수 있으며 클릭을 통해 서브넷 연결탭에 들어간다면 아래와 같이 명시적 연결이 없는 서브넷에 해당 VPC내에 위치한 서브넷이 등록이 되게 된다.
라우팅 테이블을 생성하게 된다면 VPC를 선택할 수 있으며 필자는 Public/Private 영역에 하나씩 라우팅 테이블을 생성하여 Public 영역과 Private 영역끼리 통신이 가능하게 하고자 한다. 앞서 '-' 로 표기된 기본 라우팅 테이블을 Public 라우팅 테이블로 변경해주고 Private 라우팅 테이블을 추가적으로 생성한다.
아래와 같이 두개의 rt를 생성했으며, 명시적으로 서브넷을 연결해야만 한다.
앞서 설정한 VPC와 Internet Gateway를 연결 시켜 외부와 통신가능하게 해야한다.
위의 인터넷 게이트웨이 생성 버튼을 통해 생성하게 되면 아래와 같이 VPC에 연결 버튼이 활성화 되고, 앞서 설정한 VPC에 연결을 하면 외부와 통신이 가능하게 된다.
다음운 NAT Gateway를 생성하고자 한다.
NAT란 Network Address Translation의 약자로 NAT를 이용하는 이유는 대개 사설 네트워에 속한 여러 개의 호스트가 하나의 공인 IP주소를 사용하여 인터넷에 접속하기 위함입니다.
예를 들면 외부 인터넷을 차단하고 내부에서만 사용하기 위해 만든 Private Subnet에 RDS을 넣어두고 이를 외부 인터넷을 통해 업데이트를 해야 할 일이 생긴다면 공인 IP를 생성해서 Internet Gateway를 연결해 줄 수 없기에(외부 인터넷 차단) 이 경우 사용하는 것이 NAT Gateway입니다. Internet 접속이 가능한 Public Subnet에 NAT Gateway를 생성해 두고 Private Subnet이 외부 인터넷으로 나아갈 경우에만 사용하도록 라우팅을 추가하는 것이다.
결론적으로 아래와 같이 통신을 하게 되는 것이다.
EC2 -> NAT Gateway -> Internet Gateway -> 외부 인터넷
아래는 NAT 게이트웨이 생성 부분이며 위에 말처럼 서브넷은 Public 영역에 위치시키고 탄력적 IP를 할당 해주워야 한다 그 이유는 외부서비스 이용시 내부 private 영역을 호출할때 고정 IP로 호출하지않으면 매번 IP가 달라져 외부서비스에서 설정 정보를 변경을 해주워야 하기때문이다.