NAT Instance 사용하기

페이지 이동경로

NAT Instance 사용하기

Private 서브넷의 인스턴스가 인터넷으로 통신할 때, NAT 통신을 하기 위해 NAT Instance를 사용할 수 있습니다.
라우팅 테이블에 연결된 Private 서브넷은 라우트 정책에 의해 퍼블릭 서브넷의 NAT Instance로 트래픽을 전송합니다. 그리고 NAT Instance는 Internet Gateway로 트래픽을 전송합니다. 이때 Internet Gateway로 통신 시 NAT되는 IP는 NAT Instance의 공인 IP입니다. 따라서 NAT Instance는 Public 서브넷 내 생성되어야 하며, 공인 IP 주소가 연결되어야 하고, 인터넷으로 통신되어야 합니다.
Private 서브넷이 NAT Instance를 사용해 인터넷으로 NAT 통신을 하는 방법은 다음과 같습니다.

이미지. NAT Instance 라우팅 경로 이미지 NAT Instance 라우팅 경로

Step 1. 서브넷 생성 및 라우팅 테이블 설정하기

Private 서브넷과 Public 서브넷을 생성한 후, 라우팅 테이블을 설정합니다.

  1. Private 서브넷과 Public 서브넷을 생성합니다. 자세한 설명은 서브넷 생성 및 관리하기를 참고하시기 바랍니다.
  2. Private 서브넷과 Public 서브넷으로 사용할 라우팅 테이블을 설정합니다. 이때 서브넷을 용도에 맞도록 라우팅 테이블에 연결합니다. 자세한 설명은 라우팅 테이블 생성 및 관리하기를 참고하시기 바랍니다.

    [Public 서브넷] 라우팅 테이블

    목적지 Target 타입 Target 이름
    VPC CIDR IP Local Local
    0.0.0.0/0 Internet Gateway Internet Gateway ID

    [Private 서브넷] 라우팅 테이블

    목적지 Target 타입 Target 이름
    VPC CIDR IP Local Local

Step 2. NAT Instance 설정하기

Public 서브넷에 NAT Instance를 생성한 후, 공인 IP를 연결합니다.

  1. NAT Instance로 사용할 인스턴스를 Public 서브넷에 만듭니다.
  2. NAT Instance에 공인 IP를 연결합니다. 자세한 설명은 공인 IP 생성 및 관리하기를 참고하시기 바랍니다.
  3. NAT Instance에 접속하여 아래와 같이 설정합니다.
    • instance의 운영체제에 따라 명령이 다르며, 운영체제 ubuntu-20.04 경우에는 다음의 명령을 사용합니다.

      코드 예제 운영체제 ubuntu-20.04 명령어

      sudo sysctl -w net.ipv4.ip_forward=1
      sudo /sbin/iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
      sudo iptables -t nat -L --line-numbers
      sudo apt-get install iptables-persistent
      cat /etc/iptables/rules.v4
      

Step 3. 출발지/목적지 체크 모드 설정하기

인스턴스는 기본적으로 출발지/목적지 체크를 수행하며, 따라서 인스턴스는 트래픽의 출발지 또는 목적지여야 합니다. 그러나 NAT Instance는 트래픽의 출발지와 목적지가 자신이 아니어도 트래픽을 보내고 받을 수 있어야 합니다.
인스턴스의 출발지/목적지 체크 모드를 설정하여 NAT Instance 용도로 설정합니다.

  1. 카카오 i 클라우드 콘솔에서 Virtual Machine 메뉴를 선택합니다.
  2. Instance 탭에서 NAT Instance로 사용할 인스턴스의 [더보기] 아이콘 > 출발지/목적지 체크 모드를 클릭합니다.
  3. 출발지/목적지 체크 모드 팝업창에서 IP/Mac 주소 체크 해제 모드를 선택 후 [완료] 버튼을 클릭합니다.

    vpc_htg_NATinstance_1-2.png 이미지 출발지/목적지 체크 모드

    구분 설명
    기본 설정 모드 (Default) 해당 인스턴스의 IP/Mac 주소만 네트워크 트래픽을 허용
    - 안전한 네트워크 트래픽 보안을 위해 해당 모드의 설정을 권고
    IP/Mac 주소 체크 해제 모드 모든 IP/Mac 주소에 대한 트래픽을 허용하고, 시큐리티 그룹 정책에 따른 패킷을 포워딩함

Step 4. NAT Instance의 시큐리티 그룹 설정하기

IP/Mac 주소 체크 해제 모드로 설정한 인스턴스를 사용할 경우, 다음의 시큐리티 그룹 정책에 따라 통신할 수 있습니다.
인바운드 정책과 아웃바운드 정책에 다음과 같이 시큐리티 그룹을 설정합니다.

안내
Private 서브넷에서 Http, Https 외 포트를 사용해 통신을 원한다면, NAT Instance의 시큐리티 그룹에서 인바운드/아웃바운드 정책에 사용할 포트를 모두 추가해야 합니다.

인바운드 정책

NAT Instance가 Private 서브넷의 인스턴스로부터 패킷을 받아 인터넷으로 전달하고, 시스템 관리자가 SSH를 통해 접근할 수 있도록 인바운드 정책에 다음과 같이 시큐리티 그룹을 설정합니다.

인바운드 정책

프로토콜 패킷 출발지 포트 번호 설명
TCP Private 서브넷 CIDR 80 Private 서브넷 Instance의 HTTP 트래픽 인바운드 허용
TCP Private 서브넷 CIDR 443 Private 서브넷 Instance의 HTTPS 트래픽 인바운드 허용
TCP 관리자 네트워크의 Public IP 주소 범위 22 관리자 네트워크에서 NAT Instance의 SSH 접속 인바운드 허용

아웃바운드 정책

NAT Instance를 통해 인터넷으로 나갈 수 있도록 아웃바운드 정책에 다음과 같이 시큐리티 그룹을 설정합니다.

아웃바운드 정책

프로토콜 패킷 목적지 포트 번호 설명
TCP 0.0.0.0/0 80 HTTP 트래픽 아웃바운드 허용
TCP 0.0.0.0/0 443 HTTPS 트래픽 아웃바운드 허용

Step 5. 라우팅 테이블 업데이트하기

NAT Instance로 트래픽을 보낼 Private 서브넷의 라우팅 테이블을 업데이트합니다. 라우팅 테이블을 업데이트하기 위해서는 Private 서브넷이 연결된 라우팅 테이블에 인스턴스 라우트를 추가해야 합니다. 자세한 설명은 라우트 추가하기를 참고하시기 바랍니다.

[Private 서브넷] 라우팅 테이블

목적지 Target 타입 Target 이름
VPC CIDR IP Local Local
0.0.0.0/0 Instance Instance IP(Instance ID)