Créer un VPN classique à l'aide du routage dynamique

Cette page explique comment créer une passerelle VPN classique et un tunnel à l'aide d'un routage dynamique basé sur le protocole de routage Border Gateway Protocol (BGP).

Avec le routage dynamique, vous ne spécifiez pas de sélecteurs de trafic locaux ou distants. Au lieu de cela, vous utilisez un routeur Cloud Router. Les informations relatives aux routes sont échangées de manière dynamique.

Pour découvrir les bonnes pratiques à suivre avant de configurer Cloud VPN, consultez la page Bonnes pratiques pour Cloud VPN.

Exigences

Consignes et exigences générales

Créer des routeurs cloud

Lorsque vous configurez une nouvelle passerelle VPN haute disponibilité, vous pouvez créer un routeur cloud ou en utiliser un que vous utilisez déjà avec des tunnels Cloud VPN ou des rattachements d'interconnexion (VLAN) existants. Cependant, le routeur cloud que vous utilisez ne doit pas déjà gérer une session BGP pour un rattachement d'interconnexion (VLAN) associé à une interconnexion partenaire, en raison des exigences spécifiques du numéro ASN du rattachement.

Avant de commencer

Configurez les éléments suivants dans Google Cloud pour faciliter la configuration de Cloud VPN :

  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder à la page de sélection du projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.

  4. Installez et initialisez le SDK Cloud.
  1. Si vous utilisez des commandes gcloud, définissez votre ID de projet à l'aide de la commande suivante. Dans les instructions gcloud présentées sur cette page, nous partons du principe que vous avez défini l'ID de votre projet avant d'exécuter les commandes.
  gcloud config set project PROJECT_ID

Vous pouvez également afficher un ID de projet déjà défini :

  gcloud config list --format='text(core.project)'

Créer un réseau et un sous-réseau cloud privé virtuel personnalisé

Avant de créer une passerelle et un tunnel VPN classiques, vous devez créer un réseau cloud privé virtuel et au moins un sous-réseau dans la région où sera située la passerelle VPN classique.

Créer une passerelle et un tunnel

L'assistant de configuration du VPN est la seule option de console permettant de créer une passerelle VPN classique. L'assistant inclut toutes les étapes de configuration nécessaires pour créer une passerelle VPN classique, des tunnels, des sessions BGP et une ressource de passerelle VPN externe. Vous pouvez cependant choisir d'effectuer certaines tâches ultérieurement, comme la configuration des sessions BGP.

Le bouton Créer une passerelle VPN ne permet de créer que des passerelles VPN haute disponibilité.

Console

Configurer la passerelle

  1. Accédez à la page "VPN" de Google Cloud Console.
    Accéder à la page "VPN"
    1. Si vous créez une passerelle pour la première fois, sélectionnez le bouton Créer une connexion VPN.
    2. Sélectionnez l'assistant de configuration VPN.
  2. Sélectionnez la case d'option correspondant à un VPN classique.
  3. Cliquez sur Continuer.
  4. Sur la page Créer une connexion VPN, spécifiez les paramètres de passerelle suivants :
    • Nom : nom de la passerelle VPN. Vous ne pourrez pas le modifier par la suite.
    • Description : si vous le souhaitez, vous pouvez ajouter une description.
    • Réseau : spécifiez un réseau VPC existant dans lequel créer la passerelle et le tunnel VPN.
    • Région : les passerelles et les tunnels Cloud VPN sont des objets régionaux. Choisissez une région Google Cloud dans laquelle la passerelle sera située. Les instances et les autres ressources appartenant à des régions différentes peuvent utiliser le tunnel pour acheminer le trafic de sortie, en suivant l'ordre de priorité des routes. Pour optimiser les performances, situez la passerelle et le tunnel dans la même région que les ressources Google Cloud concernées.
    • Adresse IP : créez ou choisissez une adresse IP externe régionale existante.

