-
AWS VPC 실습 (feat. NAT, IGW, Routing table)AWS 2021. 7. 1. 00:17
이번 포스팅은 다음과 같이 VPC를 구성한다.
VPC를 구성하기 전, 필요한 개념에 대해 알아보자.
< 퍼블릭 서브넷 >
외부 네트워크와 직접적으로 통신할 수 있는 공공 네트워크
< 프라이빗 서브넷>
외부 인터넷과 직접 통신할 수 없는 폐쇄적인 네트워크
< 가상 라우터와 라우팅 테이블 >
vpc를 생성하면 가상 라우터가 자동으로 생성되며
가상 라우터는 라우팅 테이블을 이용하여 목적지까지 라우팅한다.
처음 생성된 라우터는 로컬 네트워크에 대한 라우팅 경로만 잡혀 있다.
VPC내에서 생성된 서브넷은 로컬 네트워크를 통해 통신이 가능하다.
가상 라우터에서는 서브넷 별로 라우팅 테이블을 매핑하여 서브넷 당 개별적인
라우팅 테이블을 가질 수 있다.
< 인터넷 게이트 웨이 >
인터넷 게이트 웨이는 vpc와 인터넷과의 게이트로 VPC당 1개만 생성할 수 있다.
단, VPC 내의 퍼블릭 서브넷만 인터넷 게이트웨이를 통해 외부와 통신할 수 있다.
인터넷 게이트웨이는 양방향으로 연결을 지원한다.
<NAT 게이트 웨이>
NAT 게이트 웨이는 프라이빗 IP를 퍼블릭 IP로 변환하여 외부와 통신할 수 있도록 한다.
< VPC 구성하기 >
1. VPC과 퍼블릭 서브넷 생성하기
vpc를 생성한다.
생성된 VPC 확인
자동으로 가상 라우터가 생성된다. 다음은 생성된 Routing table
이제 퍼블릭 서브넷을 생성한다.
퍼블릭 서브넷은 ap-northeast-2a 가용영역에 서브넷을 만들어준다.
(참고로 서울 리전에서 가용영역은 a나 c를 많이 쓴다고 한다.)
퍼블릭 서브넷을 생성하였다.
우선은 기본 라우팅 테이블과만 연결되어 있으며 아직 인터넷 게이트 웨이가 연결되어 있지 않기 때문에
프라이빗 서브넷이라고 볼 수 있다.
2. 인터넷 게이트 웨이 생성하고 라우팅 테이블에 연결하기
생성해준 인터넷 게이트웨이를 생성해준 vpc에 연결한다.
인터넷 게이트 웨이는 VPC당 하나만 연결 가능하다.
vpc에 인터넷 게이트웨이를 연결해줬지만
vpc내부에서 외부로 나가는 라우팅 룰은 정해지지 않았으므로
퍼블릭 서브넷에 연결할 라우팅 테이블을 생성하자.
생성해준 라우팅 테이블에 퍼블릭 서브넷을 연결한다.
이제 퍼블릭 서브넷은 기존 라우팅 테이블이 아닌 새로 생성한 퍼블릭 라우팅 테이블을 사용한다.
퍼블릭 라우팅 테이블에 라우팅 규칙을 추가한다.
외부의 모든 네트워크를 대상으로 생성한 인터넷 게이트웨이를 통과할 수 있도록 지정해준다.
3. 퍼블릭 서브넷 내에 EC2 인스턴스를 생성해서 외부 접근을 확인해보자.
Amazon Linux 2 AMI (HVM)로 인스턴스를 생성하고 다음 부분만 유의해서 설정한다.
생성한 ec2에서 외부에 잘 접속이 되는지 확인.
4. 프라이빗 서브넷 생성하기
퍼블릭 서브넷 생성과정과 동일하다.
현재 VPC안에는 퍼블릭 서브넷과 프라이빗 서브넷이 존재하고,
프라이빗 서브넷은 아직 기본 라우팅 테이블을 사용한다.
5. NAT 게이트 웨이 생성하기
NAT 게이트 웨이를 퍼블릭 서브넷에 생성해준다. (원칙)
아울러 탄력적 IP도 할당한다.
6. 라우팅 테이블을 생성하고 프라이빗 서브넷, NAT게이트 웨이와 연결
프라이빗 서브넷에 연결할 라우팅 테이블 생성
프라이빗 서브넷과 연결
라우팅 테이블에 외부와 NAT-gateway를 연결해주는 규칙 추가
7. 프라이빗 서브넷에 EC2 생성하기
EC2 생성시 프라이빗 서브넷에 생성하고 퍼블릭 IP 할당 비활성화 후,
사용자 데이터에 다음 쉘 스크립트를 복붙한다.
프라이빗 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
만약 ubuntu 18.04라면 다음 사용자 구성을 이용
#!/bin/bash echo 'root:qwe123' | chpasswd sed -i "s/^PasswordAuthentication no/PasswordAuthentication yes/g" /etc/ssh/sshd_config sed -i "s/^#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config service sshd restart
프라이빗 ec2 인스턴스는 퍼블릭 주소를 가지지 않고 프라이빗 주소만 가지고 있다.
프라이빗 서브넷 대역은 NAT 게이트 웨이를 통해 외부 인터넷 구간으로 나갈 수 있지만, 반대로 외부 인터넷 구간에서
내부 프라이빗 서브넷 구간으로 접근할 수 없다.
외부에서 접근하려고 하는 경우 다음과 같이 실패한다.
프라이빗 서브넷에 있는 EC2에 접근하기 위해서 퍼블릭 EC2로 먼저 접근 후 접근한다.
반응형'AWS' 카테고리의 다른 글
AWS EC2에 EBS 볼륨 생성하고 연결하기 (0) 2021.07.03 AWS Storage 정리 (0) 2021.07.03 Cloud Watch를 이용한 EC2 CPU Utilization Alarm 생성 (0) 2021.06.21 AWS 용어 정리 1 (0) 2021.06.20 django web container에서 AWS RDS 연동하기 (0) 2021.05.16