[AWS] VPC 정리

xgro·2022년 5월 25일
1

AWS

목록 보기
1/19
post-thumbnail

👉 VPN

VPN은 Virtual Private Network의 약자로 큰 규모의 조직이 여러 곳에 분산 되어 있는 컴퓨터들을 연결하는 보안성이 높은 사설 네트워크를 만들거나, 인터넷을 활용하여 원격지 간에 네트워크를 서로 연결하고 암호화 기술을 적용하여 보다 안정적이며, 보안성 높은 통신 서비스를 제공하는 서비스

AWS는 VPC와 VPC Gateway를 통해 On-premise의 VPN장비와 AWS간의 VPN을 연결할 수 있으며, 이를 통해 보안성 높은 하이브리드 클라우드 환경을 구현하여, 원활한 클라우드 컴퓨팅 서비스를 지원 할 수 있다.

👉 VPC 관련 개념

❎ VPC

VPC는 Virtual Private Cloud 서비스로, 클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 합니다.

이전에 VPC가 없었을 때는 클라우드에 있는 리소스를 격리 할 수 있는 방법이 없었고, 따라서 인스턴스들이 서로 거미줄처럼 연결되고, 인터넷과 연결되어 시스템의 복잡도를 엄청나게 끌어올릴 뿐만 아니라, 의존도를 높였습니다. 따라서 유지 및 관리에 많은 비용과 노력을 투입해야 하는 단점이 있었습니다. 그러나 VPC를 분리함으로써 확장성을 가질 수 있고, 네트워크에 대한 완전한 통제권을 가질 수 있습니다.

❎ VPC 주요 특징

  • AWS에 사설 네트워크 구축
  • 회사와 AWS 간 VPN을 연결하거나 가상 네트워킹 구현
  • 기존 데이터 센터와의 연결을 통해 하이브리드 환경 구성
  • AWS를 회사 인프라의 일부터럼 사용할 수 있으며, 내부 시스템 소프트웨어의 연동이 매우 쉬움
  • 세심한 네트워크 설정 가능
  • 모든 리전에서 이용 가능

👉 VPC 이해를 위한 구성 요소와 주요 용어

❎ IP Address

IP는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호로, IPv4, IPv6로 나뉘어 있으며 혼용하여 사용하고 있습니다.

IPv4를 기준으로 예를 들면, 아래와 같은 형식인 172.16.0.0의 모습으로 이루어져 있습니다.

172.16.0.0
10101100000100000000000000000000

하지만 표에서 보이는 십진수의 형태는 보기 편하도록 변형한 것이고, 실제의 형태는 2진수 8자리의 형태, 즉 각 8bit(비트)씩 총 32bit로 구성되어 있습니다. 이때 각 8bit를 Octet이라고 부르며, .으로 구분합니다. 그러므로 IPv4는 4개의 Octet(옥텟)으로 이루어져 있다고 할 수 있습니다.

  • IP Address Class
    이전에는 IPv4 주소에서 호스트가 연결되어 있는 특정 네트워크를 가리키는 8비트의 네트워크 영역(Network Address)과 해당 네트워크 내에서 호스트의 주소(Host Address)를 가리키는 나머지 영역을 구분하기 위해서 클래스(Class)를 사용했습니다. 클래스는 총 5가지(A, B, C, D, E) 클래스로 나누어져 있습니다. 하지만 D와 E 클래스는 멀티캐스트용, 연구 개발을 위한 예약 IP이므로 보통 사용되지 않습니다.


  • CIDR(Classless inter-domain routing)

    CIDR는 사이더라고 불리우며, 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한 국제 표준의 IP주소 할당 방법이며, 앞서 설명한 IP 클래스 방식을 대체한 방식입니다.

    기존에는 클래스에 따라 정해진 Network Address와 Host Address를 사용해야 했다면, CIDR은 원하는 블록만큼 Network Address를 지정하여 운용할 수 있습니다.

    예를 들면 다음과 같습니다.

    위의 예시에 따르면, /16은 첫 16bit를 Network Address로 사용한다는 의미로, 총 2^16인 65,536개의 IP주소를 사용할 수 있는 커다란 네트워크 블록을 이러한 방식으로 표시합니다.

    CIDR 블록IP 주소의 수
    /2816
    /24254
    /204094
    /1816,382
    /1665,536

  • RFC 1918 표준

    • 10.0.0.0 - 10.255.255.255 (10/8 prefix)
    • 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
    • 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
  • Private IP

    • 인터넷을 통해 연결 할 수 없는 VPC 내부에서만 사용할 수 있는 IP 주소
    • 동일 네트워크에서 인스턴스 간 통신에 사용할 수 있다.
  • Public IP

    • 인터넷을 통해 연결할 수 있는 IP 주소
    • 인스턴스와 인터넷 간의 통신을 위해 사용할 수 있다.
    • 인스턴스가 재부팅되면 새로운 퍼블릭 IP가 할당된다.
  • Elastic IP

    • 동적 컴퓨팅을 위해 고안된 고정 퍼블릭 IP 주소
    • VPC의 모든 인스턴스와 네트워크 인터페이스에 EIP를 할당할 수 있으며, 다른 인스턴스에 주소를 신속하게 다시 매칭하여 인스턴스 장애 조치를 수행할 수도 있다.
    • 탄력적 IP주소의 효율적인 활용을 위해 탄력적 IP 주소가 실행 중인 인스턴스와 연결되어 있지 않거나, 중지된 인스턴스 또는 분리된 네트워크 인터페이스와 연결되어 있는 경우 시간당 요금이 부과된다.
    • 사용가능한 탄력적 IP 주소는 5개로 제한되며, 이를 절약하기 위해 NAT 디바이스를 사용할 수 있다.

