Configurer l'accès Internet pour les VM de charge de travail

Le service réseau d'accès Internet pour les charges de travail VMware dans Google Cloud VMware Engine se configure par région. Vous pouvez diriger le trafic Internet en provenance de vos VM de charge de travail à l'aide de la périphérie Internet de Google Cloud ou d'une connexion sur site.

Les VM de charge de travail pouvant accéder à Internet peuvent également accéder aux services Google Cloud à l'aide de l'accès privé à Google. L'accès aux services Google Cloud via l'accès privé à Google reste confiné aux seuls réseaux Google Cloud et n'est jamais exposé à l'Internet public.

Le service réseau d'accès Internet est compatible avec les éléments suivants:

  • Jusqu'à 100 adresses IP publiques pour chaque région
  • Jusqu'à 300 règles de pare-feu par table de pare-feu
  • Débit pouvant atteindre 2 Gbit/s sur 128 000 connexions simultanées pour chaque région
  • Protocoles TCP, UDP et ICMP

Le service réseau d'accès Internet n'est pas compatible avec la fonctionnalité ALG (Application Level Gateway).

Avant de commencer

Pour modifier les paramètres d'accès à Internet de votre cloud privé, vous devez disposer d'un accès administrateur à VMware Engine.

Pour activer l'accès à Internet, vous avez besoin d'une plage d'adresses CIDR des services Edge. Lorsque vous activez l'accès à Internet ou les services réseau d'adresse IP publique, les passerelles se déploient dans le contexte du locataire de services.

Utilisez la plage d'adresses CIDR des services Edge pour adresser les passerelles IP Internet et publiques de VMware Engine. La plage d'adresses doit répondre aux exigences suivantes :

  • Respecter la RFC 1918 en tant que plage privée.
  • Ne chevaucher aucune autre plage d'adresses VMware Engine, telle que la plage d'adresses utilisée pour les dispositifs de gestion ou les segments NSX-T.
  • Ne chevaucher aucune plage d'adresses annoncée sur VMware Engine, comme celles utilisées pour les sous-réseaux de cloud privé virtuel (VPC) ou les réseaux sur site.
  • Dédiez une plage d'adresses IP avec un masque de sous-réseau de 26 bits (/26).

Conditions requises pour gcloud et l'API

Pour gérer vos ressources VMware Engine à l'aide de l'outil de ligne de commande gcloud ou de l'API, nous vous recommandons de configurer les outils comme décrit ci-dessous.

gcloud

  1. Définissez votre ID de projet par défaut :

    gcloud config set project PROJECT_ID
    
  2. Définissez une région et/ou une zone par défaut:

    gcloud config set compute/region REGION
    gcloud config set compute/zone ZONE

Pour en savoir plus sur l'outil gcloud vmware, consultez la documentation de référence de Cloud SDK Cloud.

API

Les exemples d'API de cette documentation utilisent l'outil de ligne de commande cURL pour interroger l'API. La requête cURL requiert un jeton d'accès valide. Il existe de nombreuses façons d'obtenir un jeton d'accès valide. Les étapes suivantes font appel à l'outil gcloud pour générer un jeton d'accès:

  1. Se connecter à Google Cloud

    gcloud auth login
    
  2. Générer un jeton d'accès et l'exporter vers TOKEN

    export TOKEN=`gcloud auth print-access-token`
    
  3. Vérifier que TOKEN est correctement défini

    echo $TOKEN
    
    Output:
    TOKEN
    

À présent, utilisez le jeton d'autorisation dans vos requêtes adressées à l'API. Exemple :

curl -X GET -H "Authorization: Bearer \"$TOKEN\""  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

Les exemples de code Python présentés dans cette documentation utilisent la bibliothèque VMware Engine pour communiquer avec l'API. Pour que vous puissiez utiliser cette approche, la bibliothèque doit être installée et les identifiants par défaut de l'application doivent être configurés.

  1. Télécharger et installer la bibliothèque Python

     pip install google-cloud-vmwareengine
    
  2. Configurez les informations ADC en exécutant ces commandes dans votre shell.

      gcloud auth application-default login
    

    ou utiliser un fichier de clé de compte de service

      export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

Pour en savoir plus sur la bibliothèque, consultez la page de référence ou les exemples de code sur GitHub.

Configurer le service d'accès à Internet

Vous pouvez autoriser vos VM de charge de travail à accéder à Internet en activant le service réseau d'accès à Internet. Par défaut, le service réseau d'accès à Internet est désactivé.

Activer le service d'accès à Internet dans une région

Console

