Subnets (original) (raw)

Virtual Private Cloud (VPC) networks are global resources. Each VPC network consists of one or more IP address ranges called subnets. Subnets are regional resources, and have IP address ranges associated with them.

In Google Cloud, the terms subnet and subnetwork are synonymous. They are used interchangeably in the Google Cloud console, Google Cloud CLI commands, and API documentation.

Networks and subnets

A network must have at least one subnet before you can use it. Auto mode VPC networks create subnets in each region automatically. Custom mode VPC networks start with no subnets, giving you full control over subnet creation. You can create more than one subnet per region. For information about the differences between auto mode and custom mode VPC networks, see types of VPC networks.

When you create a resource in Google Cloud, you choose a network and subnet. For resources other than instance templates, you also select azoneor a region. Selecting a zone implicitly selects its parent region. Because subnets are regional objects, the region that you select for a resource determines the subnets that it can use:

Types of subnets

VPC networks support subnets with the following stack types. A single VPC network can contain any combination of these subnets.

Stack type Subnet ranges Compatible VM network interfaces
IPv4-only (single-stack) Only IPv4 subnet ranges IPv4-only interfaces
IPv4 and IPv6 (dual-stack) Both IPv4 and IPv6 subnet ranges IPv4-only, dual-stack, and IPv6-only interfaces
IPv6-only (single-stack) Only IPv6 subnet ranges IPv6-only interfaces

When you create a subnet, you specify which stack type to use. You can also change the stack type of a subnet in the following scenarios:

Subnets with IPv6 address ranges are supported on custom mode VPC networks only. Subnets with IPv6 address ranges aren't supported on auto mode VPC networks or legacy networks.

When you create an IPv4 subnet range, you provide the following information:

Subnet setting Valid values Details
IPv4 range A valid range that you choose Required
Secondary IPv4 range A valid range that you choose Optional

When you create an IPv6 subnet range, you specify the access type and the source of the IP addresses:

Access type Address type and source
Internal(not internet routable) ULAs: Automatically assigned from the VPC network's /48 ULA range.
If you use bring your own IP addresses (BYOIP), you can privately use your own IPv6 GUAs.
External(internet routable) GUAs: Automatically assigned from Google's regional external IPv6 addresses.
If you use BYOIP, you can use your own IPv6 GUAs.

Purposes of subnets

When you create a subnet, you select a purpose for the subnet:

In most cases, you can't change the purpose setting of a subnet after it has been created. For more information, see the gcloud compute networks subnets update command reference.

Limitations for naming subnets

Subnet names have the following limitations:

IPv4 subnet ranges

Each IPv4-only or dual-stack subnet must have a primary IPv4 address range. When a subnet'spurpose is PRIVATE or NONE, the primary IPv4 range can be used by the following:

Subnets can optionally have one or more secondary IPv4 address ranges, which can only be used by alias IP ranges. An alias IP range can come from either the primary IPv4 range or a secondary IPv4 range of a subnet.

Your IPv4 subnets don't need to form a predefined contiguous CIDR block, but you can do that if you prefer. For example, auto mode VPC networks do create subnets that fit within a predefined auto mode IP range. However, the primary range of a subnet can be 10.0.0.0/24, while the primary range of another subnet in the same network can be 192.168.0.0/16.

Limitations for IPv4 subnet ranges

IPv4 subnet ranges have the following limitations:

Valid IPv4 ranges

A subnet's primary and secondary IPv4 address ranges are regional internal IPv4 addresses. The following table describes valid ranges.

Range Description
Private IPv4 address ranges
10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 Private IP addresses RFC 1918 For information about using 172.17.0.0/16, seeAdditional considerations.
100.64.0.0/10 Shared address space RFC 6598
192.0.0.0/24 IETF protocol assignments RFC 6890
192.0.2.0/24 (TEST-NET-1) 198.51.100.0/24 (TEST-NET-2) 203.0.113.0/24 (TEST-NET-3) Documentation RFC 5737
192.88.99.0/24 IPv6 to IPv4 relay (deprecated) RFC 7526
198.18.0.0/15 Benchmark testing RFC 2544
240.0.0.0/4 Reserved for future use (Class E) as noted inRFC 5735 andRFC 1112. Some operating systems don't support the use of this range, so verify that your OS supports it before creating subnets that use this range.
Privately used public IP address ranges
Privately used public IPv4 addresses Privately used public IPv4 addresses: Are IPv4 addresses that are normally routable on the internet, but that are used privately in a VPC network Cannot belong to a prohibited subnet range When you use these addresses as subnet ranges, Google Cloud does not announce these routes to the internet and does not route traffic from the internet to them. If you have imported public IP addresses to Google usingBring your own IP (BYOIP), your BYOIP ranges and privately used public IP address ranges in the same VPC network must not overlap. For VPC Network Peering, subnet routes for public IP addresses are not automatically exchanged. The subnet routes are automatically exported by default, but peer networks must be explicitly configured to import them in order to use them.

