Cloud/AWS

VPC Endpoints & VPC

NOG 2024. 11. 23. 08:49

참고

(1)

https://www.youtube.com/watch?v=r84IuPv_4TI

(2)

https://www.youtube.com/@AWSClassroom

(3)

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-%EA%B0%9C%EB%85%90-%EC%82%AC%EC%9A%A9-%EC%82%AC%EC%84%A4-IP-%ED%86%B5%EC%8B%A0%EB%A7%9D-NAT-Gateway-Bastion-Host

(4)

https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-%EC%82%AC%EC%9A%A9-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-NAT-%EB%B3%B4%EC%95%88%EA%B7%B8%EB%A3%B9-NACL-Bastion-Host

(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

 

Gateway endpoint 생성 시 모습

 

- S3, Dynamo DB 접근 시 사용된다.

-Gateway Endpoint 생성 시 라우팅 테이블을 선택해야 하며

 해당 라우팅테이블에는 리전 서비스로 가는 트래픽에 대해서 gateway endpoint가 추가된 것을 볼 수 있다.

 

Interface 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 Gatewayprivate 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