참고
(1)
https://www.youtube.com/watch?v=r84IuPv_4TI
(2)
https://www.youtube.com/@AWSClassroom
(3)
(4)
(5)
https://aws-hyoh.tistory.com/58
===================================================================
VPC Endpoints
그림출처 : https://www.youtube.com/watch?v=r84IuPv_4TI
- VPC 안에 존재하는 리소스들이 VPC 밖에 존재하는 리전 서비스들에 접근할 때는 인터넷 통신을 해야하기 때문에 안전한 접근방식이 필요할 수 있다.
- VPC 외부의 다른 AWS 서비스들에게 안전한 접근을 가능하게 하는 방법으로 VPC Endpoint를 사용하여 통신할 때는 Public IP 주소를 필요하지 않으며 AWS 네트워크를 벗어나지 않게 된다.
Gateway Endpoint
- S3, Dynamo DB 접근 시 사용된다.
-Gateway Endpoint 생성 시 라우팅 테이블을 선택해야 하며
해당 라우팅테이블에는 리전 서비스로 가는 트래픽에 대해서 gateway endpoint가 추가된 것을 볼 수 있다.
Interface Endpoint
- S3, Dynamo DB 를 제외한 대부분의 리전서비스 접근 시 사용된다.
- Interface Endpoint 생성 시 서브넷을 선택해야 하며
Private subnet 안에 private IP 주소를 가진 ENI 가 생성되어 안전한 통신을 할 수 있다.
- Region 은 AWS의 서비스가 제공되는 서버의 물리적인 국가와 도시이다.
- 리전 안에는 데이터센터인 Availabilty Zone이 3개 이상이 있다.
- VPC는 독립된 하나의 네트워크를 구성하는 단위로 인터넷(외부)에서 격리된 서비스이다.
- 여러 AZ에 걸쳐서 서브넷을 생성하는 것은 안된다.
- 하나의 AZ에 여러 개의 서브넷 생성가능하다.
- 한 AZ에 Public Subnet(인터넷 접근 가능)과 Private subnet(인터넷 접근 불가)이 존재할 수 있다.
- Bastion host는 외부에서 private subnet에 접속할 수 있게 한다. 즉 bastion host로 ssh 연결 후 private subnet의 host에 ssh 연결하여 접속하는 것이다.
- NAT Gateway는 private subnet에서 외부로 나갈 수 있게 한다. 인터넷 접속이 가능한 public subnet에 생성해두어 private subnet에 있는 리소스들이 인터넷으로 나갈 경우에 사용하도록 라우팅 추가한다.
- NACL은 서브넷 레벨에서 허용과 거부규칙을 모두 설정할 수 있는 보안요소. 인/아웃바운드 규칙을 별도로 설정한다.
낮은 번호 순서로 규칙이 평가된다.
- Security Group은 리소스 레벨에서 허용규칙만 설정할 수 있는 보안요소. 인바운드가 허용하면 아웃바운드는 자동허용.
1.VPC 생성
2.인터넷 게이트웨이 생성 및 VPC 연결
3.라우팅 테이블 (Public subnet에 맞게 편집)
4.각 서브넷에 EC2 생성
5.Bastion host로서 접속
6.NAT Gateway 생성 및 테스트
VPC 생성
10.0.0.0/16 으로 설정하고 VPC만 생성하였다.
public 과 private 하나씩 생성할 것이다.
VPC에서 설정한 10.0.0.0/16 안에 있는 10.0.0.0/24 과 10.0.1.0/24 를 설정하였다.
public은 라우팅 테이블이 다르며 외부(인터넷)와 통신할 수 있는 인터넷 게이트웨이와 연결되어 있어야 한다.
인터넷 게이트웨이 생성 및 VPC 연결
위 문구처럼 인터넷 게이트웨이 생성 후 VPC 연결 작업을 해줘야 인터넷과 통신할 수 있다.
라우팅 테이블 (Public subnet에 맞게 편집)
새롭게 생성한 vpc에 연결된 기본 vpc 를 private subnet을 위한 라우팅 테이블로
하나 더 만들어서 public subnet을 위한 라우팅 테이블로 만들고 명시적으로 서브넷을 연결해준다.
라우트 테이블을 Private subnet 과 Public subnet에 맞게 생성하여 명시적 연결을 해준다.
public subnet은 VPC 안 로컬 트래픽을 제외하고 인터넷 게이트웨이로 나갈 수 있도록 라우팅 추가해준다.
각 서브넷에 EC2 생성
퍼블릭 서브넷일 경우 IPv4 주소 자동 할당을 활성화해준다.
외부에서 인터넷 연결이 잘 되고 있는 것을 확인할 수 있다.
private subnet의 경우 퍼블릭 ip 자동할당이 필요 없기 때문에 비활성화 하고 똑같이 생성해준다.
Bastion host로서 접속
public ip 주소 도 없고 public subnet이 아니며 ( 인터넷 게이트웨이로 나가는 라우팅 테이블이 없으며)
public ip 주소 없어서 해당 인스턴스에 접근할 수 없다. 여러 방법이 존재하지만
이번에는 public subnet에 있는 EC2를 Bastion host로서 접속한다.
$ ssh -i 넣어준_키페어파일이름.pem ec2-user@<private 인스턴스 사설IP>
키페어 파일의 값을 복사하여 EC2 안에 넣고 해당 파일에 대한 소유자에게 권한을 주어(chmod) ssh 명령어를 통해 private 인스턴스에 접속할 수 있다.
NAT Gateway 생성 및 테스트
다음으로 private subnet에 있는 EC2에서 외부와 통신할 수 있도록 NAT Gateway를 생성해준다.
또한 private subnet을 위한 라우팅 테이블에 NAT Gateway로 갈 수 있는 길을 뚫어줘야 NAT Gateway로 private EC2에서 트래픽이 나갈 수 있다.
외부와 잘 연결된 것을 볼 수 있다.
whois 에 8.8.8.8 을 조회해 보았다.
ARIN(미국 인터넷 번호 등록 기관)에서 제공하는 IP 주소 8.8.8.0/24에 대한 WHOIS 정보이다.
Python 환경에서 패키지를 설치하며 외부와의 통신을 테스트해보았다.
하나는 Bastion host로 사용, 하나는 private ec2로 사용하여 테스트를 완료하였다.
'Cloud > AWS' 카테고리의 다른 글
AWS WAF (Web Application Firewall) (0) | 2024.12.05 |
---|---|
S3 vs EBS vs EFS (0) | 2024.11.25 |
Autoscaling Group & ALB (0) | 2024.11.20 |
IAM User가 아닌 EC2에 역할 부여 (0) | 2024.11.20 |
IAM 기본 (0) | 2024.11.03 |