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 내에 생성된다)
subnet의 트래픽이 internet gateway를 통해 라우트되면 이 서브넷은 public subnet이다. 만약 public subnet이 IPv4로 인터넷과 통신하기를 원한다면 서브넷은 IPv4 주소를 가지거나 IPv4 EIP를 사용해야 한다. IPv6의 경우에도 마찬가지이다.
subnet의 트래픽이 internet gateway
Amazon VPC는 IPv4와 IPv6 addressing을 지원한다. 그리고 각각의 CIDR 블록 제한을 가지고 있다. 기본적으로 모든 VPC나 subnet들은 반드시 IPv4 CIDR가 정의되어 있어야 한다. 그리고 추가적으로 IPv6 CIDR를 쓸지 선택할 수 있다.
허용되는 블록 사이즈는 /16 netmask ~ /28 netmask 사이이다. (16 IP Addresses) VPC를 생성한 뒤에 이차적인 CIDR 블록을 추가할 수 있다.
VPC를 생성할 때 Amazon에서는 RFC 1918에 정의된 범위의 private IPv4 CIDR 블록으로 구성하는 것을 추천한다.
192.168.0.0 - 192.168.255.255 (192.168⁄16 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 주소는 예약되어 있다.
VPC에 CIDR를 연결하면 VPC의 route table에 route가 자동으로 추가된다. 이는 VPC 내의 라우팅을 가능하게 해준다. ( destination은 CIDR며 target은 local)
VPC에 CIDR를 추가하기 위해서는 다음의 규칙이 적용되어야 한다.
active
, you can add CIDR blocks to a VPC provided they do not overlap with a CIDR block of the peer VPC.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.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.associating | associated | disassociating | disassociated | failing | failed
(CIDR가 사용할 준비가 되면 associated 상태를 띈다)각각의 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.
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:
10.0.0.0/16
10.0.1.0/24
10.0.1.4
and 10.0.1.5
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.