❎  서브넷(Subnet)

VPC 내부의 네트워크에서 서비스 목적에 따라 IP를 Block으로 나누어 구분한다. 이렇게 분리된 IP Block의 모음을 서브넷이라고 한다.

서브넷은 서브네트워크(Subnetwork)의 줄임말로 IP 네트워크의 논리적인 하위 부분을 가리킵니다. 서브넷을 통해 하나의 네트워크를 여러 개로 나눌 수 있습니다. VPC를 사용하면 퍼블릭 서브넷, 프라이빗 서브넷, VPN only 서브넷 등, 필요에 따라 다양한 서브넷을 생성할 수 있습니다.

  • 퍼블릭 서브넷 : 인터넷을 통해 연결 할 수 있는 서브넷
  • 프라이빗 서브넷 : 인터넷을 연결하지 않고, 보안을 유지하는 배타적인 서브넷
  • VPN only 서브넷 : 기업 데이터 센터와 VPC를 연결하는 서브넷

서브넷은 VPC의 CIDR 블록을 이용해 정의되며, 최소 크기의 서브넷은 /28 입니다. 이때 주의 할 점은 서브넷은 AZ당 최소 하나를 사용할 수 있고, 여러 개의 AZ에 연결되는 서브넷은 만들 수 없습니다.

Tips )
AWS가 확보한 서브넷 중 처음 네 개의 IP주소와 마지막 IP주소는 인터넷 네트워킹을 위해 예약되어 있다.
서브넷에서 가용 IP주소를 계산할 때는 항상 이 부분을 기억하고 있어야 합니다.
예를 들어, 10.0.0.0/24 체계의 CIDR 블록이 있는 서브넷에서 10.0.0.0, 10.0.0.1, 10.0.02, 10.0.0.3, 10.0.0.255 등 5개의 IP주소는 예약 되어 있습니다.

Subnet은 AZ내부에 각각 만든다

❎  라우팅 테이블(Routing Table)

트래픽의 전송 방향을 결정하는 라우트와 관련된 규칙을 담은 테이블로 목적지를 향한 최적의 경로이다.

라우팅 테이블은 데이터 패킷을 전송하기 위한 모든 정보를 담고 있습니다. 쉽게 말하자면 라우팅 테이블은 하나의 지점에서 또 다른 지점으로 가기 위한 모든 정보를 제공하기 위한 테이블입니다.

모든 서브넷은 라우팅 테이블을 지닙니다.

