VPC and Subnets Basics

VPCs and Subnets

VPCs and Subnets - Amazon Virtual Private Cloud

r/aws - Calculating CIDR blocks of subnets for VPC

VPC and Subnet Basics

VPC(Virtual Private Cloud)는 AWS 계정에 특정한 가상 네트워크다. 이는 AWS Cloud 내에서 다른 가상 네트워크들과 논리적으로(logically) 분리되어 있다.

VPC를 생성할 때 CIDR(Classless Inter-Domain Routing)의 형태로 IPv4 범위를 지정해줘야 한다. 예를 들어 10.0.0.0/16이 될 수 있다. 이건 VPC의 주 CIDR 블록이 된다.

VPC는 리전 내의 모든 AZ를 포함한다. VPC를 생성하고 나면 각 AZ에 하나 이상의 subnet을 생성할 수 있다. subnet을 생성할 때도 subnet의 CIDR 블록을 지정해주어야 한다. 그리고 이는 VPC의 CIDR 범위 내에 있어야 한다. subnet은 AZ을 가로질러 생성될 수 없다 (AZ 내에 생성된다)

  • VPC나 subnet에 IPv6 CIDR을 지정할 수 있으나 옵션이다.

Public subnet

subnet의 트래픽이 internet gateway를 통해 라우트되면 이 서브넷은 public subnet이다. 만약 public subnet이 IPv4로 인터넷과 통신하기를 원한다면 서브넷은 IPv4 주소를 가지거나 IPv4 EIP를 사용해야 한다. IPv6의 경우에도 마찬가지이다.

Private subnet

subnet의 트래픽이 internet gateway

VPC and Subnet Sizing

Amazon VPC는 IPv4와 IPv6 addressing을 지원한다. 그리고 각각의 CIDR 블록 제한을 가지고 있다. 기본적으로 모든 VPC나 subnet들은 반드시 IPv4 CIDR가 정의되어 있어야 한다. 그리고 추가적으로 IPv6 CIDR를 쓸지 선택할 수 있다.

VPC and Subnet Sizing for IPv4

허용되는 블록 사이즈는 /16 netmask ~ /28 netmask 사이이다. (16 IP Addresses) VPC를 생성한 뒤에 이차적인 CIDR 블록을 추가할 수 있다.

VPC를 생성할 때 Amazon에서는 RFC 1918에 정의된 범위의 private IPv4 CIDR 블록으로 구성하는 것을 추천한다.

  • 10.0.0.0 - 10.255.255.255 (108 prefix)
  • 172.16.0.0 - 172.31.255.255 (172.1612 prefix)
  • 192.168.0.0 - 192.168.255.255 (192.16816 prefix)

  • You can create a VPC with a publicly routable CIDR block that falls outside of the private IPv4 address ranges specified in RFC 1918; however, for the purposes of this documentation, we refer to private IP addresses as the IPv4 addresses that are within the CIDR range of your VPC.

subnet의 CIDR는 (VPC에 하나의 subnet만 있다고 했을 때) VPC의 CIDR와 같을 수 있다. subnet이 많을 경우에는 VPC CIDR의 부분이 되어야 한다. 허용되는 블록 사이즈는 /28 netmask ~ /16 netmask이다. subnet이 많을 경우에 각 서브넷의 CIDR은 겹치면 안된다.

예를 들어서 CIDR가 10.0.0.0/24 인 VPC를 생성하면 이는 256개의 IP 주소를 지원한다. 이 때 subnet 두개를 만들고 싶다면 각각은 128개의 IP 주소를 지원하게 할 수 있다. 한개는 10.0.0.0/25 CIDR를 사용하고 (10.0.0.0 - 10.0.0.127) 다른 하나는 10.0.0.128/25를 사용한다. (10.0.0.0 - 10.0.0.127)

CIDR 블록을 계산하는 것을 도와주는 많은 툴들이 있다. 예를 들어 http://www.subnet-calculator.com/cidr.php가 있다.

각 subnet CIDR의 처음 네개의 IP 주소와 마지막 IP 주소는 사용할 수 없다. 예를 들어 10.0.0.0/24의 CIDR를 가지고 있는 subnet에서 다음 다섯 개의 IP 주소는 예약되어 있다.

  • 10.0.0.0: Network address
  • 10.0.0.1: AWS VPC router
  • 10.0.0.2: DNS Server
  • 10.0.0.3: Unknown. AWS use it
  • 10.0.0.255: Network broadcast address

Adding IPv4 CIDR Blocks to a VPC

VPC에 CIDR를 연결하면 VPC의 route table에 route가 자동으로 추가된다. 이는 VPC 내의 라우팅을 가능하게 해준다. ( destination은 CIDR며 target은 local)

