Public Subnet에 EC2인스턴스로 NAT서버를 구축해 보도록 하겠습니다.
다음 포스트에 구축 할 Private Subnet내의 웹서버들이 외부로 통신을 하기 위해서 보통 NAT서버를 Public Subnet안에 구축하여 NAT를 통해 외부로 통신을 합니다. AWS에서 인스턴스를 콘솔로 쉽게 구축할 수 있는 서비스를 제공하고 있습니다. 그럼 NAT서버를 구축해 보도록 하겠습니다.
1. [Services] -> [Instances] -> [Launch Instance]
2. 아마존 가상 이미지 (AMI)을 선택함으로써 인스턴스를 쉽게 생성할 수 있습니다. 인스턴스는 AWS Market Place와 Community AMIs탭에 들어가 원하는 인스턴스를 선택할 수 있습니다. AWS Marketplace는 실행하는 데 필요한 서비스 찾아 구매할 수 있는 온라인 상점입니다. 반면에 Community AMIs에서는 AWS 개발자 커뮤니티 회원들이 올린 자체 구성 AMI가 게시되어 있습니다. 보통 AWS Market Place를 이용하면 비용이 들어가지만(구매) Community AMIs의 인스턴스는 무료입니다. 비용을 절감하기 위해서 Community AMIs에서 NAT instance를 선택하겠습니다. 아래 그림과 같이 Community AMIs탭에서 ‘Nat’를 검색하셔서 가장 사람들이 많이 이용하는 맨 위의 Nat instance를 사용하기 위해 [select]를 클릭합니다 (다른 AMIs를 선택하셔도 무방합니다)
3. 인스턴스의 타입을 선택하는 단계입니다. AWS는 여러가지 기능을 가지는 인스턴스들을 제공하고 있습니다 (인스턴스 유형 바로가기 -> 클릭). 그 중, t2.micro 인스턴스 타입은 프리티어 사용자를 위해 무료로 제공하고 있으므로 이것으로 구축할 것입니다. 오른쪽 하단에서 [Next: Configure Instance Details] 를 클릭합니다.
4. 인스턴스에 대해 세부사항을 설정하는 단계입니다. 1개의 인스턴스를 생성할 것이며 ‘Network’란에 설정안 VPC를 선택하고 ‘Subnet’에 가용영역 2a의 public subnet을 선택합니다. 또한 예기치못한 인스턴스 종료를 막기 위해서 ‘Enable termination protection’란의 ‘Protect against accidental termination’옆의 박스에 체크를 해줍니다. 지금은 초보자의 단계이므로 나머지는 지금은 체크하지 않고 하단의 [Next: Add Storage]클릭하여 다음 단계로 넘어갑니다
5. 저장공간을 추가하는 단계입니다. [Add New Volume]을 클릭하여 추가적인 EBS 스토리지를 추가할 수 있습니다. 여기서는 루트 볼륨의 설정만 하겠습니다. ‘Volume Type’은 ‘General Purpose SSD (gp2)’를 선택하겠습니다 (더 자세한 볼륨 타입에 대해서 -> ‘클릭‘). 아래 그림과 같이 설정한 후 오른쪽 하단의 [Next: Add Tags]를 클릭합니다
6. AWS 리소스를 다양한 방식으로 분류하기 위한 태그 설정을 위한 단계입니다. 할당한 태그에 따라 특정 리소스를 빠르게 식별할 수 있습니다 (태그에 대해 더 자세히 알고싶으시면 ‘클릭‘). 태그는 일반적으로 ‘Key’와 ‘Value’값으로 이루어져 있는데 임의로 지정해 주는데, 나중에 리소스를 많이 설치할 경우를 대비해서 소유자나 스택 수준을 추적하는데 도움이 되는 태그 세트를 정의하는 것을 추천합니다. 태그를 지정한 후 오른쪽 하단에 [Next: Configure Security Group]을 클릭합니다.
7. 보안그룹(Security Group)을 설정하는 단계입니다. 각 인스턴스에 맞는 보안그룹을 설정해야만 하며 여기서는 구축하는 Nat Instance에 대한 보안그룹 설정입니다 (보안그룹에 대해 더 자세한 설명을 원하시면 ‘클릭’). AWS의 Security Group에 대한 기본 정책은 Inbound Deny All / Outbound Any Open 입니다 (Outbound Traffic에 대한 정책설정은 보안그룹에서 할수 없고 Network ACL기능을 사용해야 합니다. 여기해 대해서는 추후 다시 포스팅 하겠습니다). 그러므로 허용할 Protocol, Port, IP를 지정하여 Inbound traffic에 대한 정책을 허용해 줍니다. 설명에 앞서 일단 밑의 그림을 살펴보겠습니다.
새로 보안그룹을 설정하는 것이므로 ‘Create a new security group’을 설정합니다. 또한, ‘Security group name’에는 임의의 보안그룹 이름을 지정합니다.
그림의 각 항목에 대해 설명하겠습니다.
Type: 네트워크 트래픽에 오픈할 일반적인 프로토콜 타입을 지정합니다.
Protocol: ‘Type’에 따라서 지정 할 수있는 항목으로 ‘Type’에서의 그 외에 필요한 protocol이 있는 경우에 사용됩니다.
Port Range: 프로토콜에 따른 port번호를 지정할 수 있습니다. 그림의 ‘Custom UDP’타입에서의 경우 1194로 임의로 지정하였습니다.
Source: 인스턴스에 접속 할 클라이언트의 IP를 넣어줍니다. MyIP를 선택하면 콘솔을 열고 있는 공인 아이피가 자동으로 할당되며 Anywhere로 선택 할 경우 전체 허용을 의미합니다.
이 포스트에서는 위와 같이 설정 한 후 (임의대로 바꾸셔도 됩니다) 오른쪽 하단의 [Review and Launch]버튼을 클릭합니다.
8. Nat Instance에 대해 어떠한 방식으로 설정되었는지 만들기 전에 리뷰를 하는 단계입니다. 리뷰 후 수정사항이 있으면 [Previous]버튼을 눌러 수정할 수 있고 없는 경우 [Launch]버튼을 클릭합니다.
9. [Launch]버튼을 누르면 로그인 정보를 암호화 및 해독을 위한 key-pair설정에 대한 창이 하나 뜹니다. 이 창에서 새로이 key-pair를 설정 할 수 있습니다 (key-pairs에 대한 자세한 설명을 위한 ‘클릭’).
위의 그림과 같이 ‘Create a new key pair’항목 선택 후 ‘Key pair name’에 임의의 키 페어 이름을 지정합니다. 지정한 후 [Downlaod Key Pair]버튼을 클릭하면 왼쪽 하단에 나타나는 것과 같이 .pem 확장자로 파일이 다운됩니다. 후에 인스턴스에 접속하기 위해 반드시 필요하므로 안전한 장소에 보관해 주시기 바랍니다. 보관 후 [Launch Instances]버튼을 클릭합니다.
10. Nat 서버를 위한 인스턴스가 만들어 졌습니다. 오른쪽 하단의 [View Instances] 를 클릭하여 만들어진 인스턴스를 확인합니다.
11. 인스턴스가 만들어 진 것을 확인하고 ‘Name’이 지정되 있지 않으면 임의로 지정해 줍니다. 하지만 그림에 나와있는 것처럼 Public IP와 Elastic IP가 지정되 있지 않습니다. 외부와의 통신을 위해 public IP를 지정하겠습니다.
12. [Services] -> [EC2] -> [Elastic IPs] 로 들어갑니다. [Allocate New Address]를 클릭합니다.
13. 새로운 Elastic IP주소를 자동으로 생성해줄 것입니다. 오른쪽 하단의 [Allocate]를 클릭합니다.
14. Elastic IP가 성공적으로 만들어 진 것을 확인할 수 있습니다. 오른쪽 하단의 [close]클릭합니다.
15. 자, 이제 만들어진 Elastic IP를 위에 만든 Nat Instance에 할당해 주어야 합니다. [Action]탭에서 ‘Associate address’를 클릭합니다.
16. 아래 그림과 같이 ‘Resource type’에는 ‘Instance’를 이에 대한 Instance는 위에 만든 Nat Instance를 할당해 주고 Private IP를 선택합니다. 오른쪽 하단에 [Associate]탭을 클릭합니다.
17. 인스턴스 상태를 확인해 보면 Public IP와 Elastic IP가 동일한 주소로 생성된 것을 볼 수 있습니다.
18. 방금 생성한 NAT 인스턴스 주소를 Private Subnet을 위한 Route에 연결 시켜 줄 수 있습니다. (Route 구성 ‘클릭’)
[Services] -> [VPC] -> [Route Tables] -> ‘private route’ -> [Route]->[Edit] 에서 0.0.0.0/0으로 destination을 잡아준 후에 Target에서 위에 생성한 Nat인스턴스 아이디 (e.g. Instance ID i-0a46a8c3257155fbd)를 복사하여 붙여넣어 주세요. [Save]버튼을 누릅니다
19. 또한 네트워킹에서 change source 에 disable로 바꾸어 주어야 Nat서버가 작동됩니다.
Nat Server 구축은 다음 포스팅에 계속 이어집니다.
감사합니다,
SA팀 이현지