Utiliser des routes basées sur des règles

Les routes basées sur des règles vous permettent de sélectionner un saut suivant en fonction de l'adresse IP de destination d'un paquet. Cette page explique comment créer, lister, décrire et supprimer des routes basées sur des règles.

Avant de commencer

Rôles requis

Pour obtenir les autorisations nécessaires pour utiliser des routes basées sur des règles, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de réseaux Compute (roles/compute.networkAdmin) sur votre projet. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Créer des routes basées sur des règles

Lorsque vous créez une route basée sur des règles, vous spécifiez les éléments suivants :

  • Champ d'application de la route : ressources auxquelles la route peut s'appliquer.
  • Critères de classification : plages d'adresses IP sources, plages d'adresses IP de destination et protocoles qui déterminent les paquets auxquels la route s'applique. La route basée sur des règles s'applique aux paquets correspondant à tous les critères de classification spécifiés.
  • Saut suivant : équilibreur de charge réseau passthrough interne à saut suivant ou saut suivant qui ignore les autres routes basées sur des règles.

Console

  1. Dans la console Google Cloud, accédez à la page Routes.

    Accéder à la page Routes

  2. Cliquez sur Gestion des routes.

  3. Cliquez sur Créer une route.

  4. Saisissez un nom pour la route.

  5. Facultatif : saisissez une Description.

  6. Cliquez sur Réseau, puis sélectionnez le réseau dans lequel vous souhaitez ajouter la route basée sur des règles.

  7. Cliquez sur Type de route, puis sélectionnez Route basée sur des règles.

  8. Dans la section Champ d'application de la route, effectuez l'une des opérations suivantes :

    • Pour que la route s'applique à toutes les instances de machine virtuelle (VM), aux rattachements de VLAN pour Cloud Interconnect et aux tunnels Cloud VPN dans le réseau Virtual Private Cloud, sélectionnez Cette route s'applique à toutes les instances de VM, rattachements de VLAN et tunnels VPN.

      Google recommande de faire preuve de prudence lors de la création de routes de ce type. La route est appliquée à tous les paquets de sortie qui correspondent aux critères de classification, qui peuvent inclure le trafic de sortie du backend de l'équilibreur de charge réseau passthrough interne.

    • Pour que la route ne s'applique qu'à certaines instances de VM, sélectionnez Cette route ne s'applique qu'aux instances de VM, puis saisissez les tags réseau des VM auxquelles cette route doit s'appliquer. Vous pouvez saisir plusieurs tags réseau séparés par une virgule dans une liste.

    • Pour que la route s'applique à tous les rattachements de VLAN pour Cloud Interconnect dans le réseau VPC de la route, sélectionnez Cette route ne s'applique qu'aux rattachements de VLAN.

    • Pour que la route s'applique aux rattachements de VLAN pour Cloud Interconnect dans une région spécifique, sélectionnez Cette route ne s'applique qu'aux rattachements de VLAN, puis sélectionnez la région des rattachements de VLAN. Il n'est pas possible de créer une route basée sur des règles qui s'applique à un rattachement de VLAN spécifique.

  9. Dans la section Critères de classification, procédez comme suit :

    1. Saisissez une plage d'adresses IP source.
    2. Saisissez une plage d'adresses IP de destination.
    3. Cliquez sur Protocole, puis sélectionnez les protocoles auxquels cette route s'applique.
  10. Saisissez une priorité.

  11. Dans la section Saut suivant, cliquez sur Saut suivant, puis procédez comme suit :

    • Pour spécifier un équilibreur de charge réseau passthrough interne à saut suivant, sélectionnez Spécifier une règle de transfert pour l'équilibreur de charge réseau passthrough interne, puis procédez comme suit :

      • Pour sélectionner une règle de transfert dans une liste de règles de transfert existantes, procédez comme suit :
        1. Sélectionnez Utilisée par la règle de transfert d'un équilibreur de charge interne dans le projet actuel.
        2. Cliquez sur Adresse IP de la règle de transfert, puis sélectionnez une adresse IP associée à un équilibreur de charge interne dans le projet sélectionné.
      • Pour saisir une adresse IP, procédez comme suit :

        1. Sélectionnez Non utilisée.
        2. Dans le champ Adresse IP de la règle de transfert, saisissez une adresse IP, sans longueur de préfixe. L'adresse IP doit provenir de l'une des sources suivantes :

          • Les plages d'adresses IP du réseau VPC dans lequel vous créez cette route basée sur des règles.
          • Les plages d'adresses IP d'un réseau VPC connecté au réseau VPC de la route via l'appairage de réseaux VPC (preview).

        Vous pouvez spécifier une adresse IP déjà associée à la règle de transfert d'un équilibreur de charge réseau passthrough interne, ou spécifier une adresse IP non utilisée et créer la règle de transfert après avoir créé cette route basée sur des règles.

    • Pour créer une route basée sur des règles qui ignore les autres routes basées sur des règles, sélectionnez Ignorer les autres routes basées sur des règles.

  12. Cliquez sur Créer.

