클라우드/카카오 클라우드

[카카오 클라우드] NAT Instance 생성하기

밥빵 2024. 2. 5. 22:28

카카오 클라우드에서 NAT Instance 생성하기


개요

 



현재 웹 애플리케이션 서버(WAS)는 프라이빗 서브넷 내에 위치하여 직접적인 인터넷 연결이 불가능한 상태입니다.
WAS와 인터넷간의 통신을 위해  퍼블릭 서브넷 내에 NAT 인스턴스를 생성할 계획입니다.
NAT 인스턴스를 생성하는 경우 WAS가 외부 리소스에 접근할 수 있도록 하면서도 외부로부터의 직접적인 접근은 차단하여 보안을 유지할 있습니다.

* 카카오 공공기관 리전에서 진행했습니다.

 


NAT instance 생성

NAT Instance를 생성합니다.
- Ubuntu 20.04 환경에서 진행했습니다.

 

 

 

보안그룹 설정

NAT Instance 보안그룹을 설정합니다.

보안그룹 설정
- NAT Instance 접근을 위한 22번 포트 
- NAT Instance 에서 WAS 트래픽을 허용하기 위해 WAS-sg 80,443 포트

 

 

Public IP 설정

NAT Instance가 외부 인터넷과 통신할 수 있도록 Public IP를 설정합니다.

 

 

 

출발지 목적지 설정

NAT Instance 출발지/목적지 설정
출발지/목적지 확인 변경 → 기본설정 → 출발지/목적지 확인 중지 으로 변경

 

인스턴스는 기본적으로 출발지/목적지를 확인하며 본인을 목적지로 하는 트래픽만을 수신합니다.

그러나 NAT Instance는 트래픽의 출발지와 목적지가 자신이 아니어도 트래픽을 보내고 받을 수 있어야 합니다. (WAS -> NAT -> 인터넷)

인스턴스의 출발지/목적지 확인 변경 기능을 통해, 생성한 Instance를 NAT Instance 용도로 설정할 수 있습니다.

 

기본 설정 (Default)
해당 인스턴스의 IP/MAC 주소만 네트워크 트래픽을 허용
안전한 네트워크 트래픽 보안을 위해 해당 설정 사용을 권고

출발지/목적지 확인 중지
모든 IP/MAC 주소에 대한 트래픽을 허용하고 Security Group 정책에 따른 패킷을 포워딩

 

 

Route Table 업데이트

NAT Instance로 트래픽을 보낼 Private Subnet의 Route Table을 업데이트 합니다.

WAS가 있는 Private Subnet에서 목적지가 0.0.0.0/0인 트래픽은 NAT Instance로 가도록 라우팅 테이블을 설정해줍니다.

라우팅 테이블

 

라우트 추가

목적지 : 0.0.0.0/0

타켓 : NAT Instance

 

 

NAT Instance 설정

NAT Instance에 접속하여 설정을 해줍니다.

 

sudo sysctl -w net.ipv4.ip_forward=1
sudo /sbin/iptables -t nat -A POSTROUTING -o {interface} -j MASQUERADE

 

1. sudo sysctl -w net.ipv4.ip_forward=1

시스템의 IP 포워딩 기능을 활성화합니다.

NAT 인스턴스가 프라이빗 네트워크의 패킷을 인터넷으로 전달 할 수 있게 하려면 포워딩 기능을 활성화 해야합니다.

 

2 sudo /sbin/iptables -t nat -A POSTROUTING -o {interface} -j MASQUERADE.

interface 주소는 ip addr 명령어를 통해 확인할 수 있습니다.

ubuntu@host-192-168-16-230:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever

2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9000 qdisc mq state UP group default qlen 1000
link/ether fa:16:3e:14:ec:df brd ff:ff:ff:ff:ff:ff
inet 192.168.16.230/24 brd 192.168.16.255 scope global dynamic enp3s0
valid_lft 71219sec preferred_lft 71219sec
inet6 fe80::f816:3eff:fe14:ecdf/64 scope link 
valid_lft forever preferred_lft forever

ubuntu@host-192-168-16-230:~$ sudo /sbin/iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE
ubuntu@host-192-168-16-230:~$

 

 

NAT Instance 설정을 끝냈습니다!