AWS VPC 및 서브넷 설정 방법

Taemin Jang·2023년 10월 15일
0

AWS

목록 보기
1/1
post-thumbnail

1. VPC 생성

1-1. VPC 콘솔에서 VPC 생성 버튼 클릭

1-2. VPC만 선택 후 이름 태그를 작성, 그리고 CIDR의 서브넷 마스크는 16으로 하고 생성

2. 서브넷 생성

2-1. VPC 콘솔에 Subnets에서 서브넷 생성

2-2. VPC ID에서 서브넷의 VPC를 선택 (태그 네임 보면 된다)

2-3. 서브넷 이름, 가용 영역, IPv4 Subnet CIDR 설정 후 새 서브넷 추가

가용 영역은 지정해줘도 되지만 지정하지 않으면 AWS에서 자동으로 선택한다.
그런데 EC2 생성 시 여기서 설정한 public subnet으로 연결할 때 가용 영역(AZ)이 a, b, c, d가 있는데 a만 인스턴스 유형 t2.micro를 사용할 수 있다. (즉, 특정 가용 영역에서 t2.micro가 안됨)
그래서 ap-northeast-2a로 지정해줬다.

2-4. 서브넷 추가하여 총 4개의 서브넷을 만들어준다. public 2개, private 2개

이렇게 해주는 이유는 Muti AZ 설정을 하기 위해 ⇒ 가용성, 확장성 운영

3. EC2 인스턴스 생성

3-1. EC2 콘솔 인스턴스에서 인스턴스 시작 선택

3-2. 이름 작성 후 AMI는 Amazon Linux 2 AMI(HVM) - Kernel 5.10, SSD Volume Type 선택

3-3. t2.micro 선택 (프리티어 사용 시 무료)

3-4. 키 페어 생성

3-5. 키 페어 이름 및 RSA 선택, pem 형식 (OpenSSH로 연결) 체크 후 생성

주의할 점으로 생성 후 발급 받은 키는 다시 받을 수 없으니 관리를 잘 해야한다.

3-6. 퍼블릭 IP는 활성화, 보안 그룹 생성하여 이름과 인바운드 규칙 설정

3-7. 프리티어 최대 용량이 30GB까지 가능하므로 30으로 설정

3-8. 설정한 내용을 확인 후 인스턴스 시작 선택

4. 생성한 EC2 연결해보기

4-1. 생성한 EC2에서 연결 클릭

4-2. EC2 인스턴스 연결

4-3. 안되는 이유는 public subnet에 할당되었지만, 인터넷 게이트웨이(IGW)를 연결해주지 않았기 때문

5. IGW 생성

5-1. VPC 콘솔에서 Internet Gateway 선택 후 인터넷 게이트웨이 생성

5-2. 이름 작성 후 인터넷 게이트웨이 생성

5-3. 생성된 IGW에 들어가면 상단에 VPC에 연결 버튼 클릭

5-4. 생성했던 VPC에 연결 후 인터넷 게이트웨이 연결

5-5. 다시 EC2에서 SSH로 연결 시도 (실패)

6. Routing Table 생성

IGW와 VPC와 연결을 해줬지만, VPC안에 Public Subnet을 가지고 있는 EC2와 연결이 되지 않았기 때문에 Routing Table에 정의해줘야한다.

6-1. 라우팅 테이블 생성

6-2. 라우팅 테이블 설정

6-3. 생성한 라우팅 테이블 편집 클릭

6-4. 라우팅 추가 버튼 클릭 후 0.0.0.0/0 (모든 IP)에서 인터넷 게이트웨이(생성한 이름)을 선택 후 저장

6-5. 서브넷 연결에서 서브넷 연결 편집

6-6. 연결할 서브넷들을 선택해준다. public 서브넷들만 선택 후 저장

6-7. 명시적으로 public 서브넷만 연결 된 것을 확인

6-8. EC2 연결 (실패)

7. SG 수정

이전 EC2 생성할 때 보안 그룹에서 ssh를 내 IP만 연결할 수 있도록 했으므로 AWS에서 연결하려면 수정해야한다.

7-1. ssh를 Anywhere IPv4(0.0.0.0/0)으로 변경

7-2. 다시 연결하니 성공, 그리고 google에 ping 날리기

궁금점은 모든 IP를 열어두지 않고 내 IP와 AWS에서 접근가능하도록 IP 제한을 하려면 어떻게 해야할까

어떤 IP를 등록해야하는지 모르겠다.

해결!!

원인은 브라우저 기반 SSH 연결은 EC2 Instance Connect 서비스를 통해 사용자의 인스턴스를 리다이렉션하여 접속하게 된다.

즉, [User PC] ---<TCP/443>---> [AWS Web Console: EC2 Instance Connect] ----<TCP/22>---> [EC2 Instance]

따라서 AWS Web Console : EC2 Instance Connect의 IP 주소를 보안그룹에 등록해줘야한다.

해당 IP 주소를 아는 법은 다음과 같다

$ curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="ap-northeast-2") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix'

13.209.1.56/29

해당 명령어를 어느 리눅스 터미널에서 사용하면되고, 나는 윈도우라 MobaXterm에서 사용해봤다.

  1. curl -V 을 통해서 curl 명령어가 설치되어 있는지 확인
  2. apt-get install jq 설치
  3. curl -s https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="ap-northeast-2") | select(.service=="EC2_INSTANCE_CONNECT") | .ip_prefix' 명령어를 통해 현재 EC2 연결된 AWS 리전 IP 주소를 받는다.
  4. 받은 IP 주소를 인바운드 규칙 SSH에 등록해준다.
  5. 다시 AWS EC2 연결해보면 성공!

참고

https://sharplee7.tistory.com/110
https://blog.kico.co.kr/2022/05/03/hands-on-vpc-iam-사용자-생성/
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/EC2_GetStarted.html
https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/create-vpc.html
https://repost.aws/ko/knowledge-center/ec2-instance-connect-troubleshooting

profile
하루하루 공부한 내용 기록하기

0개의 댓글