Configurer les tunnels

  1. Pour le nouveau tunnel, spécifiez les éléments suivants dans la section Tunnels :
    • Nom : nom du tunnel VPN. Vous ne pourrez pas le modifier par la suite.
    • Description : si vous le souhaitez, vous pouvez saisir une description.
    • Adresse IP du pair distant : spécifiez l'adresse IP externe de la passerelle VPN de pairs.
    • Version d'IKE : choisissez une version d'IKE compatible avec la passerelle VPN de pairs. Nous vous recommandons d'utiliser IKEv2 si cette version est compatible avec l'appareil associé.
    • Clé secrète partagée : fournissez une clé prépartagée utilisée pour l'authentification. Cette clé secrète partagée du tunnel Cloud VPN doit correspondre à celle utilisée lors de la configuration du tunnel équivalent sur la passerelle VPN de pairs. Vous pouvez suivre ces instructions pour générer une clé secrète partagée sécurisée de manière cryptographique.
    • Options de routage : sélectionnez Dynamique (BGP).
    • Routeur Cloud Router : si vous ne l'avez pas déjà fait, créez un routeur Cloud Router en spécifiant les options indiquées ci-dessous. Vous pouvez également utiliser un routeur Cloud Router existant si le routeur ne gère pas déjà une session BGP pour un rattachement d'interconnexion associé à une interconnexion partenaire. Si vous choisissez un routeur Cloud Router existant, vous poursuivrez la création d'une session BGP, mais le numéro ASN Google restera identique. Pour créer un routeur Cloud Router, spécifiez les détails suivants :
      • Nom : nom du routeur cloud. Vous ne pourrez pas le modifier par la suite.
      • Description : si vous le souhaitez, vous pouvez saisir une description.
      • Numéro ASN Google : choisissez un numéro ASN privé (entre 64512 et 65534, ou entre 4200000000 et 4294967294). Ce numéro est utilisé pour toutes les sessions BGP gérées par le routeur Cloud. Vous ne pourrez pas le modifier par la suite.
      • Cliquez sur Enregistrer et continuer.
    • Session BGP : cliquez sur l'icône en forme de crayon, puis spécifiez les informations suivantes. Une fois l'opération terminée, cliquez sur Enregistrer et continuer :
      • Nom : nom de la session BGP. Vous ne pourrez pas le modifier par la suite.
      • Numéro ASN du pair : numéro ASN public ou privé (entre 64512 et 65534, ou entre 4200000000 et 4294967294) qui est utilisé par votre passerelle VPN de pairs.
      • Priorité des routes annoncées : (facultatif) priorité de base utilisée par Cloud Router pour annoncer les routes "vers Google Cloud". Pour en savoir plus, consultez la section Métriques de routage. Votre passerelle VPN de pairs importe ces valeurs en tant que valeurs MED.
      • Adresse IP BGP de Cloud Router et Adresse IP du pair BGP : les deux adresses IP des interfaces BGP doivent correspondre à des adresses IP de liaison locale appartenant à un masque CIDR /30 commun du bloc 169.254.0.0/16. Chaque adresse IP BGP définit l'adresse IP de la liaison locale utilisée pour échanger des informations de routage. Par exemple, 169.254.1.1 et 169.254.1.2 appartiennent à un bloc /30 commun.
  2. Si vous devez créer plusieurs tunnels sur la même passerelle, cliquez sur Ajouter un tunnel, et répétez l'étape précédente. Vous pouvez ajouter d'autres tunnels ultérieurement.
  3. Cliquez sur Créer.

gcloud


Dans les commandes suivantes, remplacez :

  • PROJECT_ID par l'ID de votre projet ;
  • NETWORK par le nom de votre réseau Google Cloud ;
  • REGION par la région Google Cloud dans laquelle la passerelle et le tunnel doivent être créés ;
  • (Facultatif) --target-vpn-gateway-region correspond à la région de la passerelle VPN classique à utiliser. Sa valeur doit être identique à celle de --region. Si cette option n'est pas spécifiée, elle est définie automatiquement. Cette option ignore la valeur par défaut de la propriété "compute/region" pour cet appel de commande.
  • GW_NAME par le nom de la passerelle ;
  • GW_IP_NAME par le nom de l'adresse IP externe utilisée par la passerelle.

