Photo de Franck V. sur Unsplash
Depuis plusieurs années, Ubiquiti Networks commercialise des produits réseau destinés aux homelabbers, prosumers et entreprises au sein de sa gamme UniFi. Avec des tarifs très accessibles pour des composants particulièrement riches en fonctionnalités, ces produits se sont imposés comme la référence de nombreuses PME pour leurs besoins réseau.
Alors que de nombreuses entreprises migrent vers le cloud, le besoin d'une connexion directe et chiffrée entre leur datacenter on-premise ou leur back-office et le cloud devient un cas d'usage courant.
Google Cloud Platform s'est imposé auprès de nombreuses PME pour leur présence cloud, grâce au faible coût et à la richesse fonctionnelle de l'environnement proposé par Google. Malheureusement, lorsqu'on utilise un routeur tel que l'UniFi Security Gateway ou un appareil de la série UniFi Dream Machine, la documentation pour le connecter directement à GCP reste limitée par rapport à celle disponible pour AWS ou Azure.
Vous trouverez ci-dessous un guide pas à pas pour configurer un VPN site à site entre un réseau UniFi et GCP.
Prérequis
Trois prérequis doivent être réunis avant de démarrer.
- Côté réseau on-premise, il vous faut un routeur UniFi : UniFi Security Gateway (USG), UniFi Security Gateway Pro (USG3/USG4), UniFi Dream Machine (UDM) ou UniFi Dream Machine Pro (UDM Pro/UDMP). Vous aurez également besoin d'un controller UniFi installé et connecté à votre routeur. Pour les deux derniers modèles, le controller est hébergé directement dans l'appliance.
- Une adresse IP statique pour votre connexion. Si vous n'en avez pas, contactez votre FAI : il peut généralement en attribuer une moyennant des frais modiques.
- Côté GCP, vous devez disposer d'un projet dans lequel votre utilisateur possède au minimum les privilèges IAM Network Management Admin.
Collecte d'informations
Comme toute bonne investigation, cette mise en œuvre commence par une phase de collecte. Ouvrez un éditeur de texte pour noter les valeurs nécessaires aux étapes suivantes.
La première information est très simple : votre adresse IP statique.
- La méthode la plus rapide consiste à taper " my IP " sur Google : depuis une machine connectée au même réseau, le résultat apparaît directement en haut de la page. Si vous n'êtes pas sur le même réseau, contactez votre administrateur ou votre FAI pour obtenir cette adresse IP.
- Notez-la dans votre éditeur de texte sous l'étiquette Static IP Address.
La deuxième information à recueillir est la plage d'adresses IP du sous-réseau de votre ou vos réseaux on-premise à connecter à GCP.
- Connectez-vous à votre controller UniFi avec un compte administrateur.
- Allez dans le menu Settings (icône en forme de roue dentée en bas à gauche), puis sur la page Networks.
- Repérez les réseaux à connecter et notez les informations affichées dans la colonne subnet.
Vous pouvez sélectionner plusieurs réseaux ici. 4. Notez ces valeurs dans votre éditeur de texte sous l'étiquette On-Prem Subnet.
Voici un exemple en capture d'écran. Dans la capture suivante, je souhaite connecter les réseaux Gaming et Home Devices à GCP ; je conserve donc les plages d'IP suivantes en notation CIDR : 10.4.4.0/24 et 10.2.2.0/24.

Capture d'écran des paramètres Networks dans le controller UniFi.
Laissez cette page ouverte dans un onglet, nous y reviendrons.
La dernière information à recueillir est la plage d'adresses IP du sous-réseau de la région à laquelle vous allez vous connecter dans GCP. Vous devez avoir une idée du contenu de votre projet et de la région dans laquelle il s'exécute.
Pour la récupérer, connectez-vous à la console GCP :
- Cliquez sur le menu de navigation principal en haut à gauche (icône à 3 barres) et accédez à VPC network -> VPC networks.
- L'écran affiche un ou plusieurs réseaux avec un tableau de sous-réseaux par région. L'affichage varie selon la conception réseau de chaque projet ; je partirai donc du principe que vous utilisez la conception par défaut fournie par GCP.
- Recherchez la région où se trouvent vos ressources, le plus souvent us-central1, mais cela peut varier selon la conception du réseau et de l'infrastructure.
- Une fois la bonne région identifiée, notez la valeur de la colonne IP address ranges.
- Notez-la dans votre éditeur de texte sous l'étiquette GCP Network Range.
Laissez la console GCP ouverte dans un onglet, vous l'utiliserez pour la suite des étapes.
Vous avez désormais tout ce qu'il faut. Place à la mise en œuvre.
Mise en œuvre
Configuration GCP — Partie I : configurer la passerelle VPN
Passons à la configuration du service VPN de GCP.
- Ouvrez l'onglet de la console GCP.
- Cliquez sur le menu de navigation principal en haut à gauche.
- Accédez à Networking -> Hybrid connectivity -> VPN.
- Cliquez sur le bouton Create VPN connection, c'est parti.
- Pour l'instant, sélectionnez l'option Classic VPN.
Note de compatibilité : ce mode ne propose qu'un seul VPN et n'offre pas de redondance en cas de défaillance. La raison ? Le VPN haute disponibilité requiert la prise en charge de BGP, que l'équipement réseau UniFi ne gère pas au moment de la rédaction de cet article. 6. Une fois sur l'écran de création, dans la section supérieure dédiée à la passerelle VPN, saisissez un nom et une description explicites. 7. Sélectionnez ensuite le réseau à utiliser.
Il s'agit le plus souvent du réseau auto-généré par défaut, nommé default ; si vous avez mis en place un schéma réseau personnalisé, choisissez celui qui convient. 8. Faites de même pour la région. Enfin, sélectionnez une adresse IP externe existante ou créez-en une.
Voici une capture d'écran montrant un exemple de passerelle VPN correctement configurée dans la console GCP.

