If your source database is inside a VPN (in AWS, for example, or your
on-premises VPN), you also need to use a VPN on the destination side to connect
to the source.
There are many VPN products you can use. The steps to configure VPNs vary from
one product to another, but all of them are fundamentally similar. This section
contains examples using AWS and Google Cloud VPNs.
In Google Cloud console > Hybrid Connectivity > VPN:
Click Create VPN connection.
Select your VPC network and region.
For the Cloud VPN, use the static IP address you reserved earlier
in this procedure.
Use a Pre-shared key and key type from the AWS
configuration you downloaded earlier in this procedure.
Select the Route based routing option and add two tunnels; for each
tunnel's Remote network IP range field, use an IP address for the
Static Route Configuration option from the
IP Sec Tunnel sections of the AWS configuration file you
downloaded earlier in this procedure.
Click Create.Remote network IP range
In the AWS RDS console:
Select a security group.
Add inbound firewall rules to allow all protocols and ports from the
Cloud VPN.
The VPN tunnels should begin communicating shortly. On the AWS side, in the
VPC Dashboard, the tunnel statuses are UP. On the GCP
side, view the traffic between the VPNs in the
Cloud Logging console in the
Cloud VPN gateway project.
Example 2: AWS with Google Cloud HA VPN with dynamic routes
To get VPC Peering with an HA VPN (dynamic routes) to AWS, you need to export
BGP routes to the AlloyDB peered VPC, and create a custom advertised route
in Cloud Router for the AlloyDB peered VPC imported route. At that point,
Cloud Router is advertising AWS routes to the AlloyDB VPC and the other
way around. The firewall rules on both sides also need to match the AlloyDB
peering route CIDR.
On the AWS side, you can follow the first three steps in Example 1,
except select Dynamic instead of Static under Routing options.
Select your AlloyDB VPC Peering configuration in the Console
and note the Destination IP ranges under IMPORTED ROUTES.
For more information, see Importing and exporting custom routes.
Edit this VPC peering and check Import Custom Routes and
Export Custom Routes in the VPC Peering connection details,
and click SAVE.
The peering now receives dynamic routes from your VPC like the routes
coming from BGP peers. This allows traffic from the VPN to the peered network.
However, Cloud Router is not yet advertising this route to other networks.
To do so, you need to add custom advertised routes in the Cloud Router so
that your VPC advertises the imported routes to other networks. For more
information, see Importing and exporting custom routes.
Add your DESTINATION_IP_RANGE custom IP range as a custom
route in the Cloud Router configuration advertised routes. BGP peered
networks are now receiving advertisements of the imported AlloyDB
network routes, DESTINATION_IP_RANGE. Traffic on those
VPN-connected networks bound for the AlloyDB peered VPC are now
routed through the VPN tunnel.
Allow routes to propagate in AWS route tables. Make sure AWS route tables
for the subnets that contain your source database contain an entry for the
DESTINATION_IP_RANGE range that routes to the VPN Virtual Private
Gateway.
Add a security group firewall inbound rule to allow traffic for
DESTINATION_IP_RANGETCP port 5432.
Connectivity can now be established.
[[["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-25 UTC."],[[["\u003cp\u003eTo connect a source database within a VPN (like AWS or on-premises) to an AlloyDB destination, a VPN must also be established on the destination side.\u003c/p\u003e\n"],["\u003cp\u003eThe source database server's firewall needs to be configured to allow traffic from the internal IP range designated for the private service connection of the AlloyDB destination's VPC network.\u003c/p\u003e\n"],["\u003cp\u003eSetting up a VPN between AWS and Google Cloud can be achieved using either static routing (Classic VPN) or dynamic routing (HA VPN), each with specific configuration steps on both platforms.\u003c/p\u003e\n"],["\u003cp\u003eWhen using HA VPN with dynamic routes, you must export BGP routes to the AlloyDB peered VPC and create a custom advertised route in Cloud Router for the imported route.\u003c/p\u003e\n"],["\u003cp\u003eWith dynamic routes, ensure that firewall rules on both the AWS and Google cloud sides match the AlloyDB peering route CIDR, and that routes are allowed to propagate in the AWS route tables.\u003c/p\u003e\n"]]],[],null,["# Configure connectivity using VPNs\n\n\u003cbr /\u003e\n\n[MySQL](/database-migration/docs/mysql/configure-connectivity-vpns \"View this page for the MySQL version of Database Migration Service.\") \\| [PostgreSQL](/database-migration/docs/postgres/configure-connectivity-vpns \"View this page for the PostgreSQL version of Database Migration Service.\") \\| PostgreSQL to AlloyDB\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nOverview\n--------\n\nIf your source database is inside a VPN (in AWS, for example, or your\non-premises VPN), you also need to use a VPN on the destination side to connect\nto the source.\n\nThere are many VPN products you can use. The steps to configure VPNs vary from\none product to another, but all of them are fundamentally similar. This section\ncontains examples using AWS and Google Cloud VPNs.\n\nThe source database server's firewall must be configured to allow the entire **internal\nIP range** allocated for the **private service connection** of the\n[VPC network that the AlloyDB destination instance is going to use](/database-migration/docs/postgresql-to-alloydb/create-migration-job#dest).\n\nTo find the **internal IP range** in the console:\n\n1. [Go to the VPC networks page](https://console.cloud.google.com/networking/networks/list) in the Google Cloud console.\n\n2. Select the VPC network that you want to use.\n\n3. Select **Private services access** \\\u003e **Allocated IP ranges for services**.\n\n4. Find the **Internal IP range** associated with the connection created by **servicenetworking-googleapis-com**.\n\n| Note: To use Virtual Private Cloud networking, you must enable the [Service Networking API](https://console.cloud.google.com/apis/library/servicenetworking.googleapis.com) for your Google Cloud project.\n\nExample 1: AWS with Google Cloud Classic VPN with static routes\n---------------------------------------------------------------\n\nFind more complete, step-by-step documentation in the following links:\n\n- On the AWS side, set up a [Site to Site VPN](https://docs.aws.amazon.com/vpn/latest/s2svpn/SetUpVPNConnections.html).\n- On the Google Cloud side, create a [Cloud VPN](/vpn/docs/how-to/creating-static-vpns) using static routing.\n\n\u003cbr /\u003e\n\nPut together, the overall sequence of steps looks like the following:\n\n1. In Google Cloud console \\\u003e VPC Networks \\\u003e External IP addresses, reserve a static IP address to use for the Cloud VPN.\n2. In the AWS VPC console:\n 1. Create a customer gateway.\n 2. Create a new virtual private gateway or add an existing one to the VPC associated with your database.\n 3. In **Routes Tables** add **route propagation**:\n 4. Click **Edit** , check the **propagate** checkbox and **Save** to add the IP address range of your Google Cloud VPC network as the destination range.\n3. In the AWS VPC console, create the VPN:\n 1. Under **VPN Connections** , select **Site-to-site VPN Connections**.\n 2. Select **Create VPN Connection**.\n 3. Enter a name for the VPN connection.\n 4. For **Virtual Private Gateway**, select the private gateway that you created or selected earlier in this procedure.\n 5. For **Customer Gateway**, select the customer gateway that you created earlier in this procedure.\n 6. For **Routing Options** , select **Static**, and specify the static IP address you reserved for the Cloud VPN as a CIDR (add /32).\n 7. Download the configuration to save the settings.\n 1. Save the file as **Default**.\n 2. Find the sections **IP Sec Tunnels** #1 and #2.\n 3. Note the IKE version and **Pre-Shared Key** for each tunnel.\n 4. Note the IP address for the **Virtual Private Gateway** for each tunnel.\n 5. Note the IP address for the **Static Route Configuration option** for each tunnel.\n4. In Google Cloud, create a [Classic VPN using static routing](/vpn/docs/how-to/creating-static-vpns).\n 1. In Google Cloud console \\\u003e Hybrid Connectivity \\\u003e VPN:\n 2. Click **Create VPN connection** .\n 1. Select your VPC network and region.\n 2. For the Cloud VPN, use the static IP address you reserved earlier in this procedure.\n 3. Use a `Pre-shared key` and key type from the AWS configuration you downloaded earlier in this procedure.\n 4. Select the **Route based** routing option and add two tunnels; for each tunnel's **Remote network IP range** field, use an IP address for the **Static Route Configuration option** from the `IP Sec Tunnel` sections of the AWS configuration file you downloaded earlier in this procedure.\n 5. Click **Create** .**Remote network IP range**\n\n\u003c!-- --\u003e\n\n5. In the AWS RDS console:\n 1. Select a security group.\n 2. Add inbound firewall rules to allow all protocols and ports from the Cloud VPN.\n\nThe VPN tunnels should begin communicating shortly. On the AWS side, in the\nVPC Dashboard, the tunnel statuses are `UP`. On the GCP\nside, view the traffic between the VPNs in the\n[Cloud Logging](https://console.cloud.google.com/logs) console in the\n`Cloud VPN gateway` project.\n\nExample 2: AWS with Google Cloud HA VPN with dynamic routes\n-----------------------------------------------------------\n\nTo get VPC Peering with an HA VPN (dynamic routes) to AWS, you need to export BGP routes to the AlloyDB peered VPC, and create a custom advertised route in Cloud Router for the AlloyDB peered VPC imported route. At that point, Cloud Router is advertising AWS routes to the AlloyDB VPC and the other way around. The firewall rules on both sides also need to match the AlloyDB peering route CIDR.\n\nOn the AWS side, you can follow the first three steps in [Example 1](#static-routes),\nexcept select **Dynamic** instead of **Static** under **Routing options**.\n\n1. Select your AlloyDB VPC Peering configuration in the [Console](https://console.cloud.google.com/networking/peering) and note the **Destination IP ranges** under **IMPORTED ROUTES** . For more information, see [Importing and exporting custom routes](/vpc/docs/vpc-peering#importing-exporting-routes).\n2. Edit this VPC peering and check `Import Custom Routes` and `Export Custom Routes` in the VPC Peering connection details, and click **SAVE** .\n\n The peering now receives dynamic routes from your VPC like the routes\n coming from BGP peers. This allows traffic from the VPN to the peered network.\n However, Cloud Router is not yet advertising this route to other networks.\n To do so, you need to add custom advertised routes in the Cloud Router so\n that your VPC advertises the imported routes to other networks. For more\n information, see [Importing and exporting custom routes](/network-connectivity/docs/router/concepts/advertised-routes#overview-am).\n3. Add your \u003cvar translate=\"no\"\u003eDESTINATION_IP_RANGE\u003c/var\u003e custom IP range as a custom route in the Cloud Router configuration advertised routes. BGP peered networks are now receiving advertisements of the **imported AlloyDB\n network routes** , \u003cvar translate=\"no\"\u003eDESTINATION_IP_RANGE\u003c/var\u003e. Traffic on those VPN-connected networks bound for the AlloyDB peered VPC are now routed through the VPN tunnel.\n4. Allow routes to propagate in AWS route tables. Make sure AWS route tables for the subnets that contain your source database contain an entry for the \u003cvar translate=\"no\"\u003eDESTINATION_IP_RANGE\u003c/var\u003e range that routes to the VPN Virtual Private Gateway.\n5. Add a security group firewall inbound rule to allow traffic for \u003cvar translate=\"no\"\u003eDESTINATION_IP_RANGE\u003c/var\u003e `TCP port 5432`. Connectivity can now be established."]]