[AWS] NAT 인스턴스

haryun·2022년 11월 1일
0

AWS

목록 보기
5/10
post-thumbnail

NAT 인스턴스

네트워크 주소 변환을 제공하는 고유한 AMI를 생성하고 자신의 AMI를 사용하여 EC2 인스턴스를 NAT 인스턴스로 시작할 수 있습니다. 퍼블릭 서브넷에 있는 NAT 인스턴스를 시작하여 프라이빗 서브넷에 있는 인스턴스가 인터넷 또는 다른 AWS 서비스로의 아웃바운드 IPv4 트래픽을 시작하되, 인터넷에서 시작된 인바운드 트래픽은 인스턴스가 수신하지 못하게 막을 수 있습니다.
AWS

AWS의 내부 인터넷에서 외부 인터넷 구간으로 통신하기 위해서는 인터넷 게이트웨이, NAT 디바이스, Proxy 인스턴스 등을 거쳐야한다.

  • 인터넷 게이트웨이 : Private IP를 Public 또는 Elasic IP로 1:1 변환하여 외부로 접속
  • NAT 디바이스 : 다수의 Private IP가 Public 또는 Elasic IP를 사용 가능 (NAT 디바이스는 NAT 인스턴스와 NAT 게이트웨이를 통칭하는 단어이다. NAT 인스턴스는 소규모 환경에 적합하고, NAT 게이트웨이는 대규모 환경에 적합하다.)
  • Proxy 인스턴스 : 클라이언트와 서버 사이에서 클라이언트의 요청을 대리 수행하고 결과를 전달해주는 역할

NAT 인스턴스 사용

1. 환경 준비

EC2 Private 인스턴스, NAT 인스턴스(public subnet 위치), VPC, 각각의 서브넷과 라우팅 테이블, 보안그룹을 생성한다.

2. 환경 검증

프라이빗 인스턴스에 바로 접근할 수 없기때문에 퍼블릭 서브넷이 위치한 NAT 인스턴스에 접속한 뒤 프라이빗 인스턴스에 접속한다.
(2-1 NAT 인스턴스 접속)
(2-2 NAT 인스턴스는 외부 인터넷과 정상적으로 통신중임을 확인)

(2-3 프라이빗 인스턴스 1은 외부 인터넷과 통신이 불가함을 확인)
(2-4 프라이빗 인스턴스 2도 마찬가지로 외부 인터넷과 통신이 불가함을 확인)

3. NAT 인스턴스 사용

3-1) IPv4 라우팅과 IP masquerade 확인


/proc/sys/net/ipv4/ip_forward 는 라우터의 패킷 포워딩 옵션을 담당하는 파일이다. 해당 옵션이 1로 지정되어 있어야 정상적인 패킷 전송이 가능하다. (리눅스를 일반적인 용도로 사용하는 경우 상관 없지만 라우터나 게이트웨이로 사용할 경우 꼭 확인하자! 0일 경우 /etc/sysctl.conf 파일의 net.ipv4.ip_forward를 수정하여 설정 가능)

IP Masquerade는 리눅스의 NAT 기능으로, 내부에서 외부 인터넷으로 접속할 수 있게 해준다.

3-2) 프라이빗 서브넷에 라우팅 정보 추가하기


NAT 인스턴스의 eth0에 외부 통신대역을 추가한다.

3-3) 원본/대상확인 기능 비활성화

각각의 EC2 인스턴스는 기본적으로 원본/대상 확인을 수행합니다. 이는 인스턴스가 보내거나 받는 트래픽의 원본 또는 대상이어야 한다는 의미입니다. 하지만, NAT 인스턴스는 원본 또는 대상이 그 자신이 아닐 때 트래픽을 보내고 받을 수 있어야 합니다. 따라서 NAT 인스턴스에서 원본/대상 확인을 비활성화해야 합니다. AWS

NAT 인스턴스를 경유해서 나가는 트래픽의 유실을 막기위해 해당 기능을 꼭 비활성화 해야한다.

3-4) 프라이빗 인스턴스로 외부 접속 확인하기

두 프라이빗 인스턴스 모두 NAT 인스턴스를 거쳐 정상적으로 외부접속 가능!

tcp 포트를 모니터링 해보면 IP가 변환되는 것을 확인할 수 있다.

0개의 댓글