본문으로 건너뛰기

부록. NAT 인스턴스 사용

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

이미지. NAT 인스턴스 라우팅 경로 NAT 인스턴스 라우팅 경로

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

프라이빗 서브넷과 퍼블릭 서브넷을 생성한 후, 라우팅 테이블을 설정합니다.

  1. 프라이빗 서브넷과 퍼블릭 서브넷을 생성합니다. 자세한 설명은 서브넷 생성 및 관리를 참고하시기 바랍니다.

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

    [퍼블릭 서브넷] 라우팅 테이블
    목적지대상 유형대상 이름
    VPC CIDR IPLocalLocal
    0.0.0.0/0인터넷 게이트웨이인터넷 게이트웨이 ID
    [프라이빗 서브넷] 라우팅 테이블
    목적지대상 유형대상 이름
    VPC CIDR IPLocalLocal

Step 2. NAT 인스턴스 설정

퍼블릭 서브넷에 NAT 인스턴스를 생성한 후, 퍼블릭 IP를 연결합니다.

  1. NAT 인스턴스로 사용할 인스턴스를 퍼블릭 서브넷에 만듭니다.

  2. NAT 인스턴스에 퍼블릭 IP를 연결합니다. 자세한 설명은 퍼블릭 IP 생성 및 관리를 참고하시기 바랍니다.

  3. NAT 인스턴스에 접속하여 아래와 같이 설정합니다. 인스턴스의 운영체제에 따라 명령이 다르며, 아래 탭을 확인하여 사용자 환경에 맞게 설정합니다. 예제 명령어는 재부팅 후에 동작하지 않습니다. 재부팅 시에도 해당 설정이 지속적으로 유지되길 원한다면 추가적인 설정이 필요합니다.

    Ubuntu 20.04 버전을 기준으로 다음의 명령을 사용합니다.

    BASH
    sudo sysctl -w net.ipv4.ip_forward=1
    sudo /sbin/iptables -t nat -A POSTROUTING -o {interface} -j MASQUERADE
    파라미터설명
    {interface}NAT 통신을 위한 Network Interface 이름으로 수정하여 설정
    - 예시: eth0, enp3s0

Step 3. 출발지/목적지 확인 변경 설정

인스턴스는 기본적으로 출발지/목적지를 확인하며 본인을 목적지로 하는 트래픽만을 수신합니다. 그러나 NAT 인스턴스는 트래픽의 출발지와 목적지가 자신이 아니어도 트래픽을 보내고 받을 수 있어야 합니다.
인스턴스의 출발지/목적지 확인 변경 기능을 통해, 생성한 인스턴스를 NAT 인스턴스 용도로 설정할 수 있습니다.

  1. 카카오클라우드 콘솔에서 Virtual Machine 메뉴로 이동합니다.

  2. 인스턴스 탭에서 NAT 인스턴스로 사용할 인스턴스의 [더 보기] 아이콘 > 출발지/목적지 확인 변경을 선택합니다.

  3. 출발지/목적지 확인 변경 팝업창에서 출발지/목적지 확인 중지를 선택 후 [완료] 버튼을 클릭합니다.

    vpc_htg_NATinstance_1-2.png 출발지/목적지 확인 변경

    구분설명
    기본 설정 (Default)해당 인스턴스의 IP/MAC 주소만 네트워크 트래픽을 허용
    - 안전한 네트워크 트래픽 보안을 위해 해당 설정 사용을 권고
    출발지/목적지 확인 중지모든 IP/MAC 주소에 대한 트래픽을 허용하고, 보안 그룹 정책에 따른 패킷을 포워딩

Step 4. NAT 인스턴스의 보안 그룹 설정

출발지/목적지 확인 중지로 설정한 인스턴스를 사용할 경우, 다음의 보안 그룹 정책에 따라 통신할 수 있습니다.
인바운드 규칙과 아웃바운드 규칙에 다음과 같이 보안 그룹을 설정합니다.

안내

프라이빗 서브넷에서 HTTP, HTTPS 이외의 포트를 사용해 통신을 원한다면, NAT 인스턴스의 보안 그룹에서 인바운드/아웃바운드 규칙에 사용할 포트를 모두 추가해야 합니다.

인바운드 규칙

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

프로토콜패킷 출발지포트 번호설명
TCP   프라이빗 서브넷 CIDR80    프라이빗 서브넷 인스턴스의 HTTP 트래픽 인바운드 허용
TCP프라이빗 서브넷 CIDR443프라이빗 서브넷 인스턴스의 HTTPS 트래픽 인바운드 허용
TCP관리자 네트워크의 퍼블릭 IP 주소 범위22관리자 네트워크에서 NAT 인스턴스의 SSH 접속 인바운드 허용

아웃바운드 규칙

NAT 인스턴스를 통해 인터넷으로 나갈 수 있도록 아웃바운드 규칙에 다음과 같이 보안 그룹을 설정합니다.

프로토콜패킷 목적지포트 번호설명
TCP0.0.0.0/080HTTP 트래픽 아웃바운드 허용
TCP0.0.0.0/0443HTTPS 트래픽 아웃바운드 허용

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

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

목적지대상 유형대상 이름
VPC CIDR IPLocal     Local
0.0.0.0/0인스턴스인스턴스 IP(인스턴스 ID)