Pour créer une passerelle Google Cloud, exécutez les commandes suivantes dans l'ordre indiqué :

  1. Créez les ressources pour la passerelle Cloud VPN :

    1. Créez l'objet passerelle VPN cible.

      gcloud compute target-vpn-gateways create GW_NAME \
          --network NETWORK \
          --region REGION \
          --project PROJECT_ID
      
    2. Réservez une adresse IP externe régionale (statique).

      gcloud compute addresses create GW_IP_NAME \
          --region REGION \
          --project PROJECT_ID
      
    3. Notez l'adresse IP de façon à pouvoir l'utiliser lors de la configuration de votre passerelle VPN de pairs :

      gcloud compute addresses describe GW_IP_NAME \
          --region REGION \
          --project PROJECT_ID \
          --format='flattened(address)'
      
    4. Créez trois règles de transfert. Ces règles indiquent à Google Cloud d'acheminer le trafic ESP (IPSec), UDP 500 et UDP 4500 vers la passerelle.

       gcloud compute forwarding-rules create fr-GW_NAME-esp \
           --ip-protocol ESP \
           --address GW_IP_NAME \
           --target-vpn-gateway GW_NAME \
           --region REGION \
           --project PROJECT_ID
      
      gcloud compute forwarding-rules create fr-GW_NAME-udp500 \
          --ip-protocol UDP \
          --ports 500 \
          --address GW_IP_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
      gcloud compute forwarding-rules create fr-GW_NAME-udp4500 \
          --ip-protocol UDP \
          --ports 4500 \
          --address GW_IP_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
  2. Si vous ne l'avez pas déjà fait, exécutez la commande suivante pour créer un routeur Cloud Router. Remplacez les options comme indiqué ci-dessous. Vous pouvez également utiliser un routeur Cloud Router existant tant que le routeur ne gère pas encore une session BGP pour un rattachement d'interconnexion associé à une interconnexion partenaire.

    • Remplacez ROUTER_NAME par le nom du routeur Cloud Router.
    • Remplacez GOOGLE_ASN par un numéro ASN privé (nombre compris entre 64512 et 65534, ou entre 4200000000 et 4294967294). Ce numéro est utilisé pour toutes les sessions BGP gérées par le même routeur Cloud, et il ne peut pas être modifié ultérieurement.
      gcloud compute routers create ROUTER_NAME \
      --asn GOOGLE_ASN \
      --network NETWORK \
      --region REGION \
      --project PROJECT_ID
    
  3. Créez le tunnel Cloud VPN en indiquant les informations suivantes :

    • Remplacez TUNNEL_NAME par le nom du tunnel.
    • Remplacez ON_PREM_IP par l'adresse IP externe de la passerelle VPN de pairs.
    • Remplacez IKE_VERS par 1 pour IKEv1 ou 2 pour IKEv2.
    • Remplacez SHARED_SECRET par votre clé secrète partagée. Cette clé secrète partagée du tunnel Cloud VPN doit correspondre à celle utilisée lors de la configuration du tunnel équivalent sur la passerelle VPN de pairs. Vous pouvez suivre ces instructions pour générer une clé secrète partagée sécurisée de manière cryptographique.
    • Remplacez ROUTER_NAME par le nom du routeur Cloud que vous souhaitez utiliser pour gérer les routes du tunnel Cloud VPN. Le routeur Cloud Router doit exister avant de créer un tunnel.

      gcloud compute vpn-tunnels create TUNNEL_NAME \
          --peer-address ON_PREM_IP \
          --ike-version IKE_VERS \
          --shared-secret SHARED_SECRET \
          --router ROUTER_NAME \
          --target-vpn-gateway GW_NAME \
          --region REGION \
          --project PROJECT_ID
      
  4. Configurez une session BGP pour le routeur Cloud, en créant une interface et un pair BGP. Sélectionnez l'une des méthodes suivantes :

    • Pour permettre à Google Cloud de choisir automatiquement les adresses IP de liaison locales BGP :

      1. Ajoutez une nouvelle interface au routeur Cloud. Indiquez le nom de l'interface en remplaçant INTERFACE_NAME.

        gcloud compute routers add-interface ROUTER_NAME \
            --interface-name INTERFACE_NAME \
            --vpn-tunnel TUNNEL_NAME \
            --region REGION \
            --project PROJECT_ID
        
      2. Ajoutez un pair BGP à l'interface. Remplacez PEER_NAME par le nom du pair, et PEER_ASN par le numéro ASN configuré pour la passerelle VPN de pairs.

        gcloud compute routers add-bgp-peer ROUTER_NAME \
            --peer-name PEER_NAME \
            --peer-asn PEER_ASN \
            --interface INTERFACE_NAME \
            --region REGION \
            --project PROJECT_ID
        
      3. Répertoriez les adresses IP BGP sélectionnées par le routeur Cloud. Si vous avez ajouté une nouvelle interface à un routeur Cloud existant, les adresses IP BGP de la nouvelle interface doivent être répertoriées en indiquant le numéro d'index le plus élevé. L'adresse IP du pair correspond à l'adresse IP BGP que vous devez utiliser pour configurer votre passerelle VPN de pairs.

        gcloud compute routers get-status ROUTER_NAME \
             --region REGION \
             --project PROJECT_ID \
             --format='flattened(result.bgpPeerStatus[].ipAddress, \
             result.bgpPeerStatus[].peerIpAddress)'
        

        Le résultat attendu pour un routeur Cloud Router gérant un seul tunnel Cloud VPN (index 0) ressemble à l'exemple suivant, où GOOGLE_BGP_IP correspond à l'adresse IP BGP de l'interface du routeur Cloud Router et ON_PREM_BGP_IP correspond à l'adresse IP BGP de son pair.

        result.bgpPeerStatus[0].ipAddress:     GOOGLE_BGP_IP
        result.bgpPeerStatus[0].peerIpAddress: ON_PREM_BGP_IP
        
    • Pour attribuer manuellement les adresses IP BGP associées à l'interface Google Cloud BGP et au pair, procédez comme suit :

      1. Choisissez deux adresses IP de liaison locales BGP dans un bloc /30 de la plage 169.254.0.0/16. Attribuez l'une de ces adresses IP BGP au routeur Cloud Router en remplaçant GOOGLE_BGP_IP dans la première commande, indiquée ci-dessous. L'autre adresse IP BGP est utilisée pour votre passerelle VPN de pairs. Vous devez configurer votre appareil pour utiliser cette adresse en remplaçant ON_PREM_BGP_IP dans la dernière commande, indiquée ci-dessous.

      2. Ajoutez une nouvelle interface au routeur Cloud. Spécifiez le nom de l'interface en remplaçant INTERFACE_NAME.

        gcloud compute routers add-interface ROUTER_NAME \
            --interface-name INTERFACE_NAME \
            --vpn-tunnel TUNNEL_NAME \
            --ip-address GOOGLE_BGP_IP \
            --mask-length 30 \
            --region REGION \
            --project PROJECT_ID
        
      3. Ajoutez un pair BGP à l'interface. Remplacez PEER_NAME par le nom du pair, et PEER_ASN par le numéro ASN configuré pour la passerelle VPN de pairs.

        gcloud compute routers add-bgp-peer ROUTER_NAME \
            --peer-name PEER_NAME \
            --peer-asn PEER_ASN \
            --interface INTERFACE_NAME \
            --peer-ip-address ON_PREM_BGP_IP \
            --region REGION \
            --project PROJECT_ID
        

