[왕초보 탈출 AWS 매뉴얼(3)] NAT Instance 만들기

2021. 8. 15. 21:26✅ STUDY/AWS

안녕하세요 :)

해당 매뉴얼을 끝까지 따라오시면, 아래와 같은 네트워크 구성과 리소스들을 생성하실 수 있습니다.

 

위의 아키텍쳐 중, 오늘은 매뉴얼2에 이어, NAT Instance를 만들고 필요한 라우팅 테이블 설정을 해줄 것입니다.

최대한 쉽게 사진과 함께 가져왔으니 천천히 따라와주세요 :)


VPC에 private subnet을 구축하기 위해서는
EC2 생성 - EIP 생성 및 연결 - 프라이빗 라우팅 테이블의 라우팅 추가 순으로 진행해야합니다!

그보다, NAT를 왜 생성해야 하는지 아시나요 ?


NAT란 무엇인가요 ❓

네트워크 주소 변환은 컴퓨터 네트워킹에서 쓰이는 용어로서, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다. - 위키백과 中

쉽게 말하면, private IP를 외부와 통신할 수 있도록 하기 위해 private IP를 숨기고 public IP로 변환시켜 통신 요청을 보낼 수 있도록 해주는 것이 NAT 입니다!


결론을 먼저 말하자면, 프라이빗 라우팅 테이블에는 NAT gateway 또는 NAT 인스턴스를 연결해야 합니다.

NAT Gateway와 NAT Instance의 차이는 무엇인가요 ❓

NAT gateway는 AWS의 관리형 리소스 이기 때문에, 생성 및 관리는 쉽지만 비용이 비쌉니다.
반대로 NAT 인스턴스는 구축은 어려울지도 모르지만, t2.micro 타입의 EC2 비용이 소요되기 때문에 저렴합니다.

이 매뉴얼에는 NAT 인스턴스를 구축해 NAT를 사용할 것입니다.


왜 NAT Instance를 생성해야 하나요 ❓

프라이빗 서브넷에 위치하게 될 리소스들은 private IP만 가지기 때문에, 내부가 아닌 외부의 리소스들과 어떻게 통신하면 될까요?
이에 대한 답이 바로 NAT 입니다 !

private IP를 public IP로 변환해 private IP는 감추고, 통신을 할 수 있도록 해주는 것이 바로 NAT(Network Address Translation)입니다.
이 챕터에서는 NAT역할을 할 NAT instance를 생성할 것이며 NAT로 라우팅을 할 수 있도록 프라이빗 라우팅 테이블에 NAT instance를 추가할 것입니다.

EC2(NAT Instance) 생성

NAT Instance 이란 ❓

• Private Subnet내의 웹 서버들이 외부로 통신을 하기 위해서 사용하는 서버
• 보통 NAT서버를 Public Subnet안에 구축하여 NAT를 통해 외부로 통신을 함

아래에서 생성할 EC2를 NAT용으로 사용해줄 것이기 때문에, NAT Instance(NAT 서버)라고 부르는 것입니다.

t2.micro 타입의 EC2 instance를 1개 생성한 후에, EC2에 접속해 NAT 설정을 해줄 것입니다.

[1. AMI 선택]
커뮤니티 AMI - nat 검색 - 아무버전이나 선택

[2. 인스턴스 유형 선택]
t2.micro(프리티어) 또는 t3.micro 선택


[3. 인스턴스 구성]
milky-vpc 선택
milky-public-subnet-a 선택

[4. 스토리지 추가]
default로 설정

[5. 태그 추가]
Name : milky-bastion 입력


[6. 보안 그룹 구성]
보안 그룹이란? 해당 리소스에 접근할 수 있는 port와 대상을 설정하는 곳입니다.
저는 저의 PC만 SSH 접속이 가능하도록 설정하였습니다.


[7. 검토]
잘 구성이 되었는지 다시 한번 검토해보세요!

[키 페어 생성]
해당 서버에 접속하기 위해 꼭 아래의 키페어가 필요하니,
✨보안상 안전하고 자신이 꼭 기억하고 있는 위치에 넣어두세요 !! ✨