gcloud

Utilisez la commande policy-based-routes create.

  • Pour appliquer la route à toutes les instances de VM, rattachements de VLAN pour Cloud Interconnect et tunnels Cloud VPN dans le réseau cloud privé virtuel, utilisez la commande suivante :

    Google recommande de faire preuve de prudence lors de la création de routes de ce type. La route est appliquée à tous les paquets de sortie qui correspondent aux critères de classification, qui peuvent inclure le trafic de sortie du backend de l'équilibreur de charge réseau passthrough interne.

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY
    

    Remplacez les éléments suivants :

    • ROUTE_NAME : nom de la route basée sur des règles
    • SOURCE_RANGE : plage CIDR de l'adresse IP source
    • DESTINATION_RANGE : plage CIDR de l'adresse IP de destination
    • PROTOCOL : Protocole du trafic à rediriger Les options sont ALL, TCP ou UDP. La valeur par défaut est ALL.
    • IP_VERSION : une seule version du protocole Internet auquel cette route s'applique. Indiquez IPv4, IPv6 ou(preview). La valeur par défaut est IPv4. Pour spécifier IPv6, utilisez la version bêta de Google Cloud CLI.
    • PROJECT_ID : ID du projet.
    • NETWORK : nom du réseau auquel appliquer la route basée sur des règles.
    • NEXT_HOP : une seule adresse IP, sans longueur de préfixe, pour l'équilibreur de charge réseau passthrough interne à saut suivant de la route. Spécifiez une adresse IPv4 en tant que saut suivant pour le trafic IPv4, ou spécifiez une adresse IPv6 pour le trafic IPv6 (preview). L'équilibreur de charge doit se trouver dans le même réseau VPC que la route basée sur des règles ou dans un réseau VPC connecté au réseau VPC de la route via l'appairage de réseaux VPC (preview).

      Si la route s'applique au trafic IPv6 (preview), vous devez configurer l'équilibreur de charge avec des sous-réseaux à double pile.

      Pour spécifier une adresse IPv6 ou une adresse IP à partir d'un réseau VPC de pair, utilisez la version bêta de Google Cloud CLI.

    • DESCRIPTION : description facultative de la route.

    • PRIORITY : priorité de la route basée sur des règles par rapport aux autres routes basées sur des règles.

  • Pour n'appliquer la route qu'à certaines instances de VM, utilisez la commande suivante :

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --tags=NETWORK_TAGS
    

    Remplacez NETWORK_TAGS par un ou plusieurs tags réseau des VM auxquelles appliquer la route. Vous pouvez inclure plusieurs tags réseau séparés par une virgule dans une liste.

  • Pour n'appliquer la route qu'aux rattachements de VLAN pour Cloud Interconnect, utilisez la commande suivante. Vous pouvez appliquer la route aux rattachements de VLAN pour Cloud Interconnect dans une région spécifique ou à tous les rattachements de VLAN pour Cloud Interconnect dans un réseau VPC.

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-ilb-ip=NEXT_HOP \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --interconnect-attachment-region=INTERCONNECT_REGION
    

    Remplacez INTERCONNECT_REGION par la région des rattachements de VLAN pour Cloud Interconnect auxquels appliquer la route. Pour appliquer la route basée sur des règles à tous les rattachements de VLAN pour Cloud Interconnect dans le réseau VPC de la route, utilisez all.

  • Pour spécifier un saut suivant qui ignore les autres routes basées sur des règles pour des VM spécifiques identifiées par des tags réseau, exécutez la commande suivante :

    gcloud network-connectivity policy-based-routes create ROUTE_NAME \
        --source-range=SOURCE_RANGE \
        --destination-range=DESTINATION_RANGE \
        --ip-protocol=PROTOCOL \
        --protocol-version=IP_VERSION \
        --network="projects/PROJECT_ID/global/networks/NETWORK" \
        --next-hop-other-routes=DEFAULT_ROUTING \
        --description=DESCRIPTION \
        --priority=PRIORITY \
        --tags=NETWORK_TAGS
    