Procédure à suivre

Vous devez suivre la procédure ci-dessous avant de pouvoir utiliser une nouvelle passerelle et un nouveau tunnel Cloud VPN :

  1. Configurez la passerelle VPN de pairs, puis configurez-y le tunnel correspondant. Reportez-vous aux pages suivantes :
  2. Configurez les règles de pare-feu dans Google Cloud et votre réseau de pairs, si nécessaire. Pour obtenir des suggestions, reportez-vous à la page Configurer les règles de pare-feu.
  3. Vérifiez l'état de votre tunnel, y compris les règles de transfert.
Appliquer une règle d'administration VPN

Appliquer une contrainte de règle d'administration qui limite les adresses IP des passerelles VPN de pairs

Vous pouvez créer une contrainte de règle d'administration Google Cloud qui définit un ensemble d'adresses IP autorisées ou interdites pour l'appairage à des passerelles VPN via des tunnels VPN classiques ou haute disponibilité. Cette contrainte contient une liste d'adresses IP de pairs autorisées ou refusées, appliquée aux tunnels Cloud VPN créés après l'application de la contrainte. Pour en savoir plus, consultez la présentation de Cloud VPN.

Autorisations requises

Pour définir une contrainte d'adresse IP de pair au niveau de l'organisation ou du projet, vous devez d'abord disposer du rôle Administrateur des règles d'administration (orgpolicy.policyAdmin) pour votre organisation.

Définir des contraintes

Pour créer une règle d'administration et l'associer à une organisation, un dossier ou un projet, utilisez les exemples répertoriés dans les sections suivantes et suivez les étapes de la page Utiliser des contraintes.

Restreindre la connectivité à partir d'adresses IP de pairs spécifiques via un tunnel Cloud VPN

Pour n'autoriser que des adresses IP de pairs spécifiques, procédez comme suit :

  1. Recherchez l'ID de votre organisation en saisissant la commande suivante :
    gcloud organizations list

    Le résultat de la commande devrait ressembler au suivant.

          DISPLAY NAME             ID
          example-organization     29252605212
        
  2. Créez un fichier JSON qui définit votre règle. Vous devez fournir une règle sous forme de fichier JSON, comme dans l'exemple suivant :

         {
           "constraint": "constraints/compute.restrictVpnPeersIPs",
           "listPolicy": {
             "allowedValues": [
               "100.1.1.1",
             ],
           }
         }
       
  3. Exécutez la commande gcloud Resource Manager set-policy pour définir la règle d'administration, en transmettant le fichier JSON et en utilisant l'identifiant ORGANIZATION_ID que vous avez obtenu à l'étape précédente.

Restreindre la connectivité à partir de toute adresse IP de pairs via un tunnel Cloud VPN

Pour interdire la création de tout nouveau tunnel Cloud VPN, suivez les étapes décrites dans cet exemple de contrainte.

  1. Recherchez l'ID de votre organisation ou l'ID du nœud dans la hiérarchie des ressources où vous souhaitez définir une règle.
  2. Créez un fichier JSON comme dans l'exemple suivant.

        {
          "constraint": "constraints/compute.restrictVpnPeersIPs",
          "listPolicy": {
            "allValues": "DENY"
          }
        }
    
  3. Transmettez le fichier JSON en saisissant la même commande que celle que vous utiliseriez pour restreindre des adresses IP de pairs spécifiques.