Exemple de passerelle VPN configurée dans la région us-central1.
Configuration GCP — Partie II : configurer le tunnel VPN
La deuxième section de la page concerne le tunnel VPN proprement dit, le mécanisme qui assurera la connexion entre GCP et votre réseau on-premise.
Faites défiler jusqu'à la deuxième section de la page, intitulée VPN tunnel.
Saisissez un nom et une description explicites.
Dans le champ Remote peer IP address, renseignez la ou les valeurs On-Prem Subnet de votre éditeur de texte.
Vérifiez que le champ IKE version est bien sur IKEv2.
Cliquez ensuite sur le bouton Generate and copy.
Notez cette valeur dans votre éditeur de texte sous l'étiquette IKE Key.
Important : ne perdez pas cette valeur, car une fois la page validée, elle ne sera plus jamais accessible dans GCP.
Cliquez enfin sur l'onglet Route-based dans la dernière section.
Dans le champ Remote network IP ranges, renseignez la ou les valeurs On-Prem Subnet récupérées depuis le controller UniFi, en appuyant sur Entrée après chaque saisie pour qu'elles deviennent une " bulle ".
Vérifiez que vos valeurs ressemblent à la capture d'écran suivante.
Cliquez ensuite sur le bouton Done de ce volet, puis sur Create en bas de la page.

Exemple de configuration du tunnel à partir des deux réseaux on-premise présentés dans la capture précédente.
Vous serez alors redirigé vers les pages affichant le statut des passerelles et tunnels VPN. Le provisioning des services prendra quelques minutes.
Une fois le provisioning terminé, il reste quelques étapes pour finaliser la configuration GCP.
- Lorsque le tunnel affiche First handshake avec un point d'exclamation jaune, vous pouvez continuer.
- Une adresse IP apparaît dans la colonne Cloud VPN gateway.
- Notez-la dans votre éditeur de texte sous l'étiquette Cloud VPN IP.
- Avant de continuer, gardez la console GCP ouverte dans cet onglet : vous y reviendrez après avoir configuré l'appareil UniFi.
Configuration UniFi
Maintenant que le côté GCP est configuré et qu'un tunnel et une passerelle VPN actifs attendent une connexion, configurons l'appareil UniFi pour finaliser le côté on-premise.
- Rouvrez l'onglet du controller UniFi.
- Cliquez sur l'option Site dans la barre de navigation principale à gauche.
- Sur la page Site, sous Services, vous trouverez une case à cocher intitulée Enable advanced features, qu'il faut activer.
- Si elle ne l'est pas, cochez-la et cliquez sur Apply en bas. Un avertissement apparaîtra ; vous pouvez l'ignorer à ce stade.
- Cliquez ensuite sur la page Networks pour revenir à la liste des réseaux. Cliquez sur Create New Network en bas de la page.
- Cette page contient plusieurs options à définir : je vais d'abord les énumérer, puis détailler ce qu'il faut renseigner dans chaque champ.
- Sous Purpose, sélectionnez Site-to-Site VPN. Choisissez Manual IPSec pour VPN Type. Dépliez Advanced Options et passez Key Exchange Version sur IKEv2.
- Laissez le reste sur les valeurs par défaut pour le moment.
- Saisissez un nom pour le réseau.
- Cliquez sur le bouton Add Subnet et, dans le champ qui apparaît, saisissez la valeur GCP Network Range de votre éditeur de texte.
- Renseignez la valeur Cloud VPN IP dans le champ Peer IP.
- Dans Local WAN IP, saisissez la Static IP Address.
- Enfin, collez l'IKE Key sur cette page. Avant de cliquer sur Save, vérifiez que votre page ressemble à la capture ci-dessous, avec vos propres valeurs.