예를 들어 아래의 캡처본과 같이 특정 VPC의 서브넷이 라우팅 테이블에 인터넷 게이트웨이(VPC와 인터넷 간 통신을 가능하게 하는 구성요소)를 포함하고 있다면, 해당 서브넷은 인터넷 액세스 권한 및 정보를 가집니다.

각각의 서브넷은 항상 라우팅 테이블을 가지고 있어야 하며, 하나의 라우팅 테이블 규칙을 여러 개의 서브넷에 연결하는 것도 가능합니다. 서브넷을 생성하고 별도의 라우팅 테이블을 생성하지 않으면 클라우드가 자동으로 VPC의 메인 라우팅 테이블을 연결합니다.

❎  NAT 게이트웨이

외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서, 내부 IP 주소를 외부 IP 주소로 변환하는 작업을 수행하는 서비스

예) 외부에 공개될 필요가 없거나, 보안상 중요한 서비스이지만 패치나 보안 업데이트, 소프트웨어 업데이트를 인터넷을 통해 받아야 하는 경우 NAT 게이트웨이나 NAT 인스턴스를 사용하게 됩니다.

  • NAT 게이트 구성하기 위해 다음 세 가지 조건을 만족해야 합니다.
    • NAT 게이트를 생성하기 위해 퍼블릭 서브넷 지정
    • NAT 게이트웨이와 연결할 탄력적 IP 주소 필요
    • NAT 게이트웨이를 만든 후 인터넷이 트래픽이 NAT 게이트웨이로 통신이 가능하도록 프라이빗 서브넷과 연결된 라우팅 테이블 업데이트

NAT 게이트웨이는 네트워크 주소 변환(NAT) 서비스입니다. NAT 게이트웨이를 사용하면 프라이빗 서브넷의 리소스가 인터넷에 연결할 수 있습니다. 하지만 외부 서비스는 프라이빗 서브넷의 리소스와의 연결을 시작할 수 없습니다.

VPC에서 NAT 게이트웨이를 생성하도록 선택한 경우 NAT 게이트웨이가 프로비저닝되고 사용 가능한 각 시간에 대해 요금이 부과됩니다. 또한 게이트웨이를 통과하는 데이터 양에 대해서도 요금이 부과됩니다.

❎  VPC Peering

피어링 연결은 비공개적으로 두 VPC간에 트래픽을 라우팅 할 수 있게 하기 위한 서로 다른 VPC간의 네트워크 연결을 제공한다.

데이터센터간 전용 회선을 설치한 것과 같이, 서로 다른 격리된 인터넷끼리 전용으로 통신이 가능하게 해준다.

공통/핵심 서비스

  • 인증/디렉토리
  • 모니터링
  • 로깅
  • 원격 관리
  • 스캐닝

❎  보안 그룹(Security groups), 네트워크 액세스 제어 목록(Network ACL)

네트워크 통신과 트래픽에 대해 IP와 Port를 기준으로 통신을 허용하거나 차단하기 위한 기능을 제공

AWS의 장점 중 하나인 오토스케일에 대응하기 쉽게 보안 그룹 정책을 이용해서 그룹별로 허용 조건을 설정 할 수 있다.

구분보안 그룹네트워크 ACL
서비스 범위인스턴스 레벨에 적용서브넷 레벨에 적용
적용 정책허용 규칙만 적용허용 및 거부 규칙 적용
구동 방식규칙에 상관없이 반환 트래픽 허용반환 트래픽이 별도로 허용되어야 함
룰 검토 / 적용해당 객체 내 모든 룰 검토해당 객체 내 룰을 번호 순으로 처리
적용 방법인스턴스에 보안 그룹 추가 필요연결된 서브넷에 모든 인스턴스 자동 적용됨
  • 최소 권한 원칙(Principle of Least Privilege) 준수
  • VPC는 egress/ingress 에 대한 Security Group 생성
profile
안녕하세요! DevOps 엔지니어 이재찬입니다. 블로그에 대한 피드백은 언제나 환영합니다! 기술, 개발, 운영에 관한 다양한 주제로 함께 나누며, 더 나은 협업과 효율적인 개발 환경을 만드는 과정에 대해 인사이트를 나누고 싶습니다. 함께 여행하는 기분으로, 즐겁게 읽어주시면 감사하겠습니다! 🚀

0개의 댓글