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.

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 Router ou utiliser un routeur Cloud Router que vous utilisez déjà avec des tunnels Cloud VPN ou des rattachements d'interconnexion (VLAN) existants. Cependant, le routeur Cloud Router 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 Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Cloud.

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

  3. Vérifiez que la facturation est activée pour votre projet Google 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 un VPN ne permet de créer que des passerelles VPN haute disponibilité.

Console

Configurer la passerelle

  1. Accédez à la page VPN dans Google Cloud Console.
    Accéder à la page VPN
  2. Cliquez sur Assistant de configuration VPN.
  3. Sur la page Créer un VPN, spécifiez VPN classique.
  4. Cliquez sur Continuer.
  5. 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, qui s'applique 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 à ceci :

          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. Utilisez 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 dans laquelle 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.