VPC(Virtual Private Cloud)

최수환·2022년 9월 20일
0

AWS-SAA

목록 보기
11/23

VPC

VPC는 EC2의 네트워크 계층이며 EC2인스턴스를 비롯한 여러 AWS서비스에 네트워크 리소스를 담을 수 있는 가상 네트워크이다. 이름에서도 알 수 있다시피 가상 네트워크이므로 기존의 전통적인 네트워크 방식과 달리 물리적 하드웨어를 추가하지 않고도 네트워크를 확장할 수 있다.

CIDR블록

Classless Inter Domain Routing(이하 CIDR)은 VPC내 할당되는 IP주소의 범위를 나타내며 IP주소의 개수라고 생각하면 된다.

프리픽스

'/'로 표기한 빗금문자 표기법으로 IP주소의 개수를 나타내는데 예를들어, 172.16.0.0/16은 172.16.0.0 ~ 172.16.255.255를 나타낸다.
프리픽스길이를 N이라 했을 때 IP주소의 개수는 2의 (32-N)승이다. 즉, 프리픽스의 길이와 IP주소의 개수는 역의 관계를 가진다.
📌IPV4의 프리픽스 길이는 /16~/28까지 가능하다.

보조 CIDR블록

사용자는 할당한 IP주소의 개수를 늘리기 위해 보조 CIDR블록을 할당할 수 있는데 기본 CIDR블록의 범위에 포함되어야 하며 겹쳐도 무방하다.
💡 할당한 IP개수를 늘리기위해 보조 CIDR블록을 생성해 할당하는 방법도 있지만 그냥 새로 더 넓은 범위의 기본CIDR블록을 생성해 할당하여도 된다. ( 다만 사용중에는 범위를 변경하는 것은 안되므로 종료 후 다시 할당해야한다. )

IPV6 CIDR블록

IPV6에도 CIDR블록을 할당하는 것이 가능하지만 사용자가 직접 프리픽스의 길이를 나타내는 것은 안된다. 항상 '/56'으로 고정되어 있다.
💡IPV4와 IPV6는 항상 같이 존재하며 IPV4없이 IPV6만 사용하는 것은 불가능하다. IPV4의 공간이 먼저 쓰인후 IPV6의 공간이 사용된다. 따라서 만약 IP공간이 부족하다는 경고가 발생된다면 이것은 IPV4의 공간이 부족하다는 의미이다.

서브넷


기본 CIDR블록을 할당한다면 이 네트워크 안에 존재하는 서비스들은 서로 다른 네트워크에 존재해야함에도 같은 네트워크에 존재하게된다. 서브넷은 여러 인스턴스를 서로 격리하고 인스턴스 간의 트래픽 유입 및 유출을 제어하고 기능별로 조직화한다.

퍼블릭 서브넷

서브넷에는 트래픽의 경로를 결정하는 라우트테이블이 설정되어 있는데 라우트테이블에 라우트가 인터넷 게이트웨이를 향하고 있다면 퍼블릭 서브넷이라 한다.
💡퍼블릭 호스팅이 가능해지기 때문에 외부에서도 접근을 할 수 있으며, 내부에서도 인터넷에 연결할 수 있다.

프라이빗 서브넷

라우트가 인터넷게이트웨이를 향하고 있지 않다면 프라이빗 서브넷이라 한다.
💡 프라이빗 서브넷에 있는 인스턴스는 퍼블릭호스팅이 안되기때문에 외부에서도 접근이 안되며 서브넷 내부에서도 외부와 연결할 수 없다.
📌내부에서 외부와 연결하고자 할 때 NAT디바이스를 사용하면 가능하다.

서브넷 CIDR블록

