지구정복

[AWS] 4장 가상 네트워크 공간 만들기 본문

데이터 엔지니어링 정복/Cloud(AWS, Ncloud)

[AWS] 4장 가상 네트워크 공간 만들기

eeaarrtthh 2020. 12. 29. 22:56
728x90
반응형

1. Network

Network는 Net(촘촘하게 연결되어 있는) + Work(일)의 합성어로 연결해서 서로가 가지고 있는 정보를 결합하여 생산적인 가치를 만드는 일이다.

네트워킹을 한다 = 서로 통신(Communication)한다.

 

서로 통신할 때 필요한 규칙을 프로토콜(Protocol)이라고 한다.

 

2. VPN (Virtual Private Network)

VPN은 큰 규모의 조직이 여러 곳에 분산되어 있는 컴퓨터들을 연결하는 보안성이 높은 사설 네트워크를 만들거나, 

인터넷을 활용하여 원격지 간에 네트워크를 서로 연결하고 암호화 기술을 적용하여 보다 안정적이며, 보안성 높은 통신 서비스를 제공하는 서비스를 말한다.

 

기존 IDC(Internet Data Center)에서 서비스하던 모든 시스템을 클라우드로 이전하는 것을 매우 어렵다.

이런 경우 IDC - 클라우드 간의 네트워크 연결을 통해 기존 시스템과 클라우드 시스템 간의 데이터통신이 필요하다.

 

VPC와 VPC Gateway를 통해 On-Premise의 VPN장비와 AWS간의 VPN을 연결할 수 있으며, 보안성 높은 하이브리드 클라우드 환경을 구현하여 원활한 클라우드 컴퓨팅 서비스를 지원할 수 있다.

 

3. VPC (Virtual Private Cloud)

VPC는 AWS 클라우드에서 논리적으로 격리된 네트워크 공간을 할당하여 가상 네트워크에서 AWS 리소스를 이용할 수 있는 서비스를 제공한다.

 

ㅇ주요 특징

-aws에 사설 네트워크 구축가능

-회사와 aws간 VPN을 연결하거나 가상 네트워킹 구현

-기존 데이터 센터와의 연결을 통해 하이브리드 환경 구성 가능

-aws를 회사 인프라의 일부처럼 사용할 수 있으며, 내부 시스템 소프트웨어의 연동이 매우 쉬움

-세심한 네트워크 설정 가능

-모든 리전에서 사용가능

 

4. VPC의 구성요소

4.1 프라이빗 IP주소, 퍼블릭 IP주소, 탄성IP(Elastic IP) 주소

프라이빗 IP 주소는 인터넷을 통해 연결할 수 없는 VPC 내부에서만 사용할 수 있는 IP주소이다. 동일 네트워크에서 인스턴스간 통신에 사용할 수 있다.

 

퍼블릭 IP 주소는 인터넷을 통해 연결할 수 있는 IP주소로 인스턴스와 인터넷 간의 통신을 위해 사용할 수 있다.

인스턴스가 재부팅되면 새로운 퍼블릭 IP주소가 할당된다.

 

탄성 IP 주소는 동적 컴퓨팅을 위해 고안된 고정 퍼블릭 IP주소이다. VPC의 모든 인스턴스와 네트워크 인터페이스에 탄성 IP를 할당할 수 있으며, 다른 인스턴스에 주소를 신속하게 다시 매칭하여 인스턴스 장애 조치를 수행할 수 있다.

사용 가능한 탄력적 IP주소는 5개로 제한된다.

4.2 VPC와 서브넷

VPC는 사용자의 aws 계정을 위한 전용의 가상 네트워크를 말한다. 이러한 VPC는 aws 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있으며 Amazon EC2 인스턴스와 같은 aws리소스를 VPC에서 실행할 수 있다.

VPC 내부의 네트워크에서도 서비스 목적에 따라 IP Block 으로 나누어 구분할 수 있다. 이렇게 분리된 IP Block의 모음을 서브넷이라고 한다.

 

VPC는 리전의 모든 가용 영역에서 적용되며 각 가용 영역에 하나 이상의 서브넷을 추가할 수 있다. 하지만 서브넷은 단일 가용 영역에서만 생성할 수 있으며, 여러 가용 영역으로 확장할 수 없다.

