Esempio di API - Collegamento di due VPC tramite VPN
Il seguente esempio di API illustra come collegare due VPC creando un gateway VPN in ciascuna di esse. Un gateway VPN può collegare tutte le sottoreti nella zona in cui è distribuito. Pertanto, disporre di un gateway VPN in ogni zona che vuoi interconnettere fa sì che le sottoreti in entrambe le zone agiscano come se fossero una singola rete. Gli indirizzi IP delle sottoreti nei due VPC non devono sovrapporsi.
È possibile utilizzare un gateway VPN per collegare due VPC. Si consiglia tuttavia di utilizzare IBM Cloud Transit Gateway per la connettività da VPC a VPC. Per ulteriori informazioni, consultare la guida introduttiva su IBM Cloud Transit Gateway.
Il seguente diagramma mostra come interconnettere tre VPC; il seguente esempio mostra come connettere solo i primi due. È possibile ripetere i passi per collegare più VPC.
Il seguente esempio presuppone che:
- Hai già creato VPC, sottoreti e istanze del server virtuale. Per ulteriori informazioni sulla creazione di risorse VPC, consulta la guida "Introduzione a Virtual Private Cloud(VPC) ".
- Hai configurato il tuo ambiente API e inizializzato tutte le variabili necessarie.
Puoi inoltre creare un gateway VPN e aggiungere connessioni VPN utilizzando l'IU. Per istruzioni, vedi Creazione di un gateway VPN utilizzando l'IU.
Passo 1. Crea un gateway VPN nel primo VPC
Il gateway VPN viene creato nella zona associata alla sottorete da te selezionata. Per ottenere prestazioni ottimali, creare il gateway VPN in una sottorete priva di altre risorse VPC, in modo da garantire che siano disponibili indirizzi IP privati sufficienti per il gateway. Un gateway VPN ha bisogno di 8 indirizzi IP privati per supportare l'alta disponibilità e gli upgrade in sequenza.
Il gateway VPN può connettersi solo alle istanze del server virtuale nella zona in cui è distribuito. Le istanze in altre zone non possono utilizzare questo gateway VPN per comunicare con l'altra rete. Per la tolleranza di errore di zona, distribuisci un gateway VPN per ogni zona.
Trova l'ID sottorete utilizzando il comando get subnet e popola la variabile:
export SubnetId1=<your_subnet_id>
Il seguente comando distribuisce il gateway VPN nel gruppo di risorse 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'"
}
}'
Output di esempio:
{
"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"
}
}
Salvare il id del primo gateway VPN, ad esempio:
export gwid1=<your_vpngateway_id>
Lo stato del gateway si presenta come pending mentre viene creato il gateway VPN e lo stato diventa available una volta completata la creazione. La creazione potrebbe richiedere alcuni minuti.
Puoi controllare lo stato del gateway con il seguente comando:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Salvare il public_ip.address del primo gateway VPN, ad esempio:
export gwaddress1=<your_vpngateway_public_ip>
Passo 2. Creare un gateway VPN nel secondo VPC
Trova l'ID sottorete del secondo VPC utilizzando il comando get subnet e popola la variabile:
export SubnetId2=<your_subnet_id>
Il seguente comando distribuisce il gateway VPN nel gruppo di risorse Default. Se il secondo VPC appartiene a una regione differente, assicurati di aggiornare la variabile vpc_api_endpoint. Vedi l'elenco di endpoint 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'"
}
}'
Output di esempio:
{
"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"
}
}
Salva il id del secondo gateway VPN, ad esempio:
export gwid2=<your_vpngateway_id>
Lo stato del gateway si presenta come pending mentre viene creato il gateway VPN e lo stato diventa available una volta completata la creazione. La creazione potrebbe richiedere alcuni minuti.
Puoi controllare lo stato del gateway con il seguente comando:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid2?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Salva il public_ip.address del secondo gateway VPN, ad esempio:
export gwaddress2=<your_vpngateway_public_ip>
Passo 3. Creare una connessione VPN dal primo gateway VPN al secondo gateway VPN
Quando crei la connessione per il gateway VPN di VPC 1, imposta local_cidrs sulle sottoreti su VPC 1 e imposta peer_cidrs sulle sottoreti su VPC 2. Separare i diversi CIDR con delle virgole. Ricordati di aggiornare
la variabile vpc_api_endpoint a seconda della regione in cui si trova il gateway 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'" ]
}'
Output di esempio:
{
"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"
}
Passo 4. Creare una connessione VPN dal secondo gateway VPN al primo gateway VPN
Quando crei la connessione per il gateway VPN di VPC 2, imposta local_cidrs sulle sottoreti su VPC 2 e peer_cidrs sulle sottoreti su VPC 1. Ricordati di aggiornare la variabile vpc_api_endpoint a seconda
della regione in cui si trova il gateway 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'" ]
}'
Output di esempio:
{
"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"
}
Passo 5. Verifica connettività
Puoi controllare lo stato della connessione VPN nel seguente modo:
curl -X GET "$vpc_api_endpoint/v1/vpn_gateways/$gwid1/connections?version=$api_version&generation=2" \
-H "Authorization: Bearer $iam_token"
Output di esempio:
{
"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 volta stabilita la connessione VPN, puoi raggiungere le tue istanze del server virtuale dalle sottoreti in VPC 1 a quelle in VPC 2 e viceversa.