서브넷에 CIDR블록을 할당해 서브넷에 IP개수를 나타낼 수 있다. 서브넷의 CIDR은 기본 CIDR내에 포함되어야 한다.기본 CIDR블록 내 여러개의 서브넷CIDR이 존재한다. 기본 CIDR과 동일한 CIDR길이를 가질수도 있지만 이것은 일반적인 경우는 아니다.
보통 다른 서브넷이 추가될 여지를 남기기 위해 CIDR주소 공간을 남겨놓는다.
💡 모든 서브넷에 할당된 CIDR블록의 주소의 범위중에서 5개의 주소는 AWS의 의해 예약된 주소이므로 사용 할 수 없다.

  • 첫번째 주소
  • 두번째 주소 - 내재된 라우터용
  • 세번째 주소 - Amazon제공 DNS서버용
  • 네번째 주소 - 예비로 예약
  • 마지막 주소

인터넷 게이트웨이

인터넷 게이트웨이는 퍼블릭 IP를 가진 EC2인스턴스를 인터넷과 연결해주는 다리 역할을 하는 것이다. 하나의 VPC당 하나의 인터넷 게이트웨이를 생성 할 수 있지만 여러 인터넷 게이트웨이를 생성한 뒤 여러 개의 VPC를 인터넷에 연결 할 수 있다.
📌퍼블릭 IP를 가진 인스턴스란 퍼블릭 서브넷에 존재하는 인스턴스라는 것이고 해당 인스턴스의 Security Group의 아웃바운드규칙 설정과 라우트테이블의 설정을 통해 인터넷 게이트웨이를 가리키면 된다.

라우트 테이블

VPC내에서 트래픽의 유입,유출,이동을 제어하기 위해 라우트테이블에 저장된 라우트를 이용해 경로를 설정하는 것이다.
VPC를 생성하게되면 기본으로 메인 라우트테이블이 생성되고 이것을 VPC에 존재하는 모든 서브넷에 연결하면 된다.
📌서브넷은 라우트 테이블 연결 없이 존재 할 수 없다.

라우트

라우트 테이블과 연결된 서브넷 내에서의 트래픽 유입/유출을 결정한다. 반드시 대상 주소 IP프리픽스, 타겟 리소스 두가지를 설정 해야 한다.

이전에 퍼블릭 서브넷에 있는 퍼블릭 IP를 가진 인스턴스를 인터넷에 연결하기위해 라우트 환경설정을 통해 인터넷 게이트웨이를 가르켜야 한다고 했다.

예시로, 라우트테이블에 기본 라우트를 생성해
대상주소 : 172.31.0.0/16 타겟 : Local
대상주소 : 0.0.0.0/0 타겟 : igw-0e538022a0fddc31
설정을 추가한다면 인터넷게이트웨이로 향하는 라우트를 설정한 라우트 테이블이 되는 것이고 이 서브넷은 인터넷 게이트웨이를 통해 인터넷에 연결 될 수 있다.

Public IP / Elastic IP

  • PIP : 인터넷에 접속하기 위해서는 퍼블릭IP를 가지고 있어야하며 퍼블릭 인터넷으로 접속 가능한 주소이다.
    외부에서 내부의 인스턴스에 접속할 때도 PIP가 있어야 한다.
    📌 내부에서 인스턴간의 소통에는 프라이빗 IP주소를 이용한다.
    📌 가장 중요한 것은 PIP는 지속성이 없다는 것이다. 인스턴스를 중지,종료,재시작시 새로운 PIP를 할당한다.

  • EIP : 애플리케이션 관리의 일관성 등을 위해 동일한 주소를 유지해야 할 때 사용하는 Public IP이다.

    사용자가 AWS에 요청하면 EIP를 할당 받을 수 있다.
    다만 PIP와 다르게 자동으로 인스턴스와 연결되지 않기 때문에 ENI에 연결한 후 해당 인스턴스에 부착하면 된다.
    📌EIP는 과금이 있다.

마치며

이번 포스팅에서는 VPC와 주소할당 방식,라우팅과 인터넷 연결법에 대해서 알아보았다. 하지만 프라이빗 서브넷에 있는 인스턴스들은 필요시 어떻게 인터넷에 연결하는지, 외부에서는 프라이빗 서브넷에 어떻게 접근하는지에 대해서 궁금할 것이다. 이것들을 가능하게 해주는 기술들을 다음 포스팅에 다루어 볼 예정이다.

profile
성실하게 열심히!

0개의 댓글