4.3 VPC와 서브넷의 사이즈

VPC를 생성할 때 VPC에서 사용하게 될 IP주소의 범위를 지정하게 되는데 범위를 CIDR(Classless Lnter-Domain Routing) 블록 형태로 지정해야 한다. 

VPC를 생성하는 경우 10.0.0.0/24로 VPC를 생성하게 되면 256개의 IP주소를 지원하게 되며, CIDR블록을 각각 128개의 IP주소를 지원하는 2개의 서브넷으로 나눌 수 있다.

한 서브넷은 10.0.0.0 ~ 10.0.0.127과 다른 서브넷은 10.0.0.128 ~ 10.0.0.255을 사용하도록 구성할 수 있다.

4.4 퍼블릭 서브넷과 프라이빗 서브넷

서브넷 네트워크 트래픽이 인터넷 게이트웨이(Internet Gateway, IGW)로 라우팅이 되는 서브넷을 퍼블릭 서브넷이라하고, 인터넷 게이트웨이로 라우팅되지 않는 서브넷을 프라이빗 서브넷이라고 한다.

 

EC2 인스턴스가 IP를 통해 인터넷과 통신을 할 수 있게 하려면, 퍼블릭 IP주소나 탄력적IP 주소가 있어야 한다.

일반적으로 인터넷망을 통해 서비스를 수행하는 웹서버는 퍼블릭 서브넷을 생성하며

인터넷에 직접적으로 연결할 필요가 없고, 보다 높은 보안성을 필요로하는 DB서버는 프라이빗 서브넷에 생성한다.

4.5 라우팅 테이블(Routing Table)

각 서브넷은 서브넷 외부로 나가는 아웃바운드(Outbound) 트래픽에 대해 허용된 경로를 지정하는 라우팅 테이블이 연결되어 있어야 한다. 생성된 서브넷은 자동으로 VPC의 기본 라우팅 테이블과 연결되며 테이블의 내용을 변경할 수 있다.

 

이러한 라우팅 테이블은 VPC의 서브넷 내에서 생성된 네트워크 패킷이 목적이 주소로 이용하기 위해 어떤 경로로 이동되어야 하는지를 알려주는 나침반과 비슷한 개념이다.

 

5. VPC의 주요 서비스

5.1 보안그룹과 네트워크 액세스 제어목록(Network ACL)

VPC는 네트워크 통신과 트래픽에 대해 IP와 Port를 기준으로 통신을 허용하거나 차단하기 위한 기능을 제공한다.

이러한 서비스를 보안 그룹(Security Group)과 네트워크 ACL이라 한다.

 

VPC의 보안그룹과 네트워크 ACL을 통해 AWS 상에서 방화벽과 동일한 기능을 사용할 수 있다.

둘을 비교하면 아래와 같다. 보안그룹과 네트워크 ACL은 차이가 있으므로 필요에 따라 선택적으로 사용하면 된다.

구분 보안 그룹 네트워크 ACL
서비스 범위 인스턴스 레벨에 적용 서브넷 레벨에 적용
적용 정책 허용 규칙만 적용 허용 및 거부 규칙 적용
구동 방식 규칙에 상관없이 반환 트래픽 허용 반환 트래픽이 별도로 허용되어야 함
룰 검토/적용 해당 객체 내 모든 룰 검토 해당 객체 내 룰을 번호 순으로 처리
적용 방법 인스턴스에 보안 그룹 추가 필요 연결된 서브넷에 모든 인스턴스 자동 적용됨

5.2 VPC 피어링 연결(VPC Peering Connection)

피어링 연결은 비공개적으로 두 VPC 간에 트래픽을 라우팅할 수 있게 하기 위한 서로 다른 VPC 간의 네트워크 연결을 제공한다.

VPC Peering을 통해 동일한 네트워크에 속한 것과 같이 서로 다른 VPC의 인스턴스 간에 통신이 가능하다.

5.3 NAT(Network Address Translation) 게이트웨이

NAT는 외부 네트워크에 알려진 것과 다른 IP주소를 사용하는 내부 네트워크에서 내부 IP주소를 외부 IP주소로 변환하는 작업을 수행하는 서비스이다.

 

