오늘은 기다리던(?) VPC 3번째 글입니다.
이번 시간에는 2개의 글에 걸쳐서 했던 작업과 더불어 Bastion Host, 즉 Public EC2로 Private EC2에 원격 접속해보는 과정을 다루어 볼 것입니다.
해당 과정에는 접속 외에도 NACL 같은 개념도 중간중간 들어가니 잘 따라오시길 바랍니다.
간단하게 NACL에 대해서 말씀드리면 "서브넷 단위의 보안그룹" 이라고 말씀드릴 수 있을 것 같습니다. 또한 보안그룹과의 가장 큰 차이점은 보안그룹은 OutBound가 None 이여도 자신에게 들어온 곳으로는 다시 보낼 수 있는 어느정도의 예외를 허용한다면, NACL은 자신에게 들어온 곳이라도 OutBound가 설정되어 있지 않다면 내보내지 않는 즉, 예외를 허용하지 않습니다.
먼저 알아두셔야 할 것은 VPC를 생성하면 해당 VPC에 기본을 연결되어 있는 기본 NACL이 생성됩니다.
저희는 이 기본 NACL을 Priavte Subnet의 NACL로 설정할 것이고, 추가적으로 Public Subnet의 NACL을 생성할 예정입니다.
우선 실습 목적으로 인바운드의 SSH, HTTP, HTTPS 포트의 모든 접속을 열어보겠습니다.
해당 설정은 아래 사진과 같이 하시면 됩니다.
아웃바운드 역시 실습을 위해 모든 포트의 모든 접속을 허용하도록 설정해보겠습니다.
각 subnet에 EC2를 생성해주는 것을 해보겠습니다.
이전 포스트에서 다루었던 것처럼 EC2를 생성하면 되지만, 제가 학습을 하다보니 추가적인 설정이 필요하다는 것을 배웠고, 그에 따른 설정을 추가해주시면 되겠습니다.
먼저 Public Subnet에 아래 설정을 추가해주셔야합니다.
(보안 그룹을 비롯한 나머지 설정은 전과 동일합니다.)
아래와 같이 puTTY를 활용해서 원격접속 할 수 있습니다.
다음으로는 Private Subnet에 보안 그룹을 별도로 생성해주셔야 합니다.
위의 설정은 Private Subnet은 Public Subnet의 접근만을 허용한다는 보안 그룹 설정입니다.
물론 위에서 NACL을 통해 설정을 하였지만, 보안 그룹에서도 이를 명확하게 설정해주면 더할 나위 없겠지요? ^^
참고로 저는 두 EC2를 생성할 때 모두 Key를 각각 만들어주고 이를
Pageant와 PuTTYgen을 활용해서 미리 서버에 띄워놓았습니다.
(나중에 시간이 된다면 Key를 서버에 띄우는 과정을 포스팅 해보겠습니다.)
EC2를 생성 후, 기존에 만들었던 Public EC2에 원격 접속해서 아래의 명령어를 입력하면 Public EC2를 Bation Host로 사용해서 Private EC2에 접근이 가능합니다.
ssh 'private ec2의 private IPv4'
마지막으로는 제가 해당 과정을 공부하면서 겪었던 2가지 주의할 점에 대해 말씀드리고 포스트를 마무리하겠습니다.
먼저, EC2를 만들 때, Ubuntu가 아닌 Amazon Linux로 인스턴스를 만들어 주어야합니다.
왜 그런지는 모르겠지만, 처음에 Ubuntu로 EC2를 만들고 이를 Bastion Host로 사용해보니 Private EC2로 원격 접속이 되지 않는 것을 확인할 수 있었습니다.
또, 과금에 매우매우 주의해야 한다는 것입니다.
저는 프리티어를 이용하고 있던터라 과금에는 신경쓰지는 않았는데, 어느날 확인해보니 2000원의 비용이 빠졌다는 것을 알 수 있었습니다.
미리 확인해서 다행이지 아니였으면 지금 이순간에도 AWS가 제 돈을 가져가고 있었을 것입니다.;;;
실습이 끝나면 반드시 모든 인스턴스와 VPC를 정리하고, 탄력적 IP 등도 신경 써서 정리해 주어야합니다.
참고로, NAT 게이트웨이는 프리티어라도 사용한만큼 돈이 나가므로 실습 이후에는 반드시 반드시 종료해주셔야합니다!!!