Stay organized with collections Save and categorize content based on your preferences.
This page describes how to use static routing to create a Classic VPN gateway and one tunnel. This tunnel is either a policy-based or route-based tunnel.
With route-based VPN, you specify only the remote traffic selector. If you need to specify a local traffic selector, create a Cloud VPN tunnel that uses policy-based routing instead.
Classic VPN does not support IPv6.
Note: HA VPN does not support static routing. Caution: If you convert an auto mode VPC network to a custom mode VPC network, you might have to delete and re-create VPN tunnels that use policy-based routing if the tunnel relied on default values for local IP ranges. Changing the mode of a VPC network with active VPN tunnels can lead to outages. For more information, see considerations for auto mode VPC networks.For more information about Cloud VPN, see the following resources:
For best practices to consider before setting up Cloud VPN, see Best practices.
For more information about Cloud VPN, see the Cloud VPN overview.
For definitions of terms used on this page, see Key terms.
When you use the Google Cloud console to create a policy-based tunnel, Classic VPN performs the following tasks:
After you create a policy-based Classic VPN tunnel, the IP ranges you entered in the Remote network IP ranges field appear as Advertised IP ranges on the VPN tunnel details page.
When you use the Google Cloud console to create a route-based tunnel, Classic VPN performs the following tasks:
0.0.0.0/0
).When you use the Google Cloud CLI to create either a policy-based tunnel or a route-based tunnel, traffic selectors for the tunnel are defined in the same way. However, because the creation of custom static routes is done with separate commands, you have more control over those routes.
The number of CIDRs that you can specify in a traffic selector depends on the IKE version.
For important background information, see the following:
Before you beginSet up the following items in Google Cloud to make it easier to configure Cloud VPN:
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Note: If you don't plan to keep the resources that you create in this procedure, create a project instead of selecting an existing project. After you finish these steps, you can delete the project, removing all resources associated with the project.Verify that billing is enabled for your Google Cloud project.
Install the Google Cloud CLI.
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
To initialize the gcloud CLI, run the following command:
gcloud init
If you are using the Google Cloud CLI, set your project ID with the following command. The gcloud
instructions on this page assume that you have set your project ID before issuing commands.
gcloud config set project PROJECT_ID
You can also view a project ID that has already been set by running the following command:
gcloud config list --format='text(core.project)'
To perform this task, you must have been granted the following permissions or the following IAM roles.
Permissions
compute.targetVpnGateways.get
compute.targetVpnGateways.list
compute.targetVpnGateways.create
compute.targetVpnGateways.delete
compute.targetVpnGateways.get
compute.targetVpnGateways.list
compute.targetVpnGateways.use
compute.targetVpnGateways.setLabels
Roles
roles/compute.networkAdmin
Before creating a Classic VPN gateway and tunnel, create a Virtual Private Cloud (VPC) network and at least one subnet in the Google Cloud region where the Classic VPN gateway is located.
Configure the gateway
In the Google Cloud console, go to the VPN page.
If you are creating a gateway for the first time, click Create VPN connection.
Select the VPN setup wizard.
Select the Classic VPN option button.
Click Continue.
On the Create a VPN connection page, specify the following gateway settings:
Configure tunnels
For the new tunnel, in the Tunnels section, specify the following settings:
This rekeying issue is caused by a large Security Association (SA) payload size for the default set of AWS transform sets. This large payload size results in IP fragmentation of IKE packets on the AWS side, which Cloud VPN does not support.
For policy-based tunnels
Under Remote network IP ranges, provide a space-separated list of the IP ranges used by the peer network. This is the remote traffic selector, or the right side from the perspective of Cloud VPN.
After you create a policy-based Classic VPN tunnel, the IP ranges you entered in the Remote network IP ranges field appear as Advertised IP ranges on the VPN tunnel details page.
Under Local IP ranges, select one of the following methods:
For route-based tunnels
If you need to create more tunnels on the same gateway, click Add tunnel and repeat the previous step. You can also add more tunnels later.
Click Create.
1000
. You cannot set the priority of this automatically created route, but you can delete and replace it. If you need greater control over the priority of VPN routes, follow the gcloud CLI steps instead. gcloud
To create a Cloud VPN gateway, complete the following command sequence. In the commands, replace the following:
PROJECT_ID
: the ID of your projectNETWORK
: the name of your Google Cloud networkREGION
: the Google Cloud region where you create the gateway and tunnelGW_NAME
: the name of the gatewayGW_IP_NAME
: a name for the external IP address used by the gateway--target-vpn-gateway-region
is the region of the Classic VPN gateway to operate on. Its value should be the same as --region
. If not specified, this option is automatically set. This option overrides the default compute/region property value for this command invocation.Configure the gateway resources
Create the target VPN gateway object:
gcloud compute target-vpn-gateways create GW_NAME \ --network=NETWORK \ --region=REGION \ --project=PROJECT_ID
Reserve a regional external (static) IP address:
gcloud compute addresses create GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID
Note the IP address (so you can use it when you configure your peer VPN gateway):
gcloud compute addresses describe GW_IP_NAME \ --region=REGION \ --project=PROJECT_ID \ --format='flattened(address)'
Create three forwarding rules; these rules instruct Google Cloud to send ESP (IPsec), UDP 500, and UDP 4500 traffic to the gateway:
gcloud compute forwarding-rules create fr-GW_NAME-esp \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=ESP \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \ --load-balancing-scheme=EXTERNAL \ --network-tier=PREMIUM \ --ip-protocol=UDP \ --ports=4500 \ --address=GW_IP_NAME \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
Create the Cloud VPN tunnel
In the commands, replace the following:
TUNNEL_NAME
: a name for the tunnelON_PREM_IP
: the external IP address of the peer VPN gatewayIKE_VERS
: 1
for IKEv1 or 2
for IKEv2 Known issue: When configuring VPN tunnels to AWS, use the IKEv2 encryption protocol and select fewer transform sets on the AWS side; otherwise, the Cloud VPN tunnel can fail to rekey. For example, select a combination of single Phase 1 and Phase 2 encryption algorithms, integrity algorithms, and DH group numbers.
This rekeying issue is caused by a large SA payload size for the default set of AWS transform sets. This large payload size results in IP fragmentation of IKE packets on the AWS side, which Cloud VPN does not support.
SHARED_SECRET
: your pre-shared key (shared secret). The pre-shared key for the Cloud VPN tunnel must match the one used when you configure the counterpart tunnel on the peer VPN gateway. To generate a cryptographically strong pre-shared key, follow the directions at Generate a strong pre-shared key.PH1_ENCRYPT_ALGRTHS
: a comma-separated list of encryption algorithms that are supported for phase 1 IKE security association (SA) negotiations. You can list the algorithms in your order of preference.PH1_INTEGRITY_ALGRTHS
: a comma-separated list of integrity algorithms that are supported for phase 1 IKE SA negotiations. You can list the algorithms in your order of preference.PH1_PRF_ALGRTHS
: a comma-separated list of Pseudo-Random Function (PRF) algorithms that are supported for phase 1 IKE SA negotiations. You can list the algorithms in your order of preference.PH1_DH_GROUP
: a comma-separated list of Diffie-Hellman (DH) algorithms that are supported for phase 1 IKE SA negotiations. You can list the algorithms in your order of preference.PH2_ENCRYPT_ALGRTHS
: a comma-separated list of encryption algorithms that are supported for phase 2 IKE SA negotiations. You can list the algorithms in your order of preference.PH2_INTEGRITY_ALGRTHS
: a comma-separated list of integrity algorithms that are supported for phase 2 IKE SA negotiations. You can list the algorithms in your order of preference.PH2_PFS_ALGRTHS
: a comma-separated list of PFS algorithms that are supported for phase 2 IKE SA negotiations. You can list the algorithms in your order of preference.For policy-based VPN:
LOCAL_IP_RANGES
: a comma-delimited list of the Google Cloud IP ranges. For example, you can supply the CIDR block for each subnet in a VPC network. This is the left side from the perspective of Cloud VPN.REMOTE_IP_RANGES
: a comma-delimited list of the peer network IP ranges. This is the right side from the perspective of Cloud VPN.To configure a policy-based VPN tunnel, run the following command:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=LOCAL_IP_RANGES \ --remote-traffic-selector=REMOTE_IP_RANGES \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
For route-based VPN, both the local and remote traffic selectors are 0.0.0.0/0
as defined in routing options and traffic selectors.
To configure a route-based VPN tunnel, run the following command:
gcloud compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=0.0.0.0/0 \ --remote-traffic-selector=0.0.0.0/0 \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID
You can also configure cipher algorithms for both policy-based and route-based tunnels. For example, to configure cipher algorithms for a policy-based tunnel, run the following command:
gcloud beta compute vpn-tunnels create TUNNEL_NAME \ --peer-address=ON_PREM_IP \ --ike-version=IKE_VERS \ --shared-secret=SHARED_SECRET \ --local-traffic-selector=LOCAL_IP_RANGES \ --remote-traffic-selector=REMOTE_IP_RANGES \ --target-vpn-gateway=GW_NAME \ --region=REGION \ --project=PROJECT_ID \ --phase1-encryption=PH1_ENCRYPT_ALGRTHS \ --phase1-integrity=PH1_INTEGRITY_ALGRTHS \ --phase1-prf=PH1_PRF_ALGRTHS \ --phase1-dh=PH1_DH_GROUP \ --phase2-encryption=PH2_ENCRYPT_ALGRTHS \ --phase2-integrity=PH2_INTEGRITY_ALGRTHS \ --phase2-pfs=PH2_PFS_ALGRTHS
To learn more about the cipher algorithms supported by Cloud VPN, see Supported IKE ciphers.
Create a static route for each remote IP range that you specified in the --remote-traffic-selector
option in the previous step. Repeat this command for each remote IP range. Replace ROUTE_NAME
with a unique name for the route, and replace REMOTE_IP_RANGE
with the appropriate remote IP range.
gcloud compute routes create ROUTE_NAME \ --destination-range=REMOTE_IP_RANGE \ --next-hop-vpn-tunnel=TUNNEL_NAME \ --network=NETWORK \ --next-hop-vpn-tunnel-region=REGION \ --project=PROJECT_IDNote: The
gcloud
command to create a route uses the default priority of 1000
. If you need to create a higher priority route, use the --priority
flag with a lower number when you create the route. You cannot change the priority of a route after the route has been created; however, you can delete and replace the custom static route without needing to re-create the VPN tunnel. For details about how routes work in your VPC network, see Routes overview and Order of routes.Before you can use a new Cloud VPN gateway and its associated VPN tunnel, complete the following steps:
View your VPN routes by going to the project routing table and filtering for Next hop type:VPN tunnel
:
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-07 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4