Votre page devrait ressembler à ceci, avec des valeurs IP différentes.
Pour finir, dans le controller UniFi, créez une route statique afin que le trafic puisse être routé via cette connexion VPN.
- Sélectionnez la page Routing & Firewall dans le volet de navigation principal.
- Cliquez sur Create New Route.
- Saisissez un nom pour cette route.
- Renseignez la valeur GCP Network Range dans le champ Destination Network et définissez la distance sur 1.
- Pour Static Route Type, sélectionnez Interface, puis choisissez le nom du réseau créé précédemment dans le champ Interface.
- Cliquez sur Save : vous êtes prêt à tester.
Si vous avez coché Enable advanced features plus haut, voici comment le désactiver si vous ne souhaitez pas garder ce mode actif.
- Cliquez sur l'option Site dans la barre de navigation principale à gauche.
- Sous Services, décochez la case Enable advanced features.
- Cliquez sur Apply en bas de la page : le mode est désactivé.
Vérification de la connexion
À ce stade, la connexion VPN devrait être établie. Voici comment le vérifier.
- Revenez sur l'onglet de la console GCP.
- Si vous avez changé de page, accédez via le menu de navigation principal à Networking -> Hybrid connectivity -> VPN.
- Cliquez sur l'onglet Cloud VPN Tunnels.
- Dans la colonne VPN tunnel status du tableau, une case verte cochée doit apparaître à côté du message Established.
La connexion peut prendre quelques minutes à s'établir : utilisez le bouton Refresh en haut pour actualiser les données jusqu'à ce que ce statut s'affiche. 5. Si tout est correct, le VPN est bien établi entre GCP et votre appareil UniFi on-premise.
Le VPN est connecté ; reste à vérifier qu'il fonctionne correctement, via un test simple.
**Test de la connexion**
- Assurez-vous que la page de la console GCP est ouverte.
- Dans le menu de navigation principal, accédez à Compute Engine -> VM Instances.
- Si vous n'avez pas créé d'instances Compute Engine ou n'en avez aucune dans la région où se trouve votre VPN, suivez cet excellent guide de la chaîne YouTube de GCP pour créer une instance temporaire à des fins de test, en veillant à la créer dans la bonne région : https://www.youtube.com/watch?v=1XH0gLlGDdk
- Dans la liste de vos instances Compute Engine, repérez une instance située dans la région où vous avez créé le VPN. Par défaut, il s'agit de us-central1.
- Pour cette instance, repérez la valeur dans la colonne Internal IP.
- Ouvrez une fenêtre de terminal.
- Exécutez la commande suivante en remplaçant par l'IP interne de l'étape précédente :
ping <internal IP>
La commande devrait afficher des lignes indiquant les octets reçus depuis cette adresse IP, accompagnées du temps de latence. Si c'est le cas, votre VPN est bien connecté et tout fonctionne. Bravo : la procédure n'est pas la plus simple à mettre en place.
Sinon, en cas de problème, suivez la section suivante pour quelques pistes de dépannage.
Dépannage
En cas de problème, voici quelques pistes de dépannage repérées au fil de la rédaction de ce guide :
Les logs Stackdriver sont vos meilleurs alliés. Bien souvent, les logs de la passerelle ou du tunnel VPN font apparaître des indices sur la cause de l'échec de connexion.
Vérifiez la route statique de votre controller UniFi pour vous assurer que les valeurs sont correctes.
Il arrive que la machine locale mette en cache les tables de routage ICMP. Dans mon cas, un redémarrage a suffi à résoudre le problème.
Vérifiez les règles de pare-feu côté GCP et côté controller UniFi pour vous assurer que la communication entre les nœuds internes n'est pas bloquée. N'oubliez pas que sur le VPN, la communication s'effectue avec des IP privées dans GCP.
Le controller UniFi est tout simplement une machine Linux accessible via ssh, sur laquelle vous pouvez exécuter des commandes de base. Dans le controller, sur la page General, une option permet d'activer ou de désactiver cet accès et de définir les identifiants. Depuis le controller, vous devriez pouvoir exécuter un ping ou un traceroute vers les IP internes GCP.
Vérifiez que votre IP statique est correctement configurée et bien attribuée sur le routeur.
Veillez à toujours utiliser les IP internes GCP pour vos tests, jamais les IP externes : le trafic ne serait pas routé via le tunnel VPN.