Prohibited IPv4 subnet ranges

Prohibited subnet ranges include Google public IP addresses and commonly reserved RFC ranges, as described in the following table. These ranges cannot be used for subnet ranges.

Range Description
Public IP addresses for Google APIs and services, including Google Cloud netblocks. You can find these IP addresses athttps://gstatic.com/ipranges/goog.txt.
199.36.153.4/30 and 199.36.153.8/30 Private Google Access-specific virtual IP addresses
0.0.0.0/8 Current (local) network RFC 1122
127.0.0.0/8 Local host RFC 1122
169.254.0.0/16 Link-local RFC 3927
224.0.0.0/4 Multicast (Class D) RFC 5771
255.255.255.255/32 Limited broadcast destination address RFC 8190 andRFC 919

Unusable addresses in IPv4 subnet ranges

Google Cloud uses the first two and last two IPv4 addresses in each subnet primary IPv4 address range to host the subnet. Google Cloud lets you use all addresses in secondary IPv4 ranges.

Unusable IPv4 address Description Example
Network address First address in the primary IPv4 range 10.1.2.0 from range 10.1.2.0/24
Default gateway address Second address in the primary IPv4 range 10.1.2.1 from range 10.1.2.0/24
Second-to-last address Second-to-last address in the primary IPv4 rangeThis range is reserved by Google Cloud for potential future use. 10.1.2.254 from range 10.1.2.0/24
Broadcast address Last address in the primary IPv4 range 10.1.2.255 from range 10.1.2.0/24

Auto mode IPv4 ranges

This table lists the IPv4 ranges for the automatically created subnets in an auto mode VPC network. IP ranges for these subnets fit inside the10.128.0.0/9 CIDR block. Auto mode VPC networks are built with one subnet per region at creation time and automatically receive new subnets in new regions. Unused portions of 10.128.0.0/9 are reserved for future Google Cloud use.