Pour activer le service d'accès à Internet dans une région, procédez comme suit :

  1. Accéder au portail VMware Engine
  2. Accédez à Réseau > Paramètres régionaux.
  3. Sur la ligne correspondant à la région qui vous intéresse, sélectionnez Modifier. Si la région n'est pas répertoriée dans le tableau récapitulatif, ajoutez-la en cliquant sur Ajouter une région.
  4. Appuyez sur le bouton Accès Internet pour le faire basculer sur Activé.
    • Vous pouvez activer l'accès Internet et laisser le service d'adresse IP publique désactivé. Dans ce cas, le VPN point à site et l'allocation d'adresses IP publiques ne sont pas disponibles.
  5. Dans le champ Edge Services CIDR (CIDR des services Edge), saisissez la plage d'adresses à utiliser pour adresser la passerelle Internet VMware Engine (plage d'adresses /26).
  6. Cliquez sur Envoyer.

L'état du service passe à Activé lorsque l'opération est terminée, généralement après quelques minutes.

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour créer une règle de réseau:

gcloud vmware network-policies create NETWORK_POLICY_NAME \
    --vmware-engine-network projects/PROJECT_ID/locations/LOCATIONS/vmwareEngineNetworks/NETWORK_NAME \
    --edge-services-cidr IP_RANGE \
    --location REGION --internet-access

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau. Elle doit être au format REGION-default.
  • NETWORK_NAME: réseau auquel cette règle de réseau s'applique
  • IP_RANGE: plage CIDR à utiliser pour l'accès à Internet et les passerelles d'accès aux adresses IP externes, au format CIDR. Un bloc CIDR RFC 1918 avec le préfixe "/26" est requis.
  • REGION: région du réseau

API

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies?networkPolicyId=NETWORK_POLICY_NAME -d "{
  "vmwareEngineNetwork":"projects/PROJECT_ID/locations/REGION/vmwareEngineNetworks/NETWORK_NAME",
  "edgeServiceCidr":IP_RANGE,
  "internetAccess: {
    "enabled": true
   },
   "externalIp": {
     "enabled": true
   }
}"

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau. Elle doit être au format REGION-default.
  • PROJECT_ID : ID du projet pour cette requête
  • REGION: région du réseau
  • IP_RANGE: plage CIDR à utiliser pour l'accès à Internet et les passerelles d'accès aux adresses IP externes, au format CIDR. Un bloc CIDR RFC 1918 avec le préfixe "/26" est requis.
  • NETWORK_NAME: réseau auquel cette règle de réseau s'applique, doit être au format >REGION-default

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def create_network_policy(
    project_id: str,
    region: str,
    ip_range: str,
    internet_access: bool,
    external_ip: bool,
) -> operation.Operation:
    """
    Creates a new network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1"
        ip_range: the CIDR range to use for internet access and external IP access gateways,
            in CIDR notation. An RFC 1918 CIDR block with a "/26" suffix is required.
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.

    Raises:
        ValueError if the provided ip_range doesn't end with /26.
    """
    if not ip_range.endswith("/26"):
        raise ValueError(
            "The ip_range needs to be an RFC 1918 CIDR block with a '/26' suffix"
        )

    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.edge_services_cidr = ip_range
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request = vmwareengine_v1.CreateNetworkPolicyRequest()
    request.network_policy = network_policy
    request.parent = f"projects/{project_id}/locations/{region}"
    request.network_policy_id = f"{region}-default"

    client = vmwareengine_v1.VmwareEngineClient()
    return client.create_network_policy(request)

Désactiver le service d'accès à Internet dans une région

Pour désactiver le service d'accès à Internet dans une région, procédez comme suit :

Console

  1. Accéder au portail VMware Engine
  2. Accédez à Réseau > Paramètres régionaux.
  3. Sur la ligne correspondant à la région qui vous intéresse, sélectionnez Modifier.
  4. Basculez le bouton Accès Internet sur Désactivé.
    • Vous devez désactiver le service d'adresse IP publique avant de pouvoir désactiver l'accès Internet.
    • Vous devez supprimer toutes les adresses IP publiques allouées et les passerelles VPN point à site pour pouvoir désactiver le service d'adresse IP publique.
  5. Cliquez sur Envoyer.

L'état du service passe à Désactivé lorsque l'opération est terminée, généralement après quelques minutes.

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour mettre à jour la règle de réseau:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access --location REGION

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau
  • REGION: région du réseau

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
 },
  "externalIp": {
    "enabled": false
   }
}"

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet pour cette requête
  • REGION: région du réseau
  • NETWORK_POLICY_NAME: nom de cette règle de réseau

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Utiliser une connexion sur site pour accéder aux charges de travail depuis Internet

Vous pouvez éventuellement diriger le trafic Internet en provenance de vos VM de charge de travail dans VMware Engine via une connexion sur site. Le trafic est dirigé en fonction de l'état des éléments suivants :

  • Annonce de routage par défaut (0.0.0.0/0) à partir de l'environnement sur site
  • Service d'adresse IP publique de VMware Engine
  • Service d'accès Internet de VMware Engine
  • VPC Service Controls sur la connexion d'appairage VPC entre votre réseau VPC et VMware Engine