마지막으로, NAT는 소스/대상 확인을 하면 안됩니다 !
그렇기 때문에 방금 생성한 milky-bastion 서버를 체크하고 작업 - 네트워킹 - 소스/대상 확인 변경을 클릭해줍니다.


소스/대상 확인의 "중지"를 체크하고, 저장 해주세요!

 


탄력적 IP 주소 할당

탄력적 IP 주소는 인터넷에서 연결 가능한 퍼블릭 IPv4 주소입니다.
AWS 계정에 할당되며 릴리스할 때까지 할당된 상태로 유지됩니다.

탄력적 IP 주소를 생성해 방금 만든 인스턴스에 연결해주면, 해당 인스턴스의 IP주소는 절대 바뀌지 않는 고정 IP주소가 됩니다.
IP주소를 이 IP는 나만 쓸꺼야 ! 하고 찜해두는 행동이라 할 수 있죠.
이 작업을 해주지 않으면, EC2 인스턴스를 재부팅 했을 경우 IP주소가 변하게 됩니다 !

탄력적 IP메뉴에서 탄력적 IP 주소 할당 버튼을 클릭합니다.

 

탄력적 IP주소 설정 페이지가 나오면, 아래 Name 태그를 하나 추가해주고 값 란에 이름-용도-eip 형태로 입력해 나중에 이름만으로도 어디에 사용되는 EIP인지 알 수 있도록 해줍니다.

마지막으로, 할당 버튼을 클릭해줍니다.


탄력적 IP주소 연결

EIP를 생성했으면, 해당 EIP를 사용할 인스턴스를 연결해야합니다.
해당 EIP를 체크해주고, 작업 메뉴에 들어가 탄력적 IP주소 연결을 클릭해줍니다.

연결할 인스턴스를 선택하고, 연결 버튼을 클릭합니다.

** 주의) EIP는 AWS에게 IP주소를 빌려오는 개념이기 때문에 EIP에 인스턴스를 연결해주지 않고 비워두면 오히려 요금이 부과되는 형태입니다. EIP에 꼭 실행중인 인스턴스를 연결해두어야 과금이 되지 않습니다.

만약 EC2 인스턴스를 릴리즈(종료)할 것이라면, 꼭 EIP도 릴리즈(종료) 해주세요!!!!


Private 전용 라우팅 추가

Routing Table 이란 ❓

• IP주소에 트래픽 라우팅 경로를 정의하여 Subnet 안팎으로 나가는 트래픽에 대한 라우팅 경로 설정 기능을 수행

인터넷을 통해 사용자에게 요청이 들어왔을 때, 어디로 가야할지 이정표를 알려주지 않으면 모르기 때문에 통신을 할 수 없습니다.
이 때 사용하는 것이 라우팅 테이블입니다.
라우팅 테이블은 IP 주소에 트래픽 라우팅 경로를 정의하여 Subnet 안팎으로 나가는 트래픽에 대한 라우팅 경로 설정기능 수행합니다. 쉽게 말해, 어떤 요청이 들어왔을 때 사용하는 경로안내 이정표(표지판) 정도로 생각하시면 됩니다.

이 전, 챕터에서 private subnet을 연결시켜놓은 라우팅 테이블을 기억하시나요?
서브넷 연결만 해두고 라우팅 추가를 하지 않았었는데요 !

🎉 이제 NAT instance를 생성했으니, 0.0.0.0/0 트래픽을 NAT를 통해 들어올 수 있도록 바꾸면 됩니다!!

AWS 콘솔에서 [라우팅 테이블] - 라우팅 테이블 선택 후, 라우팅 편집을 클릭 !


라우팅 추가를 눌러, 위에서 생성한 NAT 인스턴스를 0.0.0.0/0에 매핑해줍니다!


이렇게 해서, VPC에 public subnet 및 private subnet 구축이 완료되었습니다.
아래 아키텍쳐 사진만큼 구축하신 겁니다!

이 글에서 bastion 서버를 생성했습니당



다음 편에서는 이어서, private EC2를 생성하고, ALB & Target group을 생성할게요 ~

안녕 😜