Region IP range (CIDR) Default gateway Usable addresses (inclusive)
africa-south1 10.218.0.0/20 10.218.0.1 10.218.0.2 to 10.218.15.253
asia-east1 10.140.0.0/20 10.140.0.1 10.140.0.2 to 10.140.15.253
asia-east2 10.170.0.0/20 10.170.0.1 10.170.0.2 to 10.170.15.253
asia-northeast1 10.146.0.0/20 10.146.0.1 10.146.0.2 to 10.146.15.253
asia-northeast2 10.174.0.0/20 10.174.0.1 10.174.0.2 to 10.174.15.253
asia-northeast3 10.178.0.0/20 10.178.0.1 10.178.0.2 to 10.178.15.253
asia-south1 10.160.0.0/20 10.160.0.1 10.160.0.2 to 10.160.15.253
asia-south2 10.190.0.0/20 10.190.0.1 10.190.0.2 to 10.190.15.253
asia-southeast1 10.148.0.0/20 10.148.0.1 10.148.0.2 to 10.148.15.253
asia-southeast2 10.184.0.0/20 10.184.0.1 10.184.0.2 to 10.184.15.253
asia-southeast3 10.232.0.0/20 10.232.0.1 10.232.0.2 to 10.232.15.253
australia-southeast1 10.152.0.0/20 10.152.0.1 10.152.0.2 to 10.152.15.253
australia-southeast2 10.192.0.0/20 10.192.0.1 10.192.0.2 to 10.192.15.253
europe-central2 10.186.0.0/20 10.186.0.1 10.186.0.2 to 10.186.15.253
europe-north1 10.166.0.0/20 10.166.0.1 10.166.0.2 to 10.166.15.253
europe-north2 10.226.0.0/20 10.226.0.1 10.226.0.2 to 10.226.15.253
europe-west1 10.132.0.0/20 10.132.0.1 10.132.0.2 to 10.132.15.253
europe-west2 10.154.0.0/20 10.154.0.1 10.154.0.2 to 10.154.15.253
europe-west3 10.156.0.0/20 10.156.0.1 10.156.0.2 to 10.156.15.253
europe-west4 10.164.0.0/20 10.164.0.1 10.164.0.2 to 10.164.15.253
europe-west6 10.172.0.0/20 10.172.0.1 10.172.0.2 to 10.172.15.253
europe-west8 10.198.0.0/20 10.198.0.1 10.198.0.2 to 10.198.15.253
europe-west9 10.200.0.0/20 10.200.0.1 10.200.0.2 to 10.200.15.253
europe-west10 10.214.0.0/20 10.214.0.1 10.214.0.2 to 10.214.15.253
europe-west12 10.210.0.0/20 10.210.0.1 10.210.0.2 to 10.210.15.253
europe-southwest1 10.204.0.0/20 10.204.0.1 10.204.0.2 to 10.204.15.253
me-central1 10.212.0.0/20 10.212.0.1 10.212.0.2 to 10.212.15.253
me-central2 10.216.0.0/20 10.216.0.1 10.216.0.2 to 10.216.15.253
me-west1 10.208.0.0/20 10.208.0.1 10.208.0.2 to 10.208.15.253
northamerica-northeast1 10.162.0.0/20 10.162.0.1 10.162.0.2 to 10.162.15.253
northamerica-northeast2 10.188.0.0/20 10.188.0.1 10.188.0.2 to 10.188.15.253
northamerica-south1 10.224.0.0/20 10.224.0.1 10.224.0.2 to 10.224.15.253
southamerica-east1 10.158.0.0/20 10.158.0.1 10.158.0.2 to 10.158.15.253
southamerica-west1 10.194.0.0/20 10.194.0.1 10.194.0.2 to 10.194.15.253
us-central1 10.128.0.0/20 10.128.0.1 10.128.0.2 to 10.128.15.253
us-east1 10.142.0.0/20 10.142.0.1 10.142.0.2 to 10.142.15.253
us-east4 10.150.0.0/20 10.150.0.1 10.150.0.2 to 10.150.15.253
us-east5 10.202.0.0/20 10.202.0.1 10.202.0.2 to 10.202.15.253
us-south1 10.206.0.0/20 10.206.0.1 10.206.0.2 to 10.206.15.253
us-west1 10.138.0.0/20 10.138.0.1 10.138.0.2 to 10.138.15.253
us-west2 10.168.0.0/20 10.168.0.1 10.168.0.2 to 10.168.15.253
us-west3 10.180.0.0/20 10.180.0.1 10.180.0.2 to 10.180.15.253
us-west4 10.182.0.0/20 10.182.0.1 10.182.0.2 to 10.182.15.253

Additional considerations

Ensure that all subnet primary and secondary IPv4 address ranges don't conflict with the IPv4 address ranges that software running within your VMs needs to use. Some Google and third-party products use 172.17.0.0/16 for routing within the guest operating system. For example, the default Docker bridge network uses this range. If you depend on a product that uses 172.17.0.0/16, don't use it as any subnet primary and secondary IPv4 address range.

IPv6 subnet ranges

When you create a subnet with an IPv6 address range or enable IPv6 on an existing subnetin a VPC network, you choose an IPv6 access type for the subnet. The IPv6 access type determines whether the subnet is configured withinternal IPv6 addresses or external IPv6 addresses.

If a VM interface is connected to a subnet that has an IPv6 subnet range, you can configure IPv6 addresses on the VM. The IPv6 access type of the subnet determines whether the VM is assigned an internal IPv6 address or an external IPv6 address.

IPv6 specifications

Subnets with IPv6 address ranges are available in all regions, supporting both external and internal IPv6 subnet ranges.

Subnets with IPv6 address ranges have the following limitations:

External IPv6 specifications

External IPv6 address ranges are global unicast addresses (GUAs). External IPv6 addresses are available only in Premium Tier.

A subnet's external IPv6 address range comes from one of the following sources:

The resources that can use a subnet's external IPv6 address range depend on the source of the address range.

To check the source of a subnet's external IPv6 address range, you candescribe the subnet. If the ipv6AccessType property is EXTERNAL and the ipCollection property isn't empty, the subnet was created with an IPv6 BYOIP address range.

