본문 바로가기

개발

AWS 네트워크, 제대로 파헤치기: VPC, 서브넷, 라우팅, NAT, 보안 그룹 완벽 가이드 🌐

반응형

클라우드 컴퓨팅의 선두 주자인 AWS(Amazon Web Services)를 효과적으로 사용하려면, 그 기반이 되는 네트워킹에 대한 이해가 필수적입니다. AWS에서 네트워크를 구성하는 것은 마치 가상 공간에 나만의 데이터 센터를 짓는 것과 같습니다. 이 글에서는 AWS 네트워크의 핵심 구성 요소인 VPC, 서브넷, 라우팅 테이블, NAT 게이트웨이, 보안 그룹에 대해 상세히 알아보겠습니다. 각 구성 요소의 역할과 상호 작용을 이해하면, 더욱 안전하고 효율적인 클라우드 인프라를 구축할 수 있습니다.


1. AWS 네트워크의 출발점, VPC (Virtual Private Cloud)

VPC는 AWS 클라우드 내부에 격리된 가상의 사설 네트워크입니다. 모든 AWS 리소스(예: EC2 인스턴스, RDS 데이터베이스)는 반드시 VPC 내부에 존재해야 합니다. VPC는 여러분의 클라우드 인프라를 위한 가상의 땅과 같습니다. 이 땅을 먼저 확보해야 그 위에 건물을 지을 수 있습니다.

  • CIDR 블록 (Classless Inter-Domain Routing): VPC를 생성할 때 가장 먼저 지정하는 것이 바로 CIDR 블록입니다. 이는 VPC 내에서 사용할 수 있는 사설 IP 주소 범위를 정의합니다. 예를 들어 10.0.0.0/16 CIDR 블록을 지정하면, 10.0.0.0부터 10.0.255.255까지 약 65,536개의 사설 IP 주소를 사용할 수 있게 됩니다. 이 사설 IP 주소들은 인터넷을 통해 직접 접근할 수 없으므로, 기본적으로 안전합니다.
  • VPC의 역할: VPC는 여러분에게 클라우드 네트워크에 대한 완전한 통제권을 부여합니다. IP 주소 범위 설정부터 서브넷 분할, 라우팅 규칙 정의, 게이트웨이 연결, 보안 설정까지 모든 것을 직접 설계하고 관리할 수 있습니다.

2. 네트워크를 나누는 방, 서브넷(Subnet)

서브넷은 VPC 내의 IP 주소 범위를 더 작은 단위로 나눈 것입니다. VPC라는 넓은 땅을 여러 개의 방으로 나누는 것과 같습니다. 서브넷을 나누는 주된 이유는 보안과 효율성을 위해서입니다.

  • 퍼블릭 서브넷 (Public Subnet): 인터넷 게이트웨이(Internet Gateway, IGW)로 직접 연결되는 라우팅 규칙을 가진 서브넷입니다. 이 서브넷에 있는 리소스들은 퍼블릭 IP를 할당받아 외부 인터넷과 직접 통신할 수 있습니다. 웹 서버, 로드 밸런서 등 외부에서 접근해야 하는 리소스들은 주로 퍼블릭 서브넷에 위치시킵니다.
  • 프라이빗 서브넷 (Private Subnet): 인터넷 게이트웨이로의 직접적인 라우팅 규칙이 없는 서브넷입니다. 외부에서 직접 접근할 수 없으므로, 보안이 중요한 데이터베이스 서버, 애플리케이션 서버 등은 프라이빗 서브넷에 배치하는 것이 AWS의 보안 모범 사례입니다. 프라이빗 서브넷의 리소스는 외부에서 보호되지만, 인터넷으로의 아웃바운드(Outbound) 통신이 필요할 수 있습니다. (예: 운영체제 업데이트 다운로드)

3. 네트워크의 길잡이, 라우팅 테이블(Routing Table)

라우팅 테이블은 네트워크 트래픽이 목적지로 향하는 '경로'를 정의하는 규칙들의 모음입니다. VPC의 각 서브넷은 반드시 하나의 라우팅 테이블과 연결되어야 합니다. 이 라우팅 테이블이 서브넷 내부의 트래픽을 어디로 보낼지 결정합니다.

  • 구성 요소: 라우팅 테이블은 주로 '대상(Destination)'과 '타겟(Target)'으로 구성됩니다.
    • 대상: 트래픽이 향하는 IP 주소 범위입니다. 0.0.0.0/0은 '모든 트래픽'을 의미합니다.
    • 타겟: 트래픽이 최종적으로 도착할 곳입니다.
  • 퍼블릭 서브넷의 라우팅: 퍼블릭 서브넷의 라우팅 테이블에는 0.0.0.0/0 (모든 트래픽)의 타겟이 인터넷 게이트웨이(IGW)로 설정되어 있습니다. 이 규칙 덕분에 서브넷의 트래픽이 인터넷으로 나갈 수 있습니다.
  • 프라이빗 서브넷의 라우팅: 프라이빗 서브넷의 라우팅 테이블에는 인터넷으로 향하는 직접적인 규칙이 없습니다. 따라서 외부에서 직접 접근할 수 없는 것입니다.

4. 프라이빗 서브넷의 출구, NAT 게이트웨이(NAT Gateway)

