Exemplo de API - Conectando dois VPCs usando VPN
O exemplo da API a seguir descreve como conectar dois VPCs criando um gateway VPN em cada VPC. Um gateway VPN pode conectar todas as sub-redes na zona na qual está implementado. Portanto, ter um gateway VPN em cada zona que você deseja interconectar faz com que as sub-redes em ambas as zonas atuem como se fossem uma única rede. Os endereços IP das sub-redes nos dois VPCs não devem se sobrepor.
É possível usar um gateway VPN para conectar dois VPCs. No entanto, recomenda-se usar o IBM Cloud Transit Gateway para conectividade entre VPCs. Para obter mais informações, consulte Introdução ao IBM Cloud Transit Gateway.
O diagrama a seguir mostra como interconectar três VPCs, o exemplo a seguir mostra como conectar apenas os dois primeiros. É possível repetir as etapas para conectar mais VPCs.
O exemplo a seguir assume que:
- Você já criou VPCs, sub-redes e instâncias de servidor virtual. Para obter mais informações sobre a criação de recursos da VPC, consulte Introdução à nuvem privada virtual (VPC).
- Você configurou seu ambiente de API e inicializou todas as variáveis necessárias.
Também é possível criar um gateway VPN e incluir conexões VPN usando a IU. Para obter instruções, consulte Criando um gateway VPN usando a IU.
Etapa 1. Criar um gateway VPN na primeira VPC
O gateway VPN é criado na zona que está associada à sub-rede selecionada. Para melhor desempenho, crie o gateway VPN em uma sub-rede sem quaisquer outros recursos da VPC para assegurar que IPs privados suficientes estejam disponíveis para o gateway. Um gateway de VPN precisa de 8 endereços IP privados para acomodar alta disponibilidade e upgrades contínuos.
O gateway VPN pode se conectar apenas a instâncias de servidor virtual na zona na qual está implementado. As instâncias em outras zonas não podem usar esse gateway VPN para se comunicar com a outra rede. Para a tolerância a falhas da zona, implemente um gateway VPN por zona.
Localize o ID de sub-rede usando o comando get subnet, em seguida, preencha a variável:
export SubnetId1=<your_subnet_id>
O comando a seguir implementa o gateway VPN no 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'"
}
}'
Saída de amostra:
{
"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"
}
}
Salve o id do primeiro gateway VPN, por exemplo:
export gwid1=<your_vpngateway_id>
O status do gateway aparece como pending enquanto o gateway VPN está sendo criado e o status se torna available quando a criação é concluída. A criação pode demorar alguns minutos.
É possível verificar o status do gateway com o comando a seguir:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Salve o public_ip.address do primeiro gateway VPN, por exemplo:
export gwaddress1=<your_vpngateway_public_ip>
Etapa 2. Criar um gateway VPN na segunda VPC
Localize o ID de sub-rede da segunda VPC usando o comando get subnet, em seguida, preencha a variável:
export SubnetId2=<your_subnet_id>
O comando a seguir implementa o gateway VPN no grupo de recursos Default. Se a segunda VPC pertencer a uma região diferente, certifique-se de atualizar a variável vpc_api_endpoint. Consulte a lista de terminais 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'"
}
}'
Saída de amostra:
{
"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"
}
}
Salve o id do segundo gateway VPN, por exemplo:
export gwid2=<your_vpngateway_id>
O status do gateway aparece como pending enquanto o gateway VPN está sendo criado e o status se torna available quando a criação é concluída. A criação pode demorar alguns minutos.
É possível verificar o status do gateway com o comando a seguir:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid2?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Salve o public_ip.address do segundo gateway VPN, por exemplo:
export gwaddress2=<your_vpngateway_public_ip>
Etapa 3. Criar uma conexão VPN do primeiro gateway VPN para o segundo gateway VPN
Ao criar a conexão para o gateway VPN do VPC 1, configure local_cidrs para as sub-redes no VPC 1 e configure peer_cidrs para as sub-redes no VPC 2. Separe vários CIDRs com vírgulas. Lembre-se de atualizar a variável
vpc_api_endpoint de acordo com a região na qual o gateway VPN está.
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'" ]
}'
Saída de amostra:
{
"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"
}
Etapa 4. Criar uma conexão VPN do segundo gateway VPN para o primeiro gateway VPN
Ao criar a conexão para o gateway VPN do VPC 2, configure local_cidrs para as sub-redes no VPC 2 e peer_cidrs para as sub-redes no VPC 1. Lembre-se de atualizar a variável vpc_api_endpoint de acordo com
a região na qual o gateway VPN está.
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'" ]
}'
Saída de amostra:
{
"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"
}
Etapa 5. Verificar a conectividade
É possível verificar o status da conexão VPN conforme a seguir:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1/connections?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Saída de amostra:
{
"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"
}
]
}
Depois que a conexão VPN for estabelecida, será possível acessar suas instâncias de servidor virtual por meio das sub-redes na VPC 1 para as na VPC 2 e vice-versa.