API

Envoyez une requête POST à la méthode policyBasedRoutes.create :

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes?policyBasedRouteId=ROUTE_NAME
  • Pour appliquer la route à toutes les instances de VM, rattachements de VLAN pour Cloud Interconnect et tunnels Cloud VPN du réseau cloud privé virtuel, incluez le corps de requête suivant.

    Google recommande de faire preuve de prudence lors de la création de routes de ce type. La route est appliquée à tous les paquets de sortie qui correspondent aux critères de classification, qui peuvent inclure le trafic de sortie du backend de l'équilibreur de charge réseau passthrough interne.

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY"
    }
    

    Remplacez les éléments suivants :

    • PROJECT_ID : ID du projet
    • ROUTE_NAME : nom de la route basée sur des règles
    • SOURCE_RANGE : plage CIDR de l'adresse IP source
    • DESTINATION_RANGE : plage CIDR de l'adresse IP de destination
    • PROTOCOL : Protocole du trafic à rediriger Les options sont ALL, TCP ou UDP. La valeur par défaut est ALL.
    • IP_VERSION : version unique du protocole Internet à laquelle la route s'applique. Indiquez IPv4, IPv6 ou (preview). La valeur par défaut est IPv4. Pour spécifier une adresse IPv6, utilisez l'API v1beta.
    • NETWORK : nom du réseau auquel appliquer la route basée sur des règles. La route s'applique au trafic de sortie des instances de ce réseau qui répondent aux autres critères de classification.
    • NEXT_HOP : une seule adresse IP, sans longueur de préfixe, pour l'équilibreur de charge réseau passthrough interne à saut suivant de la route. Spécifiez une adresse IPv4 en tant que saut suivant pour le trafic IPv4, ou spécifiez une adresse IPv6 pour le trafic IPv6 (preview). L'équilibreur de charge doit se trouver dans le même réseau VPC que la route basée sur des règles ou dans un réseau VPC connecté au réseau VPC de la route via l'appairage de réseaux VPC (preview).

      Si la route s'applique au trafic IPv6 (preview), vous devez configurer l'équilibreur de charge avec des sous-réseaux à double pile.

      Pour spécifier une adresse IPv6 ou une adresse IP à partir d'un réseau VPC de pair, utilisez l'API v1beta.

    • DESCRIPTION : description facultative de la route.

    • PRIORITY : priorité de la route basée sur des règles par rapport aux autres routes basées sur des règles.

  • Pour n'appliquer la route qu'à certaines instances de VM, incluez le corps de requête suivant :

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY",
      "virtualMachine": {
        "tags": [
          "NETWORK_TAGS"
        ]
      }
    }
    

    Remplacez NETWORK_TAGS par un ou plusieurs tags réseau. La route basée sur des règles s'applique au trafic de sortie des instances qui comportent au moins l'un de ces tags. Vous pouvez inclure plusieurs tags au format suivant : "tag1","tag2","tag3".

  • Pour n'appliquer la route qu'aux rattachements de VLAN pour Cloud Interconnect, incluez le corps de requête suivant. Il n'est pas possible de créer une route basée sur des règles qui s'applique à un rattachement de VLAN spécifique.

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "interconnectAttachment": {
        "region": "INTERCONNECT_REGION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopIlbIp": "NEXT_HOP",
      "description": "DESCRIPTION",
      "priority": "PRIORITY"
    }
    

    Remplacez INTERCONNECT_REGION par la région des rattachements de VLAN pour Cloud Interconnect auxquels appliquer la route. Pour appliquer la route basée sur des règles à tous les rattachements de VLAN pour Cloud Interconnect dans le réseau VPC de la route, utilisez all.

  • Pour spécifier un saut suivant qui ignore les autres routes basées sur des règles pour des VM spécifiques identifiées par des tags réseau, exécutez la commande suivante :

    {
      "filter": {
        "srcRange": "SOURCE_RANGE",
        "destRange": "DESTINATION_RANGE",
        "ipProtocol": "PROTOCOL",
        "protocolVersion": "IP_VERSION"
      },
      "network": "projects/PROJECT_ID/global/networks/NETWORK",
      "nextHopOtherRoutes": "DEFAULT_ROUTING",
      "description": "DESCRIPTION",
      "priority": "PRIORITY",
      "virtualMachine": {
        "tags": [
          "NETWORK_TAGS"
        ]
      }
    }
    

