카카오 클라우드에서 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 설정을 끝냈습니다!
'클라우드 > 카카오 클라우드' 카테고리의 다른 글
[카카오 클라우드] React 프로젝트 정적 웹 사이트 호스팅(CDN, Object Storage) (0) | 2024.02.22 |
---|---|
[카카오 클라우드] LB에 하위도메인 등록해서 HTTPS 통신하기(Mixed Content 에러 해결) (0) | 2024.02.08 |
[카카오 클라우드] Application Load Balancer 생성 및 연동 (0) | 2024.02.07 |
[카카오 클라우드] Bastion Instance 생성하기 (0) | 2024.01.28 |
[카카오 클라우드] SSL 인증서 발급, 인증서 등록 (0) | 2024.01.15 |