프라이빗 서브넷의 리소스는 외부 인터넷으로부터 보호되어야 하지만, 때로는 외부로 데이터를 보내거나 업데이트를 다운로드해야 할 필요가 있습니다. 이때 등장하는 것이 바로 NAT(Network Address Translation) 게이트웨이입니다.

  • 역할: NAT 게이트웨이는 프라이빗 서브넷 내의 인스턴스가 인터넷으로 아웃바운드 통신은 가능하게 하면서, 외부로부터의 인바운드 통신은 차단하는 역할을 합니다.
  • 작동 방식: 프라이빗 서브넷의 인스턴스가 인터넷으로 트래픽을 보내면, 그 트래픽은 NAT 게이트웨이를 거치게 됩니다. NAT 게이트웨이는 인스턴스의 사설 IP 주소를 자신의 퍼블릭 IP 주소로 변환하여 외부로 보냅니다. 외부 인터넷에서 돌아오는 응답 패킷은 다시 NAT 게이트웨이를 거쳐 원래의 인스턴스로 전달됩니다. 이를 통해 인스턴스의 사설 IP는 외부에 노출되지 않습니다.
  • 설치 위치: NAT 게이트웨이는 반드시 퍼블릭 서브넷에 위치해야 하며, 프라이빗 서브넷의 라우팅 테이블은 0.0.0.0/0의 타겟을 NAT 게이트웨이로 설정해야 합니다.

5. 네트워크의 문지기, 보안 그룹(Security Group)

보안 그룹은 AWS 리소스(주로 EC2 인스턴스)에 대한 가상 방화벽 역할을 합니다. 이는 인스턴스의 앞을 지키는 '보안 요원'과 같습니다. 보안 그룹은 허용할 트래픽만을 정의하며, 명시적으로 허용되지 않은 모든 트래픽은 기본적으로 차단합니다.

  • 스테이트풀(Stateful): 보안 그룹의 가장 큰 특징은 '스테이트풀'이라는 점입니다. 즉, 인바운드 규칙에 따라 특정 트래픽이 허용되면, 그에 대한 응답으로 발생하는 아웃바운드 트래픽은 별도의 규칙 없이도 자동으로 허용됩니다. 예를 들어, 인스턴스로의 SSH 접속(인바운드)을 허용하면, 인스턴스에서 클라이언트 PC로 보내는 응답(아웃바운드)은 자동으로 허용됩니다.
  • 설정 규칙: 보안 그룹은 다음과 같은 규칙을 설정할 수 있습니다.
    • 인바운드(Inbound): 외부에서 인스턴스로 들어오는 트래픽에 대한 규칙입니다.
    • 아웃바운드(Outbound): 인스턴스에서 외부로 나가는 트래픽에 대한 규칙입니다.
    • 규칙 설정: 프로토콜(TCP, UDP), 포트 번호(80번, 443번 등), 그리고 소스 IP 주소(0.0.0.0/0은 모든 IP)를 기준으로 규칙을 정의합니다.

6. VPC 네트워크 설계 예시: 2-Tier 웹 애플리케이션

앞서 설명한 모든 개념을 활용하여 간단한 웹 애플리케이션을 위한 VPC 네트워크를 설계해 보겠습니다.

  • 요구사항:
    • 사용자가 접속하는 웹 서버 (EC2 인스턴스)
    • 웹 서버와만 통신하는 데이터베이스 (RDS)
  • 네트워크 설계:
    1. VPC 생성: 10.0.0.0/16 CIDR 블록으로 VPC를 생성합니다.
    2. 서브넷 생성:
      • 퍼블릭 서브넷: 10.0.1.0/24 서브넷을 생성하고, 웹 서버를 이 서브넷에 배치합니다.
      • 프라이빗 서브넷: 10.0.2.0/24 서브넷을 생성하고, 데이터베이스를 이 서브넷에 배치합니다.
    3. 라우팅 테이블:
      • 퍼블릭 라우팅 테이블: 0.0.0.0/0의 타겟을 인터넷 게이트웨이(IGW)로 설정하고, 퍼블릭 서브넷과 연결합니다.
      • 프라이빗 라우팅 테이블: 0.0.0.0/0의 타겟을 NAT 게이트웨이로 설정하고, 프라이빗 서브넷과 연결합니다. NAT 게이트웨이는 퍼블릭 서브넷에 생성합니다.
    4. 보안 그룹:
      • 웹 서버 보안 그룹: 인바운드 규칙으로 HTTP(80), HTTPS(443) 포트를 0.0.0.0/0에서 허용하고, SSH(22) 포트를 특정 관리자 IP에서만 허용합니다.
      • 데이터베이스 보안 그룹: 인바운드 규칙으로 MySQL(3306) 포트를 웹 서버 보안 그룹으로부터만 허용합니다. (IP 주소가 아닌 보안 그룹 ID로 참조 가능). 이렇게 하면 웹 서버만 데이터베이스에 접근할 수 있게 되어 보안이 강화됩니다.

결론: AWS 네트워크는 선택이 아닌 필수입니다.

VPC는 여러분의 클라우드 인프라를 위한 독립된 공간을, 서브넷은 그 공간을 기능별로 분리하는 역할을 합니다. 라우팅 테이블은 트래픽의 흐름을 제어하고, NAT 게이트웨이는 프라이빗 서브넷의 아웃바운드 통신을 안전하게 보장합니다. 마지막으로 보안 그룹은 각 리소스의 문지기 역할을 하며 외부의 위협으로부터 인스턴스를 보호합니다. 이 모든 구성 요소를 유기적으로 조합하여 설계하는 것이 바로 AWS 클라우드 아키텍처의 시작입니다. 이 가이드를 통해 여러분의 클라우드 여정이 더욱 안전하고 효율적이 되기를 바랍니다.

 
반응형