외부에 공개될 필요가 없거나, 보안상 중요한 서비스이지만 윈도우 패치나 보안 업데이트, 소프트웨어 업데이트를 인터넷을 통해 받아야하는 경우 NAT 게이트웨이나 NAT 인스턴스를 사용하게 된다.

 

NAT 게이트웨이를 구성하기 위해서 다음과 같은 3가지 조건이 필요하다.

  • NAT 게이트를 생성하기 위해 퍼블릭 서브넷을 지정
  • NAT 게이트웨이와 연결할 탄력적 IP 주소 필요
  • NAT 게이트웨이를 만든후 인터넷 트래픽이 NAT 게이트웨이로 통신이 가능하도록 프라이빗 서브넷과 연결된 라우팅 테이블 업데이트

이와 같이 NAT 게이트웨이를 구성하면 프라이빗 서브넷의 인스턴스가 인터넷과 통신할 수 있다.

5.4 VPC Endpoint

Amazon S3는 인터넷망에 연결된 서비스로 인터넷 기반의 IP주소와 연결정보를 가지고 있다. 

이러한 공용 리소스에 대해 퍼블릭 서브넷에 위치한 인스턴스는 인터넷을 통해 문제없이 연결이 가능하다.

 

하지만 프라이빗 서브넷에 위치한 인스턴스는 인터넷과 연결되어 있는 S3와 같은 공용 리소스를 연결할 수 없다.

이런 경우 NAT 게이트웨이나 NAT인스턴스가 필요하다. 하지만 VPC Endpoint를 이용하면 빠르고 쉽게 S3, DynamoDB에 연결할 수 있다.

5.5 VPN(Virtual Private Network) 연결

VPN연결은 AWS VPC내 인스턴스와 IDC내 시스템 간의 데이터 통신을 위해 VPC에 가상의 프라이빗 게이트웨이를 연결하고 사용자 지정 라우팅 테이블을 생성하며, 보안 그룹의 규칙을 업데이트하고, AWS 관리형 VPN연결을 생성하여 VPC에서 원격의 네트워크에 접속 가능하도록 하이브리드 클라우드 환경을 구성할 수 있다. 

 

6. 실습: VPC 마법사를 통해 퍼블릭 서브넷(Public Subnet)과 프라이빗 서브넷(Private Subnet)만들기

Amazon VPC는 비용이 발생하지 않지만 VPC 외부로 데이터를 송신하는 경우 사용량에 따라 Outbound 트래픽에 대한 비용이 발생한다.

 

1. 아마존에 접속후 로그인한다.

[서비스] > [네트워킹 및 콘텐츠 전송] > [VPC]로 이동한다.

aws.amazon.com/ko/?nc2=h_lg

 

클라우드 서비스 | 클라우드 컴퓨팅 솔루션| Amazon Web Services

브라우저 기반 셸, 더 안전하고 손쉬운 카오스 엔지니어링, 기존 도구와 서비스의 향상된 기능 발표 내용 살펴보기 

aws.amazon.com

 

2. NAT 게이트웨이에 사용할 탄력적 IP 할당을 위해 [탄력적 IP]로 이동하여 [탄력적 IP 주소 할당] 버튼 클릭

그리고 [탄력적 IP 주소 할당] 에서 [할당]을 클릭한다.

3. 상단 [VPC 대시보드]에서 [VPC 마법사 시작] 버튼을 클릭한다.

4. [1단계: VPC 구성 선택]에서 [퍼블릭 및 프라이빗 서브넷이 있는 VPC]의 [선택]을 클릭한다.

5. VPC 구성을 위해 다음과 같이 입력후 [VPC 만들기] 버튼을 클릭해서 VPC를 생성한다.

 

7. 리전간 VPC Peering으로 글로벌 통합 네트워크 환경 구축하기

Inter-Region VPC Peering을 테스트하기 위해 런던 리전에 VPC를 만들고, 서울 리전과 런던 리전간에 VPC Peering을 수행한 후 각 리전간 네트워크가 정상적으로 연결되는지 확인한다.

네트워크 테스트를 위해 각각의 리전에 EC2 인스턴스를 생성한다.

 

1. 아마존에 접속해서 로그인한 뒤 오른쪽 상단에 [리전 선택]에서 '유럽런던' 리전을 클릭한다.

 

2. [서비스] > [네트워킹 및 콘텐츠 전송] > [VPC]로 이동한다.