VPC에 CIDR를 추가하기 위해서는 다음의 규칙이 적용되어야 한다.

  • 허용되는 블록 사이즈는 /28 netmask 에서 /16 netmask 까지이다.
  • CIDR는 VPC 내의 다른 CIDR와 겹치면 안된다.
  • IPv4 주소의 범위에 제한이 있다. IPv4 CIDR Block Assocation Restriction을 참고하자.
  • 이미 존재하는 CIDR의 사이즈를 증가시키거나 감소시킬 수 없다.
  • VPC에서 사용하는 CIDR와 route table에 추가시킬 수 있는 route의 수에는 제한이 있다. Amazon VPC Limits를 확인하자
  • The CIDR block must not be the same or larger than the CIDR range of a route in any of the VPC route tables. For example, if you have a route with a destination of 10.0.0.0/24 to a virtual private gateway, you cannot associate a CIDR block of the same range or larger. However, you can associate a CIDR block of 10.0.0.0/25 or smaller.
  • VPC에 ClassicLink를 사용할 때는 CIDR를 10.0.0.0/16 나 10.1.0.0/16에서 시작할 수 있다. (but you cannot associate any other CIDR block from the 10.0.0.0/8 range.)
  • VPC peering connection의 일부분으로 VPC에 CIDR를 추가할 때는 다음의 규칙을 따라야 한다.
    • If the VPC peering connection is active, you can add CIDR blocks to a VPC provided they do not overlap with a CIDR block of the peer VPC.
    • If the VPC peering connection is pending-acceptance, the owner of the requester VPC cannot add any CIDR block to the VPC, regardless of whether it overlaps with the CIDR block of the accepter VPC. Either the owner of the accepter VPC must accept the peering connection, or the owner of the requester VPC must delete the VPC peering connection request, add the CIDR block, and then request a new VPC peering connection.
    • If the VPC peering connection is pending-acceptance, the owner of the accepter VPC can add CIDR blocks to the VPC. If a secondary CIDR block overlaps with a CIDR block of the requester VPC, the VPC peering connection request fails and cannot be accepted.
  • 만약 direct connect gateway를 통해 다수의 VPC에 AWS Direct Connect을 사용해 접속하고 있다면 VPC들의 CIDR는 서로 겹치는 부분이 없어야 한다.
  • CIDR를 추가하거나 삭제할 때의 상태들은 다음이 될 수 있다: associating | associated | disassociating | disassociated | failing | failed (CIDR가 사용할 준비가 되면 associated 상태를 띈다)

Subnet Routing

각각의 subnet은 route table에 연결되어 있어야 한다. 이는 subnet을 벗어난 트래픽을 라우팅하기 위해 필요한 것이다. 생성해낸 모든 subnet들은 자동적으로 VPC의 메인 route table에 연결된다. 이는 수정할 수 있다.

다음의 그림에서 subnet 1에 연결되어 있는 route table은 모든 IPv4 트래픽(0.0.0.0/0)과 IPv6 트래픽(::/0)을 인터넷 게이트웨이로 라우팅한다.

The instance 2A can’t reach the internet, but can reach other instances in the VPC. You can allow an instance in your VPC to initiate outbound connections to the internet over IPv4 but prevent unsolicited inbound connections from the internet using a network address translation (NAT) gateway or instance. Because you can allocate a limited number of Elastic IP addresses, we recommend that you use a NAT device if you have more instances that require a static public IP address. For more information, see NAT. To initiate outbound-only communication to the internet over IPv6, you can use an egress-only internet gateway. For more information, see Egress-Only Internet Gateways.

Connections with Your Local Network and Other VPCs

You can optionally set up a connection between your VPC and your corporate or home network. If you have an IPv4 address prefix in your VPC that overlaps with one of your networks’ prefixes, any traffic to the network’s prefix is dropped. For example, let’s say that you have the following:

  • A VPC with CIDR block 10.0.0.0/16
  • A subnet in that VPC with CIDR block 10.0.1.0/24
  • Instances running in that subnet with IP addresses 10.0.1.4 and 10.0.1.5
  • On-premises host networks using CIDR blocks 10.0.37.0/24 and 10.1.38.0/24

When those instances in the VPC try to talk to hosts in the 10.0.37.0/24 address space, the traffic is dropped because 10.0.37.0/24 is part of the larger prefix assigned to the VPC (10.0.0.0/16). The instances can talk to hosts in the 10.1.38.0/24 space because that block isn’t part of 10.0.0.0/16.

You can also create a VPC peering connection between your VPCs, or with a VPC in another AWS account. A VPC peering connection enables you to route traffic between the VPCs using private IP addresses; however, you cannot create a VPC peering connection between VPCs that have overlapping CIDR blocks. For more information, see Amazon VPC Peering Guide.

We therefore recommend that you create a VPC with a CIDR range large enough for expected future growth, but not one that overlaps with current or expected future subnets anywhere in your corporate or home network, or that overlaps with current or future VPCs.

We currently do not support AWS Site-to-Site VPN connections over IPv6.

comments powered by Disqus