[AWS] NAT instance 구성

고구마양갱·2024년 12월 22일

AWS CLOUD

목록 보기
13/32
post-thumbnail

NAT instance/NAT gateway 에 대해 이해했으니,
각각에 대해 직접 구성해볼 차례이다. 우선 NAT instance 를 먼저 구성한다.

bastion host 구성까지 완료된 상태에서 작업을 수행한다.
사설대역의 프라이빗 서버(인스턴스)에 접속을 해야 하므로, 베스천호스트가 필요하다.

NAT 인스턴스는 별도의 AMI를 선택하여 생성하고,
AMI 를 잘못 선택하면 과금이 될 수도 있으니 유의해야 한다.

[AWS] Bastion host 구성
[AWS] IGW로 외부 인터넷 연결
[AWS] VPC, SUBNET 네트워크 망 구성

먼저 NAT 역할을 할 EC2 인스턴스를 생성한다.

우측의 Browse more AMIs 선택하면

이렇게 선택 가능한 AMI 들이 나오는데, 이 단계가 중요한데 아무렇게나 검색해서 나오는 것을 선택했다가는 뭔지도 모르고 구독신청이 되거나, 과금이 될 수도 있다.
그리고 AMI 에 따라서 사용가능한 EC2 인스턴스의 하드웨어 스펙이 다르니 이 점도 유의해야 한다.

여기서 vpc-nat 라고 검색하고 Community AMIs 탭을 선택하면 nat 용도로 사용가능한 EC2 AMI 들이 나온다. AWS Marketplace Community AMIs 의 차이는 AWS 인증을 받아 유료로 제공하는 것인지, 아니면 개인이 제작한 것을 올렸는지의 차이다.

목록들 중 비교적 최신의 것을 선택한다.

인스턴스 타입은 프리티어로 사용가능한 t2.micro , key pair 은 생성해둔 KEY-TEST 를 선택한다.

이미 생성한 VPC 선택하고, NAT 인스턴스는 외부와 통신해야 하므로 public subnet을 선택한다. (선택한 public 서브넷은 라우팅이 설정되어 외부 인터넷과 통신이 가능하다.)

혹시 ssh 접속할 일이 있을지 모르니, ssh 는 any 로 허용, 그 외 http, https 는 내부 대역을 대상으로 한다. (10.0.0.0/16) 이렇게 nat instace 를 생성하고

이 부분도 중요한데 NAT 인스턴스로 사용하기 위해선, 해당 인스턴스의 출발지/목적지 체크를 중지해야 한다. NAT 인스턴스 우클릭 > Networking > Change source/destination check
을 선택하면 선택 창이 나오는데,

여기서 source/destination checking 부분의 stop에 체크해서 출발지/목적지 체크를 중지한다.
이제 사설대역의 통신을 위해 서브넷 라우팅 테이블을 구성해야 한다.
(사설대역에서 외부로 나가는 것이므로 라우팅 필요)

Private subnet 에 연결한 라우팅 테이블을 선택, 라우팅을 수정한다.

목적지는 0.0.0.0/0 으로 하고 , target 은 instance 로 선택은 생성한 NAT 인스턴스를 선택한다. 그러면 10.0.0.0/16 을 제외한 다른 곳(any)과 통신할 때, 생성해둔 NAT 인스턴스를 경유하여 통신한다.

사설대역의 인스턴스가 외부와 통신이 가능한지 ping 테스트를 해야 하므로, NAT 인스턴스 보안그룹을 수정하여 ping 이 거쳐갈 수 있도록 한다.

출발지를 VPC 내부 대역 10.0.0.0/16 으로 하고 TYPE을 ALL ICMP IPV4 로 설정한다.
변경된 보안그룹을 저장한 후, 생성해둔 베스천호스트를 통해 사설대역의 프라이빗 인스턴스로 접속한다.

사설대역의 인스턴스(10.0.2.35)에서 구글로 ping 테스트를 해보면 정상적으로 되는 것을 알 수 있다. ! 즉 외부 인터넷과 직접 통신할 수 없는 인스턴스(EC2)가 NAT 인스턴스를 통해 외부 인터넷과 통신하는 것이다.

NAT 인스턴스를 추가한 것을 구성도로 그리면 위와 같다.

0개의 댓글