위에서처럼 [VPC 만들기] 버튼을 눌러 [VPC 마법사 시작] 버튼을 클릭한다.

[VPC 구성 선택] 페이지에서 '단일 퍼블릭 서브넷이 있는 VPC'를 선택후 [선택]을 누른다.

3. VPC 구성을 다음과 같이 입력한다.

서브넷에 들어가서 아래 밑줄친 곳에서 " | tutorial VPC London" 전까지만 복사해두자.

4. 피어링 구성을 위해 리전을 다시 '아시아 태평양(서울)' 로 전환 후 VPC로 이동한다.

그리고 왼쪽 탭에서 [피어링 연결] 메뉴를 누른 뒤 [피어링 연결 생성] 버튼을 클릭한다.

5. [피어링 연결 생성] 페이지에서 다음과 같이 구성을 진행후 [피어링 연결 생성] 버튼을 클릭한다.

아래와같이 연결이 성공하면 피어링 연결 승인을 위해 런던 리전으로 이동한다.

VPC 수락자에서 " | tutorial VPC London"은 뻬야한다.

6. 런던 리전 [피어링 연결] 탭에서 [요청 수락]을 클릭한다.

 

7. 이후 VPC 간의 연결후 Network 통신을 위해 양쪽 VPC 간에 라우팅 처리가 필요하다.

이를 위해 기존 "라우팅 테이블"을 수정해야 한다.

VPC 간 트래픽 통신을 수행하기 위해 [지금 내 라우팅 테이블 수정]을 클릭한다.

8. 런던 리전의 [라우팅 테이블] 페이지에서 바로 전에 생성된 라우팅 테이블을 다음과 같이 선택하고, "라우팅" 탭 클릭후 [라우팅 편집] 버튼을 클릭한다.

9. 라우팅 편집 페이지에서 [라우팅 추가] 버튼을 클릭하고 좌측의 "대상"에서 서울 리전의 VPC 대역인 "10.0.0.0/16" 입력 후 대상 항목에서 "Peering Connection"를 선택한다. 

현재 구성된 "VPC Peering 연결"을 선택후 [라우팅 저장]버튼을 클릭한다.

10. 서울 리전의 [라우팅 테이블] 페이지에서 바로 전에 생성된 라우팅 테이블을 다음과 같이 선택하고 "라우팅"탭 클릭후 [라우팅 편집] 클릭한다.

11. 라우팅 편집 페이지에서 [라우팅 추가] 클릭후 좌측의 "대상"에서 런던 리전의 VPC 대역인 "20.0.0.0/16" 입력후 대상항목에서 "Peering Connection"를 선택한다.

현재 구성된 "VPC Peering 연결" 선택후 [라우팅 저장]을 클릭한다.

12. 다시 런던 리전의 EC2 생성 페이지로 이동후 "Amazon Linux AMI ~"를 선택하여 t3.micro(Free-Tire) 선택후 인스턴스 세부정보 구성 페이지에서 VPC 선택시 이전에 생성했던 VPC를 선택한다.

"퍼블릭 IP 자동 할당"을 "활성화"로 선택후 [검토 및 시작] 버튼을 클릭해 인스턴스를 생성한다.

13. 런던 리전에서 인스턴스 생성 완료 후 세부 항목 페이지에서 등록된 "보안 그룹"을 확인하고 수정을 위해 "보안그룹링크"를 클릭한다.

14. 보안 그룹 페이지 하단의 "인바운드 규칙"에서 [인바운드 규칙 편집]을 클릭하여 인바운드 규칙 편집 페이지로 이동후 [규칙 추가] 버튼을 클릭하여 "유형 : 모든 트래픽, 소스 : 10.0.0.0/16(서울 리전 VPC 대역)"등록후 [규칙 저장]을 클릭한다.

15. Putty를 이용하여 서울 리전의 인스턴스에 접속후 런던 리전에 생성된 인스턴스의 Private IP로 Ping명령어를 실행하여 정상적으로 통신이 가능함을 확인한다.

 

모든 작업이 끝났으면 ip할당된 곳 모두 ip해제시키고 서울과 런던 ec2를 삭제시켜줘야지 요금이 발생하지 않는다.

 

 

 

[출처]

아마존웹서비스 - 권영환

728x90
반응형
Comments