VPN은 Virtual Private Network의 약자로 큰 규모의 조직이 여러 곳에 분산 되어 있는 컴퓨터들을 연결하는 보안성이 높은 사설 네트워크를 만들거나, 인터넷을 활용하여 원격지 간에 네트워크를 서로 연결하고 암호화 기술을 적용하여 보다 안정적이며, 보안성 높은 통신 서비스를 제공하는 서비스
AWS는 VPC와 VPC Gateway를 통해 On-premise의 VPN장비와 AWS간의 VPN을 연결할 수 있으며, 이를 통해 보안성 높은 하이브리드 클라우드 환경을 구현하여, 원활한 클라우드 컴퓨팅 서비스를 지원 할 수 있다.
VPC는 Virtual Private Cloud 서비스로, 클라우드 내 프라이빗 공간을 제공함으로써, 클라우드를 퍼블릭과 프라이빗 영역으로 논리적으로 분리할 수 있게 합니다.
이전에 VPC가 없었을 때는 클라우드에 있는 리소스를 격리 할 수 있는 방법이 없었고, 따라서 인스턴스들이 서로 거미줄처럼 연결되고, 인터넷과 연결되어 시스템의 복잡도를 엄청나게 끌어올릴 뿐만 아니라, 의존도를 높였습니다. 따라서 유지 및 관리에 많은 비용과 노력을 투입해야 하는 단점이 있었습니다. 그러나 VPC를 분리함으로써 확장성을 가질 수 있고, 네트워크에 대한 완전한 통제권을 가질 수 있습니다.
IP는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호로, IPv4, IPv6로 나뉘어 있으며 혼용하여 사용하고 있습니다.
IPv4를 기준으로 예를 들면, 아래와 같은 형식인 172.16.0.0
의 모습으로 이루어져 있습니다.
172. | 16. | 0. | 0 |
---|---|---|---|
10101100 | 00010000 | 00000000 | 00000000 |
하지만 표에서 보이는 십진수의 형태는 보기 편하도록 변형한 것이고, 실제의 형태는 2진수 8자리의 형태, 즉 각 8bit(비트)씩 총 32bit로 구성되어 있습니다. 이때 각 8bit를 Octet이라고 부르며, .
으로 구분합니다. 그러므로 IPv4는 4개의 Octet(옥텟)으로 이루어져 있다고 할 수 있습니다.
IP Address Class
이전에는 IPv4 주소에서 호스트가 연결되어 있는 특정 네트워크를 가리키는 8비트의 네트워크 영역(Network Address)과 해당 네트워크 내에서 호스트의 주소(Host Address)를 가리키는 나머지 영역을 구분하기 위해서 클래스(Class)를 사용했습니다. 클래스는 총 5가지(A, B, C, D, E) 클래스로 나누어져 있습니다. 하지만 D와 E 클래스는 멀티캐스트용, 연구 개발을 위한 예약 IP이므로 보통 사용되지 않습니다.
CIDR(Classless inter-domain routing)
CIDR는 사이더라고 불리우며, 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한 국제 표준의 IP주소 할당 방법이며, 앞서 설명한 IP 클래스 방식을 대체한 방식입니다.
기존에는 클래스에 따라 정해진 Network Address와 Host Address를 사용해야 했다면, CIDR은 원하는 블록만큼 Network Address를 지정하여 운용할 수 있습니다.
예를 들면 다음과 같습니다.
위의 예시에 따르면, /16
은 첫 16bit를 Network Address로 사용한다는 의미로, 총 2^16인 65,536개의 IP주소를 사용할 수 있는 커다란 네트워크 블록을 이러한 방식으로 표시합니다.
CIDR 블록 | IP 주소의 수 |
---|---|
/28 | 16 |
/24 | 254 |
/20 | 4094 |
/18 | 16,382 |
/16 | 65,536 |
RFC 1918 표준
Private IP
Public IP
Elastic IP
VPC 내부의 네트워크에서 서비스 목적에 따라 IP를 Block으로 나누어 구분한다. 이렇게 분리된 IP Block의 모음을 서브넷이라고 한다.
서브넷은 서브네트워크(Subnetwork)의 줄임말로 IP 네트워크의 논리적인 하위 부분을 가리킵니다. 서브넷을 통해 하나의 네트워크를 여러 개로 나눌 수 있습니다. VPC를 사용하면 퍼블릭 서브넷, 프라이빗 서브넷, VPN only 서브넷 등, 필요에 따라 다양한 서브넷을 생성할 수 있습니다.
서브넷은 VPC의 CIDR 블록을 이용해 정의되며, 최소 크기의 서브넷은 /28
입니다. 이때 주의 할 점은 서브넷은 AZ당 최소 하나를 사용할 수 있고, 여러 개의 AZ에 연결되는 서브넷은 만들 수 없습니다.
Tips )
AWS가 확보한 서브넷 중 처음 네 개의 IP주소와 마지막 IP주소는 인터넷 네트워킹을 위해 예약되어 있다.
서브넷에서 가용 IP주소를 계산할 때는 항상 이 부분을 기억하고 있어야 합니다.
예를 들어, 10.0.0.0/24 체계의 CIDR 블록이 있는 서브넷에서 10.0.0.0, 10.0.0.1, 10.0.02, 10.0.0.3, 10.0.0.255 등 5개의 IP주소는 예약 되어 있습니다.
Subnet은 AZ내부에 각각 만든다
트래픽의 전송 방향을 결정하는 라우트와 관련된 규칙을 담은 테이블로 목적지를 향한 최적의 경로이다.
라우팅 테이블은 데이터 패킷을 전송하기 위한 모든 정보를 담고 있습니다. 쉽게 말하자면 라우팅 테이블은 하나의 지점에서 또 다른 지점으로 가기 위한 모든 정보를 제공하기 위한 테이블입니다.
모든 서브넷은 라우팅 테이블을 지닙니다.
예를 들어 아래의 캡처본과 같이 특정 VPC의 서브넷이 라우팅 테이블에 인터넷 게이트웨이(VPC와 인터넷 간 통신을 가능하게 하는 구성요소)를 포함하고 있다면, 해당 서브넷은 인터넷 액세스 권한 및 정보를 가집니다.
각각의 서브넷은 항상 라우팅 테이블을 가지고 있어야 하며, 하나의 라우팅 테이블 규칙을 여러 개의 서브넷에 연결하는 것도 가능합니다. 서브넷을 생성하고 별도의 라우팅 테이블을 생성하지 않으면 클라우드가 자동으로 VPC의 메인 라우팅 테이블을 연결합니다.
외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서, 내부 IP 주소를 외부 IP 주소로 변환하는 작업을 수행하는 서비스
예) 외부에 공개될 필요가 없거나, 보안상 중요한 서비스이지만 패치나 보안 업데이트, 소프트웨어 업데이트를 인터넷을 통해 받아야 하는 경우 NAT 게이트웨이나 NAT 인스턴스를 사용하게 됩니다.
NAT 게이트웨이는 네트워크 주소 변환(NAT) 서비스입니다. NAT 게이트웨이를 사용하면 프라이빗 서브넷의 리소스가 인터넷에 연결할 수 있습니다. 하지만 외부 서비스는 프라이빗 서브넷의 리소스와의 연결을 시작할 수 없습니다.
VPC에서 NAT 게이트웨이를 생성하도록 선택한 경우 NAT 게이트웨이가 프로비저닝되고 사용 가능한 각 시간에 대해 요금이 부과됩니다. 또한 게이트웨이를 통과하는 데이터 양에 대해서도 요금이 부과됩니다.
피어링 연결은 비공개적으로 두 VPC간에 트래픽을 라우팅 할 수 있게 하기 위한 서로 다른 VPC간의 네트워크 연결을 제공한다.
데이터센터간 전용 회선을 설치한 것과 같이, 서로 다른 격리된 인터넷끼리 전용으로 통신이 가능하게 해준다.
공통/핵심 서비스
네트워크 통신과 트래픽에 대해 IP와 Port를 기준으로 통신을 허용하거나 차단하기 위한 기능을 제공
AWS의 장점 중 하나인 오토스케일에 대응하기 쉽게 보안 그룹 정책을 이용해서 그룹별로 허용 조건을 설정 할 수 있다.
구분 | 보안 그룹 | 네트워크 ACL |
---|---|---|
서비스 범위 | 인스턴스 레벨에 적용 | 서브넷 레벨에 적용 |
적용 정책 | 허용 규칙만 적용 | 허용 및 거부 규칙 적용 |
구동 방식 | 규칙에 상관없이 반환 트래픽 허용 | 반환 트래픽이 별도로 허용되어야 함 |
룰 검토 / 적용 | 해당 객체 내 모든 룰 검토 | 해당 객체 내 룰을 번호 순으로 처리 |
적용 방법 | 인스턴스에 보안 그룹 추가 필요 | 연결된 서브넷에 모든 인스턴스 자동 적용됨 |