Vérifier la connectivité d'une route basée sur des règles

Les tests de connectivité se présentent comme un outil de diagnostic qui vous permet de vérifier la connectivité entre les points de terminaison de votre réseau. Il analyse votre configuration et, dans certains cas, procède à la vérification de l'exécution. Les tests de connectivité sont compatibles avec les routes basées sur des règles. Pour exécuter des tests de connectivité avec vos routes basées sur des règles, consultez Créer et exécuter des tests de connectivité.

Répertorier les routes basées sur des règles

Vous pouvez répertorier les routes basées sur des règles pour toutes les afficher dans un projet ou un réseau et une région.

Console

  1. Dans la console Google Cloud, accédez à la page Routes.

    Accéder à la page Routes

    • Pour afficher toutes les routes basées sur des règles dans un réseau VPC et une région, procédez comme suit :

      1. Cliquez sur Routes effectives.
      2. Cliquez sur Réseau, puis sélectionnez un réseau.
      3. Cliquez sur Région, puis sélectionnez une région.
      4. Cliquez sur Afficher.
    • Pour afficher toutes les routes basées sur des règles dans un projet, procédez comme suit :

      1. Cliquez sur Gestion des routes.

gcloud

Utilisez la commande policy-based-routes list.

gcloud network-connectivity policy-based-routes list

API

Envoyez une requête GET à la méthode policyBasedRoutes.list.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes

Remplacez PROJECT_ID par l'ID du projet dans lequel répertorier les routes basées sur des règles.

Décrire les routes basées sur des règles

Vous pouvez décrire une route basée sur des règles pour en afficher les détails.

Console

  1. Dans la console Google Cloud, accédez à la page Routes.

    Accéder à la page Routes

  2. Cliquez sur Routes effectives.

  3. Cliquez sur Réseau, puis sélectionnez un réseau.

  4. Cliquez sur Région, puis sélectionnez une région.

  5. Cliquez sur Afficher.

  6. Cliquez sur le nom d'une route basée sur des règles pour en afficher les détails.

gcloud

Pour décrire une route basée sur des règles, utilisez la commande policy-based-routes describe.

gcloud network-connectivity policy-based-routes describe NAME

Remplacez NAME par le nom de la route à décrire.

API

Envoyez une requête GET à la méthode policyBasedRoutes.get.

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • ROUTE_NAME : nom de la route basée sur des règles à décrire

Supprimer des routes basées sur des règles

Vous pouvez supprimer une route basée sur des règles pour la retirer d'un réseau VPC.

