Ejemplo de API - Conexión a dos VPC mediante VPN
En el ejemplo de API siguiente se describe cómo conectar dos VPC mediante la creación de una pasarela VPN en cada VPC. Una pasarela VPN puede conectar todas las subredes de la zona donde está desplegada. Por lo tanto, si tiene una pasarela VPN en cada zona que desee interconectar, las subredes de ambas zonas actúan como si fueran una sola red. Las direcciones IP de las subredes de las dos VPC no se deben solapar.
Puede utilizar una pasarela VPN para conectar dos VPC. Sin embargo, se recomienda utilizar IBM Cloud Transit Gateway para la conectividad de VPC a VPC. Para obtener más información, consulte Iniciación a IBM Cloud Transit Gateway.
El siguiente diagrama muestra cómo interconectar tres VPC; el siguiente ejemplo muestra cómo conectar sólo las dos primeras. Puede repetir los pasos para conectar más VPC.
En este ejemplo se da por supuesto lo siguiente:
- Ya ha creado VPC, subredes e instancias de servidor virtual. Para obtener más información sobre la creación de recursos de VPC, consulte Iniciación a Virtual Private Cloud (VPC).
- Ha configurado el entorno de API e inicializado todas las variables necesarias.
También puede crear una pasarela VPN y añadir conexiones de VPN mediante la interfaz de usuario. Para obtener instrucciones, consulte Creación de una pasarela VPN mediante la interfaz de usuario.
Paso 1. Crear una pasarela VPN en el primer VPC
La pasarela VPN se crea en la zona que está asociada con la subred que seleccione. Para obtener el mejor rendimiento, cree la pasarela VPN en una subred sin ningún otro recurso de VPC para asegurarse de que haya suficientes IP privadas disponibles para la pasarela. Una pasarela VPN necesita 8 direcciones IP privadas para dar cabida a la alta disponibilidad y a las actualizaciones continuas.
La pasarela VPN sólo puede conectarse a instancias de servidor virtual en la zona en la que está desplegada. Las instancias de otras zonas no pueden utilizar esta pasarela VPN para comunicarse con la otra red. Para una tolerancia a errores en las zonas, despliegue una pasarela VPN por zona.
Busque el ID de subred utilizando el mandato get subnet y, a continuación, rellene la variable:
export SubnetId1=<your_subnet_id>
El mandato siguiente despliega la pasarela VPN en el grupo de recursos Default.
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "vpn-gateway-1",
"subnet": {
"id": "'$SubnetId1'"
}
}'
Salida de ejemplo:
{
"id": "0738-7fd72524-6e2d-49a6-b975-0071efccd89a",
"crn": "crn:v1:bluemix:public:is:us-south:a/a1234567:vpn:0738-7fd72524-6e2d-49a6-b975-0071efccd89a",
"name": "vpn-gateway-1",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-7fd72524-6e2d-49a6-b975-0071efccd89a",
"created_at": "2018-07-06T19:19:28.694388Z",
"status": "pending",
"public_ip": {
"address": "169.61.161.167"
},
"subnet": {
"id": "0738-f45ee0be-cf3f-41ca-a279-23139110aa58",
"name": "subnet-1",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0738-f45ee0be-cf3f-41ca-a279-23139110aa58"
},
"resource_group": {
"id": "d28a2jsiw1pl2g22q8462tyr321416z2",
"href": "https://resource-manager.cloud.ibm.com/v1/resource_groups/d28a2jsiw1pl2g22q8462tyr321416z2"
}
}
Guarde el id de la primera pasarela VPN, por ejemplo:
export gwid1=<your_vpngateway_id>
El estado de la pasarela aparece como pending mientras se crea la pasarela VPN, y el estado pasa a ser available cuando se completa la creación. La creación puede tardar unos minutos.
Puede comprobar el estado de la pasarela con el mandato siguiente:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Guarde el public_ip.address de la primera pasarela VPN, por ejemplo:
export gwaddress1=<your_vpngateway_public_ip>
Paso 2. Crear una pasarela VPN en el segundo VPC
Busque el ID de subred de la segunda VPC utilizando el mandato get subnet y, a continuación, rellene la variable:
export SubnetId2=<your_subnet_id>
El mandato siguiente despliega la pasarela VPN en el grupo de recursos Default. Si la segunda VPC pertenece a una región distinta, asegúrese de actualizar la variable vpc_api_endpoint. Consulte la lista de puntos finales de API.
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "vpn-gateway-2",
"subnet": {
"id": "'$SubnetId2'"
}
}'
Salida de ejemplo:
{
"id": "0738-f72559a3-2fac-4958-b937-54474e6a8a8d",
"crn": "crn:v1:bluemix:public:is:us-south:a/a1234567::vpn:0738-f72559a3-2fac-4958-b937-54474e6a8a8d",
"name": "vpn-gateway-2",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-f72559a3-2fac-4958-b937-54474e6a8a8d",
"created_at": "2018-07-06T19:33:23.789675Z",
"status": "pending",
"public_ip": {
"address": "169.61.161.150"
},
"subnet": {
"id": "0738-f72c7f7c-0fa5-42d1-9bdc-9e0acad53cb4",
"name": "subnet-2",
"href": "https://us-south.iaas.cloud.ibm.com/v1/subnets/0738-f72c7f7c-0fa5-42d1-9bdc-9e0acad53cb4"
},
"resource_group": {
"id": "d28a2jsiw1pl2g22q8462tyr321416z2",
"href": "https://resource-manager.cloud.ibm.com/v1/resource_groups/d28a2jsiw1pl2g22q8462tyr321416z2"
}
}
Guarde el id de la segunda pasarela VPN, por ejemplo:
export gwid2=<your_vpngateway_id>
El estado de la pasarela aparece como pending mientras se crea la pasarela VPN, y el estado pasa a ser available cuando se completa la creación. La creación puede tardar unos minutos.
Puede comprobar el estado de la pasarela con el mandato siguiente:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid2?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Guarde el public_ip.address de la segunda pasarela VPN, por ejemplo:
export gwaddress2=<your_vpngateway_public_ip>
Paso 3. Crear una conexión VPN desde la primera pasarela VPN a la segunda pasarela VPN
Cuando cree la conexión para la pasarela VPN de VPC 1, establezca local_cidrs en las subredes en VPC 1 y establezca peer_cidrs en las subredes en VPC 2. Si hay varios CIDR, sepárelos con comas. Recuerde actualizar la
variable vpc_api_endpoint en función de la región en la que se encuentre la pasarela VPN.
export Vpc1Subnets=<your_vpc1_subnets>
export Vpc2Subnets=<your_vpc2_subnets>
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways/$gwid1/connections?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "vpn-connection-to-vpn-gateway-2",
"peer_address": "'$gwaddress2'",
"psk": "VPNDemoPassword",
"local_cidrs": [ "'$Vpc1Subnets'" ],
"peer_cidrs": [ "'$Vpc2Subnets'" ]
}'
Salida de ejemplo:
{
"id": "0738-a252d380-0784-45ff-8fc0-c2b58e446b4d",
"name": "vpn-connection-to-vpn-gateway-2",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-7fd72524-6e2d-49a6-b975-0071efccd89a/connections/0738-a252d380-0784-45ff-8fc0-c2b58e446b4d",
"local_cidrs": [
"192.168.100.0/24"
],
"peer_cidrs": [
"192.168.0.0/24"
],
"peer_address": "169.61.161.150",
"admin_state_up": true,
"psk": "VPNDemoPassword",
"dead_peer_detection": {
"action": "none",
"interval": 30,
"timeout": 120
},
"created_at": "2018-07-06T19:50:49.252072Z",
"route_mode": "policy",
"authentication_mode": "psk",
"status": "down"
}
Paso 4. Crear una conexión VPN desde la segunda pasarela VPN a la primera pasarela VPN
Cuando cree la conexión para la pasarela VPN de VPC 2, establezca local_cidrs en las subredes en VPC 2 y establezca peer_cidrs en las subredes en VPC 1. Recuerde actualizar la variable vpc_api_endpoint en función de la región en la que se encuentre la pasarela VPN.
curl -X POST "$vpc_api_endpoint/v1/vpn_gateways/$gwid2/connections?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token" \
-d '{
"name": "vpn-connection-to-vpn-gateway-1",
"peer_address": "'$gwaddress1'",
"psk": "VPNDemoPassword",
"local_cidrs": [ "'$Vpc2Subnets'" ],
"peer_cidrs": [ "'$Vpc1Subnets'" ]
}'
Salida de ejemplo:
{
"id": "0738-1d4dbacq-673d-2qed-hf68-858961739gf0",
"name": "vpn-connection-to-vpn-gateway-1",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-f72559a3-2fac-4958-b937-54474e6a8a8d/connections/0738-1d4dbacq-673d-2qed-hf68-858961739gf0",
"local_cidrs": [
"192.168.100.0/24"
],
"peer_cidrs": [
"192.168.100.0/24"
],
"peer_address": "169.61.161.167",
"admin_state_up": true,
"psk": "VPNDemoPassword",
"dead_peer_detection": {
"action": "none",
"interval": 30,
"timeout": 120
},
"created_at": "2018-07-06T19:54:14.961597Z",
"route_mode": "policy",
"authentication_mode": "psk",
"status": "down"
}
Paso 5. Verificación de la conectividad
Puede comprobar el estado de la conexión VPN como se indica a continuación:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1/connections?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Salida de ejemplo:
{
"first": {
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-7fd72524-6e2d-49a6-b975-0071efccd89a/connections?limit=10"
},
"limit": 10,
"connections": [
{
"id": "0738-a252d380-0784-45ff-8fc0-c2b58e446b4d",
"name": "vpn-connection-to-vpn-gateway-2",
"href": "https://us-south.iaas.cloud.ibm.com/v1/vpn_gateways/0738-7fd72524-6e2d-49a6-b975-0071efccd89a/connections/0738-a252d380-0784-45ff-8fc0-c2b58e446b4d",
"local_cidrs": [
"192.168.100.0/24"
],
"peer_cidrs": [
"192.168.0.0/24"
],
"peer_address": "169.61.161.150",
"admin_state_up": true,
"psk": "VPNDemoPassword",
"dead_peer_detection": {
"action": "none",
"interval": 30,
"timeout": 120
},
"created_at": "2018-07-06T19:50:49.252072Z",
"route_mode": "policy",
"authentication_mode": "psk",
"status": "up"
}
]
}
Una vez establecida la conexión de VPN, puede acceder a las instancias de servidor virtual desde las subredes en VPC 1 a las de VPC 2 y viceversa.