[AWS] Amazon VPC 구성
타이틀 입력부분
AWS VPC란?
타이틀 입력부분
VPC 생성
1. VPC를 생성합니다.
AWS M/C에서 VPC Services를 선택 > Yourt VPCs를 선택 > Create VPC를 클릭합니다.
기본 VPC가 제공이 되어 AWS 사용을 시작하자마자 리소스를 시작할 수 있습니다.
VPC의 CIDR 범위는 10.0.0.0/16이며 별도의 서브넷으로 분할합니다.
- VPC Name
- IPv4 CIDR : 10.0.0.0/16
- Actions > Edit DNS hostnames 선택
- DNS hostnames : Enable
이 옵션은 DNS 이름을 VPC 내 Amazon EC2 인스턴스에 할당합니다.
이제 VPC로 시작되는 모든 Amazon EC2 인스턴스는 DNS 호스트 이름을 자동으로 수신합니다.
서브넷 생성
서브넷은 VPC내 IP 주소의 하우 범위입니다. AWS 리소스를 지정된 서브넷으로 시작할 수 있습니다.
- 퍼블릭 서브넷 : 인터넷에 연결해야 하는 리소스
- 프라이빗 서브넷 : 인터넷과 격리된 상태를 유지해야 하는 리소스
1. 퍼블릭 서브넷 생성
AWS M/C > VPC Service > Subnets > Create subnet 클릭
- VPC ID : 내가 생성한 VPC 선택
- Subnet Name : Public Subnet
- Availability Zone : 목록에서 첫 번째 AZ 선택
- IPv4 CIDR block : 10.0.0.0/24
퍼블릭 서브넷 안에서 시작되는 모든 Amazon EC2 인스턴스에 퍼블릭 IP주소가 자동으로 할당되도록 구성합니다.
Public Subnet 선택 > Actions 메뉴 > Modify auto-assign IP settings 선택
- Enable auto-assign public IPv4 address 선택
인터넷 게이트웨이가 연결되어야 퍼블릭 상태가 되며 아래에서 인터넷 게이트웨이를 연결합니다.
2. 프라이빗 서브넷 생성
AWS M/C > VPC Service > Subnets > Create subnet 클릭
※ 퍼블릭 서브넷 생성을 참고하여 생성합니다.
- Subnet Name : Private Subnet
- Availability Zone : 목록에서 첫 번째 AZ선택
- IPv4 CIDR block : 10.0.2.0/23 (통상 퍼블릭 서브넷의 두배로 할당)
인터넷 게이트웨이 생성
인터넷 게이트웨이는 수평적 확장으로 이중화를 지원하는 고가용성 VPC 구성 요소로 VPC의 인스턴스와 인터넷 간 통신이 가능하게 합니다.
인터넷 게이트웨이를 사용하는 목적은 다음 두 가지입니다.
- 인터넷에 연결할 라우팅 테이블의 대상 제공
- IPv4 퍼블릭 IP 주소가 할당된 인스턴스의 네트워크 주소 변환(NAT) 수행
AWS M/C > VPC Service > Internet Gateways > Create internet gateway 클릭
- Name : Lab IGW
- Actions 클릭 > Attach to VPC 클릭
- VPC 맵핑 후 Attach internet gateway 클릭
VPC가 인터넷에 연결이 되었습니다. 하지만 트래픽을 인터넷으로 라우팅하려면 인터넷 게이트웨이를 사용하도록 퍼블릭 서브넷 라우팅 테이블 구성이 필요합니다.
라우팅 테이블 구성
라우팅 테이블은 네트워크 트래픽이 전달되는 위치를 결정하는 데 사용되는 경로라는 규칙 세트를 포함합니다.
VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야하고 테이블이 서브넷에 대한 라우팅을 제어합니다.
서브넷은 한 번에 하나의 라우팅 테이블에 연결할 수 있지만, 여러 서브넷을 같은 라우팅 테이블에 연결할 수 있습니다.
인터넷 게이트웨이를 사용하려면 서브넷의 라우팅 테이블에 인터넷에 바인딩된 트래픽을 인터넷 게이트웨이로 향하도록 지시하는 경로가 포함되어야 합니다. 인터넷 게이트웨이로 가는 경로가 있는 라우팅 테이블에 연결된 서브넷을 퍼블릭 서브넷이라고 합니다.
1. Private Rout Table 확인
AWS M/C > VPC Service > Route Tables 클릭 > Lab VPC와 연결된 라우팅 테이블 선택
- Edit name : Private Route Table
- 하단의 Routes Tab 클릭
10.0.0.0/16(Lab VPC 범위)로 가는 모든 트래픽이 Local로 라우팅 된다는 것을 확인할 수 있습니다.
2. 인터넷에 바인딩된 트래픽용 퍼블릭 라우팅 테이블 생성
AWS M/C > VPC Service > Route Tables > Create route table 클릭
- Name tag : Public Route Table
- VPC : Lab VPC
3. 인터넷 게이트웨이로 인터넷에 바인딩된 트래픽을 보내는 라우팅 테이블에 경로 추가
- 하단 Routes Tab 선택 > Edit routs 클릭
- Add route 클릭
- Destinatiton : 0.0.0.0/0
- Target : Internet Gateway선택 후 목록에서 Lab IGW 선택
4. 퍼블릭 서브넷을 새 라우팅 테이블에 연결
- 하단의 Subnet Associations Tab > Edit subnet associations 클릭
- Public Subnet 선택
이 퍼블릭 서브넷은 인터넷 게이트웨이를 통해 인터넷으로 트래픽을 전송하는 라우팅 테이블 항목이 있기 때문에 이제 퍼블릭 서브넷이 되었습니다.
퍼블릭 서브넷에서 Bastion 서버 시작
Bastion 서버(점프 박스)는 프라이빗 서브넷의 리소스에 대한 액세스를 제공하도록 안전하게 구성된 퍼블릭 서브넷 내의 AWS EC2 인스턴스입니다.
시스템 운영자는 Bastion 서버에 연결한 다음 프라이빗 서브넷에 있는 리소스에 액세스 할 수 있습니다.
EC2 Bastion Instance 생성
- Service 메뉴에서 EC2를 클릭 > Insttances > Launch instances 클릭
EC2 Instance 생성은 Amazon CLI를 통해 EC2 인스턴스 생성 블로그를 참고해 주세요.
- 1단계(AMI 선택) : Amazon Linux 2
- 2단계(인스턴스 유형 선택) : t2.micro
- 3단계(인스턴스 구성)
- Network : Lab VPC
- Subnet : Public Subnet
- 4단계(스토리지 추가) : 기본 설정 사용
- 5단계(태그 추가)
- key : Name
- Value : Bastion Server
- 6단계(보안 그룹 구성) : 기본 설정 사용
- 7단계(검토) : 내용 검토 후 생성
NAT 게이트웨이 생성
프라이빗 서브넷의 리소스는 인터넷과 연결되어 있지 않습니다. 이것은 AWS의 의도로 인터넷 액세스로부터 리소스를 보호하기 위함입니다.
하지만 소프트웨어 업데이트를 다운로드하고 인터넷 서비스에 액세스하기 위해 프라이빗 서브넷의 리소스가 인터넷과 통신해야하는 경우가 있습니다. 인터넷에 대한 아웃바운드 연결을 리소스에 제공하면서 인바운드 액세스로부터 리소스를 보호해야 합니다.
그 방법은 퍼블릭 서브넷에서 NAT 게이트웨이를 시작하는 것입니다.
1. NAT Gateways를 생성합니다.
- Services 메뉴에서 VPC 클릭 > NAT Gatewyas 클릭 > Creaate NAT Gateway 클릭
- Subnet : Public Subnet
- Allocate Elastic IP 클릭
2. 인터넷에 바인딩된 트래픽을 NAT 게이트웨이로 전송하도록 프라이빗 서브넷을 구성
- 왼쪽 탐색창 Route Tables 클릭 > Private Route Table 선택 > 하단 Route Tab 클릭 > Edit routes 클릭
- Destination : 0.0.0.0/0
- Target : NAT Gateway 선택한 다음 목록에서 선택
새 라우팅 테이블을 퍼블릭 서브넷과 연결
- 하단 Subnet Associations Tab 선택 > Edit subnet associations 클릭
- Private Subnet 선택
인터넷과 통신하려는 프라이빗 서브넷 내 리소스는 이제 NAT 게이트웨이로 네트워크 트래픽을 보내 인터넷에 전달합니다. 응답은 NAT 게이트웨이를 통해 다시 프라이빗 서브넷으로 수신됩니다.
프라이팃 서브넷 테스트
프라이빗 서브넷에서 Amazon EC2 인스턴스를 시작하고 인스턴스가 인터넷과 통실할 수 있는지 확인합니다.
1. 프라이빗 서브넷 EC2 인스턴스 생성
- 1단계(AMI 선택) : Amazon Linux 2
- 2단계(인스턴스 유형 선택) : t2.micro
- 3단계(인스턴스 구성)
- Network : Lab VPC
- Subnet : Public Subnet
- User Data (테스트를 위한 것으로 일반적인 인스턴스 배포에는 사용하지 않습니다.)
#!/bin/bash
# Turn on password authentication for lab challenge
echo 'lab-password' | passwd ec2-user --stdin
sed -i 's|[#]*PasswordAuthentication no|PasswordAuthentication yes|g' /etc/ssh/sshd_config
systemctl restart sshd.service
- 4단계(스토리지 추가) : 기본 설정 사용
- 5단계(태그 추가)
- key : Name
- Value : Private Instance
- 6단계(보안 그룹 구성) : 기본 설정 사용
- 7단계(검토) : 내용 검토 후 생성
2. Bastion 서버에 로그인 하여 프라이빗 인스턴스에 로그인 테스트
Bastion 서버에 로그인한다.
EC2 콘솔에서 Privaet Instance Private IPs를 복사하여 Bastion 서버에서 스크립트를 입력한다.
ssh PRIVATE-IP
- Are you sure ...메시지에 yes 입력
- password : lab-password
아래와 같이 Private Instance에 정상 접속되는것을 확인할 수 있습니다.
3. NAT 게이트웨이 테스트
Private Instance에서 ping 명령어로 인터넷에 통신이 되는지 확인합니다.
ping -c 3 amazon.com
아래와 같인 ping 통신이 되는것을 확인할 수 있습니다.
마무리
-------------내용입력-----------
관련글
1.URL
안내문구