[AWS] EC2 구성을 위한 VPC, 서브넷, 라우팅 테이블, 게이트웨이 구성방법
VPC 란
VPC ( Virtual Private Cloud ) 는 AWS 계정 전용 가상 네트워크입니다.
VPC 는 AWS 클라우드에서 다른 가상네트워크와 논리적으로 분리되어 있습니다.
VPC 의 IP 주소 범위를 구성하여 VPC 를 구성하고, 서브넷을 생성한 후
라우팅 테이블 네트워크 게이트웨이, 보안설정을 구성할 수 있습니다.
테스트 목표
VPC 를 생성한 후, VPC 내 퍼블릭 서브넷에 있는 서버 / 프라이빗 서브넷에 있는 서버를 구성합니다.
프라이빗 서브넷에 있는 서버는 퍼블릭 서브넷에 있는 서버를 통하여 접근할 수 있으며
프라이빗 서브넷에 있는 서버는 NAT 게이트웨이를 이용하여 외부와 통신이 가능하도록 구성합니다.
VPC 생성하기
1. VPC 를 클릭합니다.
2. '가상 프라이빗 클라우드'의 VPC 를 클릭합니다.
3. VPC 생성을 클릭합니다.
4. VPC 를 설정합니다.
이름에는 원하는 VPC 명을 입력합니다.
VPC 의 CIDR 범위는 10.0.0.0/16 으로 설정합니다. 이는 10.0.x.x 로 시작하는 모든 IP 가 포함됩니다.
나중에 이 주소를 별도의 퍼블릭/프라이빗 서브넷으로 분할할 예정입니다.
5. 생성한 VPC 의 작업에서 'DNS 호스트 이름 편집'을 클릭합니다.
6. 호스트 이름 활성화에 체크합니다.
활성화 후에는 다음과 같은 DNS 이름이 VPC 내에 있는 EC2 인스턴스에 할당됩니다.
ec2-10-0-0-1.us-west-2.compute.amazonaws.com
서브넷 생성
서브넷은 VPC 내 IP 주소의 하위 범위입니다.
AWS 리소스를 지정된 서브넷으로 시작할 수 있습니다.
인터넷 환경이 필요한경우 퍼블릭 서브넷을,
인터넷과 격리된 환경이 필요한경우 프라이빗 서브넷을 사용하면 됩니다.
퍼블릭 서브넷 생성
1. 가상 프라이빗 클라우드에서 서브넷을 클릭합니다.
2. 서브넷 생성을 클릭합니다.
3. 서브넷을 생성합니다.
VPC ID 는 위에서 생성한 VPC 를 선택합니다.
서브넷 이름은 원하는 명을 입력합니다.
가능한 가용영역 중 한곳을 클릭합니다.
서브넷의 CIDR 범위는 10.0.0.0/24 으로 설정합니다. 이는 10.0.0.x 로 시작하는 모든 IP 가 포함됩니다.
4. 생성한 서브넷의 작업에서 '자동 할당 IP 설정 수정' 을 클릭합니다.
5. 퍼블릭 IPv4 주소 자동 할당 활성화에 체크합니다.
퍼블릭 서브넷은 인터넷 게이트웨이와 라우팅 테이블을 통하여 외부망과 접속이 가능하도록 구성합니다.
이는 아래에서 정리하도록 하겠습니다.
프라이빗 서브넷 생성
1. 퍼블릿 서브넷 생성에서 2단계까지 진행합니다.
2. 서브넷을 생성합니다.
퍼블릭에서 진행한 것과 동일하게 합니다.
서브넷의 CIDR 범위는 10.0.2.0/23 으로 설정합니다. 이는 10.0.2.x 와 10.0.3.x 로 시작하는 모든 IP 가 포함됩니다.
프라이빗 서브넷은 NAT 게이트웨이를 통하여 외부망으로 나갈 수 있도록 설정합니다.
외부망에서는 프라이빗 서브넷으로 접근이 불가능합니다.
외부망 환경이 필요없는 경우 안해도 됩니다.
인터넷 게이트웨이 생성
인터넷 게이트웨이는 고가용성 VPC 구성요소로서 VPC 의 인스턴스와 인터넷 간 통신이 가능합니다.
이 설정을 진행하면 VPC 가 인터넷 망으로 연결되지만,
트래픽을 인터넷으로 라우팅 하려면 인터넷 게이트웨이를 사용하도록 퍼블릭 서브넷 라우팅 테이블도 구성해야 합니다.
1. '가상 프라이빗 클라우드'의 '인터넷 게이트웨이' 를 클릭합니다.
2. 인터넷 게이트웨이 생성을 클릭합니다.
3. 인터넷 게이트웨이를 생성합니다.
원하는 이름을 입력 후 생성하면 됩니다.
4. 생성된 게이트웨이의 작업에서 'VPC 에 연결' 을 클릭합니다.
5. VPC 를 연결합니다.
라우팅 테이블 구성
라우팅 테이블은 네트워크 트래픽이 전달되는 위치를 결정하는데 사용되는 경로라는 규칙 세트를 포함합니다.
VPC 에 있는 각 서브넷은 라우팅 테이블에 연결되어야 합니다.
인터넷 게이트웨이를 사용하려면 서브넷의 라우팅 테이블에 인터넷에 바인딩된 트래픽을 인터넷 게이트웨이로 향하도록 지시하는 경로가 포함되어야 합니다.
프라이빗 라우팅 테이블 구성
1. '가상 프라이빗 클라우드' 의 '라우팅 테이블' 을 클릭합니다.
2. 라우팅 테이블 중 VPC 가 생성한 VPC 의 라우팅 테이블을 클릭합니다.
라우팅 테이블 이름을 - 에서 원하는 명으로 변경합니다.
이 라우팅 테이블은 트래픽을 로컬로 라우팅하기 때문에 Private 라우트로 설정합니다.
퍼블릭용 라우팅 테이블
1. '라우팅 테이블 생성' 을 클릭합니다.
2. 라우팅 테이블을 생성합니다.
원하는 이름을 입력 후 생성한 VPC 를 선택합니다.
3. 생성한 라우트에서 '라우팅 편집'을 클릭합니다.
4. 라우팅을 편집합니다.
라우팅 추가를 클릭한 후 0.0.0.0/0 을 입력합니다.
다음 열에서 '인터넷 게이트웨이' 를 선택 후 생성한 인터넷 게이트웨이를 선택합니다.
5. 서브넷 연결에서 '서브넷 연결 편집' 을 클릭합니다.
6. 서브넷 연결 편집에서 퍼블릭 서브넷을 선택 후 저장합니다.
이 퍼블릭 서브넷은 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 전송할 수 있는 라우팅 테이블이 있어서
이 서브넷에 속한 서버는 외부와 통신이 가능하게 됩니다.
NAT 게이트웨이 생성
프라이빗 서브넷의 EC2 는 인터넷과 연결되어 있지 않습니다.
그러나 소프트웨어 업그레이드 혹은 인터넷 서비스에 액세스하기 위해 EC2 가 인터넷과 통신해야 하는 경우가 있습니다.
인터넷에 대한 아웃바운드 연결을 EC2 에 제공하지만, 인바운드 연결로부터는 EC2가 보호됩니다.
이를 구성하는 방법은 퍼블릭 서브넷에서 NAT 게이트웨이를 구성하면 됩니다.
1. '가상 프라이빗 클라우드' 의 'NAT 게이트웨이' 를 클릭합니다.
2. NAT 게이트웨이 생성을 클릭합니다.
3. NAT 게이트웨이를 생성합니다.
서브넷에는 Public Subnet 을 선택합니다.
탄력적 IP 할당을 클릭하여 주소를 할당합니다.
이제 인터넷에 바인딩된 트래픽을 NAT 게이트웨이로 전송하도록 프라이빗 서브넷을 구성합니다.
4. '가상 프라이빗 클라우드'의 '라우팅 테이블'을 클릭합니다.
5. 라우팅 테이블 중 'Private Route Table' 을 선택합니다.
6. 라우팅 편집을 클릭합니다.
7. 라우팅을 편집합니다.
IP 는 0.0.0.0/0 을 선택합니다.
다음 열에서 NAT 게이트웨이를 클릭 후 생성한 NAT 게이트웨이를 선택합니다.
8. 작업에서 '서브넷 연결 편집'을 클릭합니다.
9. 이용 가능한 서브넷에서 Private Subnet 을 선택합니다.
이제 인터넷과 통신하려는 프라이빗 서브넷 내 EC2 는 NAT 게이트웨이로 네트워크 트래픽을 보내서 인터넷에 요청을 전달합니다.
응답은 NAT 게이트웨이를 통해 다시 프라이빗 서브넷으로 수신됩니다.
마치며
EC2 생성 시 Public Subnet 으로 지정하는 경우 외부망에서 접속가능한 EC2 서버가 생성됩니다.
EC2 생성 시 Private Subnet 으로 지정하는 경우 외부망에서 접속불가능한 EC2 서버가 생성됩니다.
생성된 2개 서버는 같은 VPC 에 있기 때문에
Public Subnet 에서 생성한 EC2 는 Private Subnet EC2 서버로 접속이 가능합니다.
Private Subnet 에 생성된 EC2 는 NAT Gateway 를 통해 외부망으로 요청을 전달할 수 있습니다.