External /96 IPv6 address ranges can be assigned in the following ways:

Internal IPv6 specifications

Internal IPv6 subnet ranges aren't publicly routable and can't be reached from the internet. A subnet's internal IPv6 address range comes from one of the following sources:

Before you can use Google-provided ULA addresses as an internal IPv6 subnet range, you must first assign a /48 ULA range to the VPC network. When you assign an internal ULA range to a subnet, Google Cloud automatically selects an unused /64 IPv6 range from the VPC network's /48 ULA IPv6 range. If you want to prevent the assignment of a specific ULA range in a VPC network, you cancreate an internal range resourcefor the reserved part of the IPv6 address range.

Keep the following in mind when assigning a /48 ULA IPv6 range to a VPC network:

Internal subnet /64 IPv6 ranges can be used by the following, regardless of the type of addresses:

Internal /96 IPv6 address ranges can be assigned in the following ways:

IPv6 range assignment

IPv6 address ranges are assigned to networks, subnets, virtual machine instances (VMs), and forwarding rules.

Resource type Range size Details
VPC network /48 To enable an internal ULA range for a subnet, you must firstassign an internal IPv6 ULA range to the VPC network. A /48 ULA range from within fd20::/20 is assigned to the network. All internal ULA subnet ranges in the network are assigned from this /48 range. The /48 range can be automatically assigned, or you can select a specific range from within fd20::/20.
Subnet /64 The IPv6 access type setting controls whether the IPv6 addresses are internal or external. A subnet can have either internal or external IPv6 addresses, but not both. When you enable IPv6, the following occurs: If you enable internal IPv6 on a subnet, a /64 range of internal ULAs is assigned from your VPC network's/48 range. If you enable external IPv6 on a subnet, a /64 range of external GUAs is automatically assigned by Google Cloud. Google Cloud allocates each half of the/64 range for a specific purpose as follows: The /65 range that represents the first half of the subnet is allocated for VM instances. The /65 range that represents the second half of the subnet is allocated for Cloud Load Balancing. Alternatively, you can allocate an internal or external subnet range from an imported BYOIP IPv6 sub-prefix. For more information, seeBring your own IP.
VM instance /96 When you configure a dual-stack or IPv6-only network interface on a VM, the interface is assigned a /96 IP address range from the interface's subnet. Google Cloud provides the first IP address in the /96 range by using DHCPv6. Whether a VM network interface uses an internal or external IPv6/96 address range depends on the IPv6 access type of the interface's subnet.
Forwarding rule for an internal passthrough Network Load Balancer, external passthrough Network Load Balancer, or protocol forwarding /96 or specified by a BYOIP sub-prefix The IPv6 address range of a forwarding rule for internal protocol forwarding or an internal passthrough Network Load Balancer is an internal /96 IP address range from a subnet's internal IPv6 address range. Internal/96 IP address ranges can be selected automatically by Google Cloud or you canreserve a static regional internal IPv6 /96 address range. The IPv6 address range of a forwarding rule for external protocol forwarding or an external passthrough Network Load Balancer is one of the following: If using Google-provided external IPv6 addresses, the IPv6 address range is an external /96 address range selected automatically by Google Cloud from a subnet's external IPv6 address range. If using BYOIP external IPv6 addresses, the IPv6 address range comes from a BYOIP IPv6 address sub-prefix in forwarding rule creation mode. The size of the IPv6 range is determined by the allocatable prefix length of the sub-prefix.

Unusable addresses in IPv6 subnet ranges

The first and last /96 range of a subnet's internal /64 range cannot be specified manually because Google Cloud reserves the first and last /96 range of a subnet's internal /64 range for system use. You can manually specify any other valid /96 IPv6 range from the subnet's internal /64 range to be assigned to your VM network interfaces.

Unusable IPv6 address Description Example
The first /96 range from the subnet's internal /64 IPv6 range Reserved for system use fd20:db8::/96 from range fd20:db8::/64
The last /96 range from the subnet's internal /64 IPv6 range Reserved for system use fd20:db8:0:0:ffff:ffff::/96 from range fd20:db8::/64

What's next

Try it for yourself

If you're new to Google Cloud, create an account to evaluate how Cloud NAT performs in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

Try Cloud NAT free