NAT instance

Anoy@·2026년 2월 2일

aws를 한 번이라도 공부해본 사람은 알것이다.
Natgw 즉 nat gateway를 우리가 오늘 해볼 NAT instance는 이 NATGW에
선조격 기능이다. 처음에는 NAT instance를 썻다 근데 그걸 aws에서 기능으로 만든것이
우리가 알고있는 NATGW이다. 만드는 방법은 더 어렵지만 가격이 더 싸서 돈 없는 학생들이나
중소기업에서 쓸 수 있다. 하지만 현업에서는 잘 쓰이지 않는 추세이다.

간단하게 설명해보자면

외국인이 봤을때

"나는 경기도에 사는 이지한이야"라고하면 알아듣지 못할것이다.
하지만 "나는 대한민국 경기도에 사는 이지한이야"라고하면 알아들을 수 있을것이다.

네트워크 또는 aws의 네트워크를 공부하고 싶은 사람은 Nat instance를 공부해보는 것도 괜찮을 것이다.

이것을 이제 서버에 적용하면된다.

"나는 private ec2(Natgw가 없는)야"라고하면 요청을 받지 못한다.
-> 이유는 NATGW가 없기 때문에 인바운드도 아웃바운드도 받아들이지 못하기 때문이다.
근데 "나는 public ec2(igw가 있음) 안에 속해있는 private ec2"라고 하면 그 쪽으로 요청을 보낼것이다.
왜냐하면 public ec2의 igw를 이용하면 요청을 받을 수 있기 때문이다.
우린 이러한 과정을 하기 위해서 다양한 설정들을 해볼것이다.

대충 뭔지는 설명했으니 본론으로 돌아와서 만드는 방법을 알려주겠다.

먼저 만들고 싶은 VPC를 생성한다 나는 이렇게 만들겠다


많은 방법들이 있겠지만 나는 이렇게 작성하였다.(걍 기본 VPC로 해도 됨);

이제 서브넷 생성에 가서 private 서브넷을 생성한 후
-> 라우팅 테이블에 가서 테이블을 생성한다.
다음엔 EC2에 가서 public instance-a 를 생성한다.
생성 후 라우팅 테이블에 라우팅 편집으로 들어간 후 인스턴스를 누르고 방금 만들었던 ec2를 선택한다.

그 다음 private instance-c를 만들것이다.
생성 후 터미널에서 public-ec2로 접속한다.

일단 pem key파일이 다운로드에 있으니깐

<<<저자는 맥북임>>>

cd Downloads(다운로드 폴더 이동)

chmod 400 <<키 파일 이름.pem>>(권한설정)

cat <<본인 키 파일 이름.pem>>(키 파일을 열고 내용물 복사)

ssh -i mac.pem ec2-user@<<public instance의 퍼블릭 IPv4 주소>>(새 모양이 나오면 된거임)

vi <<본인 키 파일 이름.pem>> (Vi 편집기를 사용해서 파일 생성 후 복사해뒀던 내용물 붙여넣기 한 후 :wq)

chmod 400 <<본인 키 파일 이름.pem>> (키 파일에 대한 권한 설정)

sudo yum update -y (패키지 목록 업데이트)

sudo yum install iptables-services -y (iptable 설치 명령어)

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf(커널 포워딩 즉 이 기능이 Nat instance 중 가장 중요하다고 봐도 과언이 아니다. 간략하게 설명하자면 public instance가 private instance의 패킷 즉 데이터를 외부와 통신시킨다(internet gate way를 이용하여))

sudo sysctl -p (커널 포워딩 설정한걸 즉시 적용시켜준다 -> 터미널을 다시 종료하지 않아도 됨)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE(private ec2로 들어오는 트래픽을 Nat instance 즉 public ec2의 IP로 변조해서 밖으로 내보냄)

sudo iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -j ACCEPT(패킷이 통과할 수 있는 길을 열어줌)

sudo yum install iptables-services -y
sudo systemctl enable iptables
sudo service iptables save(중간에 터미널이 꺼지는걸 방지)

이제 터미널에서 할 설정들은 다 마쳤고 aws GUI환경으로 돌아가서 나머지 설정들을 해줄 것이다.
NAT 인스턴스(public ec2)로 가서 클릭한 후 작업에서 네트워킹 탭에 들어가서 소스/대상 확인 변경을 클릭한 후
체크박스에 있는 중지를 누르면 된다. 그 뒤에 아까 EC2를 생성할 때 만들었던 보안그룹에 들어가
규칙을 추가한다.

그 후에 터미널에서 public ec2에 접속한 후
private의 프라이빗 IPv4 주소를 복사한 후

ssh -i mac.pem ec2-user@<<public instance의 프라이빗 IPv4 주소>> 이 형식으로 붙여넣으면
private 인스턴스가 켜진다

제대로 작동되는지 마지막으로 확인해보자

이렇게 계속 저런 문구가 뜨면서 반복되면 정확하게 생성이 된 것이다. 이제 ctl c를 누르면 꺼진다.

리소스 삭제는 생략하도록 하겠다.

0개의 댓글