Console

  1. Dans la console Google Cloud, accédez à la page Routes.

    Accéder à la page Routes

  2. Cliquez sur Routes effectives.

  3. Cliquez sur Réseau, puis sélectionnez un réseau.

  4. Cliquez sur Région, puis sélectionnez une région.

  5. Cliquez sur Afficher.

  6. Cliquez sur le nom d'une route basée sur des règles.

  7. Cliquez sur Supprimer, puis à nouveau sur Supprimer pour confirmer l'opération.

gcloud

Pour supprimer une route basée sur des règles, utilisez la commande policy-based-routes delete.

gcloud network-connectivity policy-based-routes delete NAME

Remplacez NAME par le nom de la route à supprimer.

API

Envoyez une requête DELETE à la méthode policyBasedRoutes.delete.

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/policyBasedRoutes/ROUTE_NAME

Remplacez les éléments suivants :

  • PROJECT_ID : ID du projet
  • ROUTE_NAME : nom du routage basé sur des règles à supprimer

Compatibilité

Une configuration spéciale est nécessaire pour utiliser les routages basés sur des règles des manières suivantes.

Utiliser des routages basés sur des règles avec GKE

Si vous créez des routes basées sur des règles dans des réseaux VPC comportant des clusters Google Kubernetes Engine (GKE), gardez à l'esprit les points suivants :

Routes basées sur des règles et Private Service Connect pour les services publiés

Les routes basées sur des règles ne peuvent pas être utilisés pour acheminer le trafic des VM vers des points de terminaison Private Service Connect pour les services publiés ou des backends Private Service Connect pour les services publiés. Lorsque vous utilisez des routes basées sur des règles et Private Service Connect pour les services publiés :

  • Utilisez des tags réseau pour que les routes basées sur des règles s'appliquent à des VM spécifiques.
  • Évitez de créer des routes basées sur des règles avec des plages d'adresses IP source ou de destination 0.0.0.0/0.
  • Si vous devez créer une route basée sur des règles avec une plage de destination incluant l'adresse IP d'un point de terminaison ou d'un backend Private Service Connect, créez une route basée sur des règles de priorité plus élevée qui ignore les autres routes basées sur des règles. Configurez la destination de la route basée sur des règles dont la priorité est la plus élevée avec une plage d'adresses IP plus spécifique incluant l'adresse IP du point de terminaison ou backend Private Service Connect.

Routes basées sur des règles et accès aux API et services Google

Google Cloud n'est pas compatible avec le routage du trafic vers les API et les services Google via d'autres instances de VM ou des sauts suivants personnalisés, y compris vers les backends de VM des équilibreurs de charge réseau passthrough internes à saut suivant dans les routes basées sur des règles.

Si vous utilisez l'une des méthodes suivantes pour accéder aux API et services Google, consultez les bonnes pratiques présentées dans la section ci-après :

Bonnes pratiques

Nous vous recommandons d'appliquer les bonnes pratiques suivantes pour les méthodes précédentes d'accès aux API et services Google:

  • Utilisez des tags réseau pour que les routes basées sur des règles s'appliquent à des VM spécifiques.
  • Évitez de créer des routes basées sur des règles avec des plages sources ou de destination 0.0.0.0/0.
  • Si vous créez des routes basées sur des règles qui incluent des plages de destination utilisées par les API et les services Google, des points de terminaison Private Service Connect pour les API Google ou des backends Private Service Connect pour les API, créez des routes basées sur des règles à priorité plus élevée qui ignorent les autres routes basées sur des règles. Définissez les destinations de ces routes basées sur des règles de priorité plus élevée pour qu'elles correspondent aux adresses IP pour les API et les services Google, les points de terminaison Private Service Connect ou les backends Private Service Connect que vous utilisez. Les plages d'adresses IP utilisées par les API et les services Google comprennent les suivantes :
    • Adresses IP des domaines par défaut utilisés par les API et les services Google
    • Adresses IP virtuelles (IPV) d'accès privé à Google :
      • private.googleapis.com (199.36.153.8/30)
      • restricted.googleapis.com (199.36.153.4/30)