이번에는 이해하기 새로 접하는 용어들이 많기에 용어부터 이해하고 시작하겠습니다.
VPC(Virtual Private Cloud)란?
- 자신만의 가상 클라우드를 만들어 그 안에 인스턴스를 생성해서 작동할 수 있습니다.
- VPC별로 네트워크를 구성할 수 있고 각 VPC마다 네트워크 설정을 다르게 줄 수 있습니다.
- 클라우드를 퍼블릭과 프라이빗 영역으로 분리할 수 있도록 해주기에 유용합니다.
서브넷이란?
- 네트워크 영역을 부분적으로 나눈 망이라고 정의할 수 있습니다.
- 하나의 IP 네트워크 주소를 지역적으로 나누어 서로 연결된 여러 지역의 네트워크로 사용할 수 있도록 하는 방법입니다.
- AWS에서는 VPC내에서도 서브넷을 통해 네트워크를 분리할 수 있지만 서브넷은 1개의 가용 영역(AZ)에 종속되어야 합니다.
- 퍼블릭 서브넷은 공인 네트워크 개념으로 외부 인터넷 구간과 직접적으로 통신할 수 있는 네트워크입니다.
- 프라이빗 서브넷은 사설 네트워크 개념으로 외부 인터넷 구간과 직접적인 통신을 할 수 없는 네트워크입니다.
라우터 : 서로 다른 네트워크들을 중간에서 연결해주고 안내해주는 역할을 합니다.
라우팅 테이블 : 라우터는 라우팅 테이블에 기록된 정보를 바탕으로 자신에게 보내온 패킷을 어디로 전달할 지 결정을 합니다.
인터넷 게이트웨이 : VPC와 인터넷 간의 논리적인 연결이며 VPC에서 인터넷 구간으로 나가는 관문이라고 생각할 수 있습니다.
NAT 게이트웨이 : 인터넷 구간은 공공 네트워크 구간으로 퍼블릭 IP를 통해 통신하지만 프라이빗 IP는 인터넷 구간으로 넘어올 수 없는데 이때 NAT 게이트 웨이가 프라이빗 IP를 퍼블릭 IP로 변환하여 통신을 돕습니다.
이제 AWS-입문(3주차)를 시작하겠습니다.
1. AWS VPC에 들어가 VPC를 생성합니다. 이름은 아무렇게나 지정해도 상관없습니다.
2. VPC밑에 있는 서브넷을 클릭 후 서브넷 생성을 해줍니다. 이때의 서브넷은 퍼블릭이라고 생각해주시면 됩니다.
3. 이때 VPC를 금방 만든 VPC로 설정을 합니다.
4. 밑에 퍼블릭 서브넷 설정을 아래와 같이 해주며 이름은 편한대로 설정하면 됩니다.
5. 이제 만들어진 서브넷을 확인할 수 있습니다.
6. 그 후 밑에 게이트웨이를 생성해보도록 하겠습니다.
7. 게이트웨이의 이름은 아무거나 설정해줍니다.
8. 만들어진 게이트웨이의 작업에 VPC연결을 누릅니다.
9. 만든 VPC에 인터넷 게이트웨이를 연결해줍니다.
10. 서브넷 밑에 라우팅 테이블을 클릭 후 생성해줍니다.
11. 마찬가지로 퍼블릭이라는 이름을 지어준 후 VPC를 지정해줍니다.
12. 만들어진 라우팅 테이블에 서브넷을 연결해주기 위해 서브넷 연결창을 엽니다.
13. 서브넷 연결 편집에 들어가줍니다.
14. 만든 퍼블릭 서브넷에 연결해줍니다.
15. 이제 다시 만든 라우팅 테이블로 돌아가 라우팅 편집을 들어갑니다.
16. 실습을 하기 위해 모든 IP의 접근을 허용할 수 있게 설정합니다.
17. 밑에 만들었던 네트워크와 서브넷으로 지정해주고 퍼블릭 IP 자동 할당을 해줍니다.
18. 구분할 수 있게 태그도 추가합니다.
19. 저번에 했던 SSH로 밑과 같이 정보를 확인할 수 있습니다.
- loc : 서버의 위치(?)
- ip : 현재 자신의 퍼블릭 ip
20. 이렇게 외부 인터넷으로 정상적인 통신이 가능한 퍼블릭 서브넷 VPC를 구성했습니다.
21. 다음은 프라이빗 서브넷 VPC를 구성해보겠습니다.
22. 마찬가지로 새로운 서브넷을 생성할껀데 만들어둔 VPC에 생성을 합니다.
23. 이번에는 프라이빗 서브넷으로 이름을 만들고 밑과 같이 설정합니다.
24. 다음은 새로운 NAT 게이트웨이를 만듭니다.
25. 아까와 마찬가지로 라우팅 테이블을 설정합니다.
26. 프라이빗 라우팅 테이블에 서브넷 연결에 들어갑니다.
27. 만든 서브넷과 연결합니다.
28. 라우팅 편집에서 서브넷은 프라이빗으로 설정해줍니다.
29. 밑과 같이 라우팅 테이블 메뉴 중 라우팅에서 모든 IP를 허용하게끔 편집을 해줍니다.
29. 이제는 EC2 생성으로 들어가 프리티어에서 사용 가능한 자원들을 선택한 후 인스턴스 세부정보 구성에 다음과 같은 코드를 넣어줍니다.
#!/bin/bash
(
echo "qwe123"
echo "qwe123"
) | passwd --stdin root
sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config
sed -i "s/^#PermitRootLogin yes/PermitRootLogin yes/g" /etc/ssh/sshd_config
service sshd restart
이 부분은 EC2가 실행할 때 자동으로 적용(?)되는 코드를 적을 수 있는 부분입니다.
30. 태그와 키페어를 설정하고 EC2 인스턴스를 생성해줍니다.
31. 만들어진 EC2 인스턴스의 프라이빗 IP 주소를 복사합니다.
32. SSH로 프라이빗 IP주소를 입력하여 접속하고 비밀번호는 아까 세부정보구성에 적었던 qwe123을 입력합니다.
33. curl ipinfo.io로 자신의 현재 IP 정보를 확인합니다.
34. 이렇게 실습이 끝났다면 VPC 메뉴에 있는 탄력적 IP에 들어가 릴리즈를 시켜줍니다.
NAT 게이트웨이와 탄력적 IP든 아주 작은 비용이 청구될 수 있기에 실습 후 바로 삭제해줍니다.
출발지 | 목적지 | 통신 여부 |
퍼블릭 서브넷 | 외부 인터넷 | 가능 |
외부 인터넷 | 퍼블릭 서브넷 | 가능 |
프라이빗 서브넷 | 외부 인터넷 | 가능 |
외부 인터넷 | 프라이빗 서브넷 | 불가능 |
이렇게 AWS 네트워킹 서비스를 한 번 실습해보았는데 이 부분은 쉽게 이해할 수는 없는 부분이기에 저 또한 계속해서 관련 정보를 찾아보며 글의 내용을 추가하도록 하겠습니다.
현재는 이렇게 퍼블릭과 프라이빗을 나누는 정확한 이유나 서브넷, 게이트웨이, 라우터의 확실한 역할을 이해하진 못했지만 계속해서 공부하면서 개념을 잡아가도록 하겠습니다.
'AWS > 실습(입문)' 카테고리의 다른 글
AWS-입문(6주차) 데이터베이스 서비스 (1) | 2021.07.15 |
---|---|
AWS-입문(5주차) 보안 서비스 (0) | 2021.07.12 |
AWS-입문(4주차) 스토리지 서비스 (0) | 2021.07.01 |
AWS-입문(2주차) EC2 배포 - 2 (0) | 2021.06.17 |
AWS-입문(1주차) EC2 배포 (0) | 2021.06.12 |