Activer le routage du trafic Internet via une connexion sur site

Pour accéder à Internet à partir des VM de vos charges de travail via une connexion sur site, vous devez suivre deux étapes:

  1. Annoncez la route par défaut (0.0.0.0/0) depuis une infrastructure sur site en utilisant une connexion sur site (Cloud VPN ou Cloud Interconnect). Vérifiez la passerelle Cloud VPN ou le routeur Cloud Router où se termine la connexion à votre VPN depuis le réseau sur site.
  2. Désactivez l'accès Internet et le service d'adresse IP publique pour le réseau VMware Engine.

Console

  1. Accédez au portail VMware Engine.
  2. Accédez à Réseau > Paramètres régionaux.
  3. Cliquez sur l'icône Modifier correspondant à la région dans laquelle vous souhaitez activer l'accès à Internet à l'aide d'une connexion sur site.
  4. Basculez le bouton Service d'adresse IP publique sur Désactivé.

  5. Basculez le bouton Accès Internet sur Désactivé.

  6. Cliquez sur Submit (Envoyer).

  7. Activez VPC Service Controls sur la connexion d'appairage de VPC entre votre réseau VPC et VMware Engine à l'aide de la commande gcloud services vpc-peerings enable-vpc-service-controls :

    gcloud services vpc-peerings enable-vpc-service-controls \
       --network=VPC_NETWORK \
       --service=servicenetworking.googleapis.com

gcloud

À l'aide de l'outil gcloud, exécutez la commande suivante pour mettre à jour la règle de réseau:

gcloud vmware network-policies update NETWORK_POLICY_NAME \
  --no-internet-access --no-external-ip-address --location REGION

Remplacez les éléments suivants :

  • NETWORK_POLICY_NAME: nom de cette règle de réseau
  • REGION: région du réseau

Ensuite, activez VPC Service Controls sur la connexion d'appairage de VPC entre votre réseau VPC et VMware Engine à l'aide de la commande gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

API

curl -X PATCH -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/networkPolicies/NETWORK_POLICY_NAME?updateMask=internetAccess.enabled,externalIp.enabled -d "{
  "internetAccess: {
    "enabled": false
   },
  "externalIp: {
    "enabled": false
   }
}"

Ensuite, activez VPC Service Controls sur la connexion d'appairage de VPC entre votre réseau VPC et VMware Engine à l'aide de la commande gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

Python

Définissez internet_access et external_ip sur False.

from google.api_core import operation
from google.cloud import vmwareengine_v1

def update_network_policy(
    project_id: str, region: str, internet_access: bool, external_ip: bool
) -> operation.Operation:
    """
    Updates a network policy in a given network.

    Args:
        project_id: name of the project you want to use.
        region: name of the region you want to use. I.e. "us-central1".
        internet_access: should internet access be allowed.
        external_ip: should external IP addresses be assigned.

    Returns:
        An operation object representing the started operation. You can call its .result() method to wait for
        it to finish.
    """

    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UpdateNetworkPolicyRequest()
    request.update_mask = "internetAccess.enabled,externalIp.enabled"
    network_policy = vmwareengine_v1.NetworkPolicy()
    network_policy.name = (
        f"projects/{project_id}/locations/{region}/networkPolicies/{region}-default"
    )
    network_policy.vmware_engine_network = f"projects/{project_id}/locations/{region}/vmwareEngineNetworks/{region}-default"
    network_policy.internet_access.enabled = internet_access
    network_policy.external_ip.enabled = external_ip

    request.network_policy = network_policy

    return client.update_network_policy(request)

Ensuite, activez VPC Service Controls sur la connexion d'appairage de VPC entre votre réseau VPC et VMware Engine à l'aide de la commande gcloud services vpc-peerings enable-vpc-service-controls:

gcloud services vpc-peerings enable-vpc-service-controls \
   --network=VPC_NETWORK \
   --service=servicenetworking.googleapis.com

Désactiver le routage du trafic Internet via une connexion sur site

Pour désactiver le routage du trafic Internet de vos VM de charge de travail via une connexion sur site, arrêtez d'annoncer la route par défaut (0.0.0.0/0) et désactivez VPC Service Controls sur la connexion d'appairage VPC.

Pour désactiver VPC Service Controls sur la connexion d'appairage de VPC entre votre réseau VPC et VMware Engine, exécutez la commande gcloud services vpc-peerings disable-vpc-service-controls :

gcloud services vpc-peerings disable-vpc-service-controls \
    --network=VPC_NETWORK \
    --service=servicenetworking.googleapis.com

Étapes suivantes