Connectez votre centre de données sur site (IDC) à un Virtual Private Cloud (VPC) Alibaba Cloud en utilisant une passerelle VPN traditionnelle et le logiciel open source strongSwan.
Scénario
Une entreprise a créé un VPC dans la région Chine (Hangzhou). Elle souhaite utiliser une passerelle VPN traditionnelle avec strongSwan pour établir une connectivité réseau entre le VPC cloud et l'IDC sur site.
Dans ce scénario, l'IDC ne dispose que d'une seule adresse IP de sortie publique et établit une connexion IPsec à double tunnel avec la passerelle VPN Alibaba Cloud :
Plan des ressources
-
Cloud : VPC avec le bloc CIDR 10.0.0.0/16 dans la région Chine (Hangzhou)
vSwitch 1 : Zone de disponibilité I, bloc CIDR 10.0.0.0/24
vSwitch 2 : Zone de disponibilité J, bloc CIDR 10.0.1.0/24
Instance ECS : située dans vSwitch 1, adresse IP 10.0.0.1
-
Passerelle VPN : après la création, le système attribue automatiquement deux adresses IP publiques :
Adresse IPsec 1 (tunnel actif) : [[0]]
Adresse IPsec 2 (tunnel de secours) : [[0]]
-
Sur site : Bloc CIDR de l'IDC sur site 172.16.0.0/16
Appareil strongSwan : IP privée 172.16.0.1
IP de sortie publique : XX.XX.3.3
Configuration de chiffrement : Paramètres par défaut de la console — AES-128 / SHA-1 / Groupe DH 2 (notation strongSwan). L'algorithme de chiffrement, l'algorithme d'authentification et le groupe DH doivent être identiques aux deux extrémités.
Routage : Utilisez le routage basé sur la destination. Ce mode définit « quel trafic transite par le tunnel VPN » : il suffit de définir les blocs CIDR aux deux extrémités, et le trafic correspondant est traité comme « trafic intéressant ». Le système l'achemine automatiquement via le tunnel et génère la route correspondante.
Ce tutoriel couvre uniquement le scénario avec une seule IP de sortie publique et un routage statique. Pour les scénarios avec deux IPs de sortie publiques ou un routage dynamique BGP, consultez la rubrique Configuration strongSwan.
Prérequis
Le bloc CIDR du VPC et le bloc CIDR de l'IDC sur site ne doivent pas se chevaucher.
Créez un VPC conformément au plan des ressources, avec un vSwitch dans chacune des deux zones de disponibilité différentes. Déployez au moins une instance ECS dans le VPC pour vérifier la connectivité.
Déployez un serveur Linux dans l'IDC sur site (ce tutoriel utilise CentOS Stream 9) avec une adresse IP de sortie publique. Installez strongSwan sur ce serveur pour qu'il serve de passerelle sur site.
Étape 1 : Créer une passerelle VPN traditionnelle
-
Accédez à la page console Passerelle VPN et cliquez sur Create VPN Gateway pour configurer les paramètres clés suivants :
Instance Name : Saisissez un nom d'instance significatif, par exemple vpn-gw-docdev.
Région et zone de disponibilité : Sélectionnez la région où se trouve le VPC. Ce tutoriel utilise Chine (Hangzhou).
Gateway Type : Sélectionnez Standard.
Network Type : Sélectionnez Public.
VPC : Sélectionnez le VPC à connecter.
vSwitch 1 : Sélectionnez un vSwitch dans la zone de disponibilité I.
vSwitch 2 : Sélectionnez un vSwitch dans la zone de disponibilité J. Il doit se trouver dans une zone de disponibilité différente de vSwitch 1 afin de garantir une haute disponibilité inter-zones. Si aucun vSwitch n'est disponible, créez-en un au préalable.
Bandwidth : Sélectionnez une bande passante adaptée à vos besoins métier. Ce tutoriel utilise la valeur par défaut.
IPsec-VPN : Enable.
SSL-VPN : Close.
Billing Cycle : Conservez la valeur par défaut.
Create Service-Linked Role : Assurez-vous qu'un rôle lié au service est créé. La passerelle VPN utilise ce rôle pour accéder aux ressources d'autres produits cloud.
Cliquez sur Buy Now et effectuez le paiement. L'initialisation de l'instance de passerelle VPN prend environ 1 à 5 minutes. Le système attribue deux adresses IP publiques à la passerelle VPN pour les tunnels actif et de secours.
Étape 2 : Créer une passerelle client
Une passerelle client enregistre l'adresse IP publique de votre appareil de passerelle sur site dans Alibaba Cloud. Dans ce scénario, l'IDC ne disposant que d'une seule adresse IP de sortie publique, vous n'avez besoin de créer qu'une seule passerelle client.
Dans le volet de navigation de gauche de la console Passerelle VPN, cliquez sur Customer Gateways.
-
Configurez les paramètres suivants :Create Customer Gateway
Name : Saisissez un nom pour la passerelle client, par exemple cgw-idc-docdev.
IP Address : Saisissez l'adresse IP de sortie publique de l'IDC sur site (XX.XX.3.3).
Étape 3 : Créer une connexion IPsec
Dans le volet de navigation de gauche de la console Passerelle VPN, cliquez sur IPsec Connections.Bind VPN Gateway
-
Configurez les paramètres de base de la connexion IPsec :
Name : Saisissez un nom de ressource significatif, par exemple ipsec-docdev.
Region : Sélectionnez China (Hangzhou).
Bind VPN Gateway : Sélectionnez la passerelle VPN créée à l'étape 1.
Routing Mode : Sélectionnez Destination Routing Mode. Dans ce mode, vous définissez les blocs CIDR aux deux extrémités et le système achemine automatiquement le trafic correspondant via le tunnel et génère la route associée.
Local Network : Saisissez le bloc CIDR du VPC 10.0.0.0/16.
Remote Network : Saisissez le bloc CIDR de l'IDC 172.16.0.0/16.
Effective Immediately : Sélectionnez Yes. Le côté Alibaba Cloud initie la négociation avec le pair, permettant ainsi d'établir rapidement la connexion une fois le pair configuré.
Enable BGP : Non activé dans ce tutoriel.
-
Configurez les paramètres du tunnel :
-
Tunnel 1 (Primary):
Customer Gateway : Sélectionnez la passerelle client créée à l'étape 2.
Pre-Shared Key : Clé pré-partagée utilisée pour l'authentification lors de la négociation du tunnel IPsec. Les clés pré-partagées aux deux extrémités doivent être identiques, sinon le tunnel ne peut pas s'établir. Utilisez un mot de passe robuste contenant des lettres majuscules, minuscules, des chiffres et des caractères spéciaux.
Encryption Configuration : Conservez les valeurs par défaut. Ce tutoriel utilise l'algorithme de chiffrement par défaut (AES128), l'algorithme d'authentification (SHA1) et le groupe DH (group2).
-
Tunnel 1 (Backup):
Customer Gateway : Sélectionnez la même passerelle client que pour le tunnel actif (l'IDC dans ce scénario ne dispose que d'une seule adresse IP de sortie publique).
Pre-Shared Key : Ce tutoriel utilise la même clé que pour le tunnel actif.
Encryption Configuration : Conservez la même configuration que pour le tunnel actif. Utilisez les valeurs par défaut.
-
-
Après avoir cliqué sur OK, le système vous demande si vous souhaitez publier la route. Cliquez sur Cancel pour l'instant.
L'initialisation de la ressource de connexion IPsec prend environ 5 minutes (état : Preparing ), période pendant laquelle vous ne pouvez pas configurer les routes. Passez à l'étape 4 pour configurer strongSwan. La configuration des routes sera effectuée à l'étape 5.
-
Notez les adresses IP publiques des deux tunnels côté cloud. Vous en aurez besoin lors de la configuration de strongSwan :
Revenez à la page de liste IPsec-VPN connection et trouvez la connexion IPsec que vous venez de créer.
Dans la colonne Gateway IP Address, notez l'Adresse IPsec 1 et l'Adresse IPsec 2. Ce tutoriel utilise XX.XX.1.1 et XX.XX.2.2 à titre d'exemple.
Étape 4 : Configurer strongSwan
Les informations suivantes concernant les produits tiers sont fournies à titre indicatif uniquement. Alibaba Cloud n'offre aucune garantie, explicite ou implicite, quant aux performances ou à la fiabilité des produits tiers, ni quant aux impacts résultant des opérations que vous effectuez sur ceux-ci.
La configuration suivante utilise le système d'exploitation CentOS Stream 9 64 bits à titre d'exemple. Pour les autres systèmes d'exploitation, consultez la documentation officielle strongSwan.
1. Configurer les règles de pare-feu
Sur l'appareil strongSwan, autorisez le protocole ESP (numéro de protocole IP 50), le port UDP 500 et le port UDP 4500 afin que les deux adresses IPsec côté cloud soient accessibles.
L'exemple suivant utilise iptables. Adaptez les commandes en fonction de l'outil de pare-feu que vous utilisez réellement :
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p esp -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 500 -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 4500 -j ACCEPT
2. Activer le transfert IP
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p
3. Installer strongSwan
dnf install epel-release -y
dnf install strongswan -y
Étape 4 : Configurer strongSwan
Sauvegardez le fichier de configuration d'origine : mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
Créez un nouveau fichier de configuration : vi /etc/strongswan/swanctl/swanctl.conf
-
Ajoutez et enregistrez la configuration suivante. Remplacez les adresses IP et la clé pré-partagée de l'exemple par vos valeurs réelles :
# strongSwan dual-tunnel IPsec-VPN configuration for: Alibaba Cloud Traditional VPN Gateway + on-premises single public egress IP + destination-based routing (traffic selector) # # Only parameters marked with "(Modify)" need to be changed for your environment. Keep all other parameters as default. # Algorithm note: aes128-sha1-modp1024 = AES-128 / SHA-1 / DH Group 2 (console default) # Active/standby logic: vco1 (priority=1) is the active tunnel, and vco2 (priority=2) is the standby tunnel. Failover is automatic when the active tunnel fails. connections { # === Tunnel 1 (Active) === vco1 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (Modify) Private IP of the strongSwan NIC. In a NAT environment, use the private IP. If the NIC is bound to the public IP, use the public IP. local { auth = psk id = XX.XX.3.3 # (Modify) On-premises public egress IP } remote_addrs = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud remote { auth = psk id = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud. Must match remote_addrs above. } children { vco_child1 { local_ts = 172.16.0.0/16 # (Modify) On-premises traffic selector CIDR block remote_ts = 10.0.0.0/16 # (Modify) Alibaba Cloud traffic selector CIDR block mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 1 # Specifies the active tunnel. Do not modify. } } } # === Tunnel 2 (Standby) === vco2 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (Modify) Private IP of the strongSwan NIC. Same as local_addrs of Tunnel 1. local { auth = psk id = XX.XX.3.3 # (Modify) On-premises public egress IP. Same as Tunnel 1. } remote_addrs = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud remote { auth = psk id = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud. Must match remote_addrs above. } children { vco_child2 { local_ts = 172.16.0.0/16 # (Modify) On-premises traffic selector CIDR block. Same as local_ts of Tunnel 1. remote_ts = 10.0.0.0/16 # (Modify) Alibaba Cloud traffic selector CIDR block. Same as remote_ts of Tunnel 1. mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 2 # Specifies the standby tunnel. Do not modify. } } } } secrets { ike-vco1 { id = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud secret = your-psk-here # (Modify) Pre-shared key for Tunnel 1. Must match the key on the Alibaba Cloud side. } ike-vco2 { id = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud secret = your-psk-here # (Modify) Pre-shared key for Tunnel 2. Must match the key on the Alibaba Cloud side. } }
5. Démarrer strongSwan et vérifier l'état du tunnel
sudo systemctl restart strongswan
swanctl --load-all
watch swanctl --list-sas
Si les deux tunnels affichent ESTABLISHED et que CHILD_SA est à l'état INSTALLED, la connexion IPsec-VPN entre l'appareil strongSwan et la passerelle VPN Alibaba Cloud est correctement établie.
Étape 5 : Publier les routes cloud
Étant donné que ce tutoriel utilise le routage basé sur la destination, le système génère automatiquement une entrée de route dans la Policy-based Route Table de la passerelle VPN.
Vous pouvez publier cette route dans la table de routage du VPC en un clic, afin que le trafic des instances ECS du VPC vers le bloc CIDR de l'IDC soit acheminé vers la passerelle VPN :
Revenez à la page de liste des passerelles VPN et cliquez sur l'ID d'instance de la passerelle VPN créée à l'étape 1 pour ouvrir la page des détails.
Cliquez sur l'onglet Policy-based Route Table. Vous pouvez voir l'entrée de route de destination générée automatiquement par le système après que la connexion IPsec a utilisé le routage basé sur la destination (bloc CIDR de destination 172.16.0.0/16, saut suivant est la connexion IPsec).
-
Dans la colonne Actions de l'entrée de route cible, cliquez sur Advertise pour publier la route dans la table de routage du VPC.
Une fois la route publiée, une nouvelle entrée de route est ajoutée à la table de routage du VPC : bloc CIDR de destination 172.16.0.0/16, saut suivant est la passerelle VPN. Le trafic des instances ECS du VPC vers le bloc CIDR de l'IDC est automatiquement transmis via le tunnel VPN.
Vérification
Vérifier la connectivité
-
Assurez-vous que les règles du groupe de sécurité ECS autorisent le trafic ICMP entrant, puis connectez-vous à l'appareil strongSwan et exécutez la commande suivante pour effectuer un ping vers l'ECS côté cloud :
ping 10.0.0.1Si vous recevez des paquets de réponse, le VPC côté cloud et l'IDC sur site peuvent communiquer entre eux.
-
Assurez-vous que votre pare-feu sur site autorise le trafic ICMP entrant. Ensuite, connectez-vous à l'instance ECS ([[0]]) et effectuez un ping vers l'appareil strongSwan :
ping 172.16.0.1Si vous recevez des paquets de réponse, la connectivité inverse fonctionne également correctement.
Vérifier la haute disponibilité
-
Démarrez un ping de longue durée depuis l'instance ECS vers le serveur sur site :
ping 172.16.0.1 -c 10000 Interrompez le tunnel actif : dans la console Alibaba Cloud, modifiez la clé pré-partagée du tunnel actif pour créer une incompatibilité.
Observez les résultats du ping : le trafic reprend après une brève interruption, ce qui indique que le trafic a basculé automatiquement vers le tunnel de secours.
Rétablissez le tunnel actif : remettez la clé pré-partagée à sa valeur correcte. Le trafic revient au tunnel principal après le rétablissement du tunnel.
Dépannage
Problèmes courants et solutions :
Symptôme | Cause possible | Solution |
La console affiche Négociation échouée | Problème de connectivité réseau | Vérifiez que l'appareil strongSwan peut effectuer un ping vers les adresses IPsec Alibaba Cloud. Confirmez que le pare-feu de l'IDC sur site autorise les ports UDP 500 et 4500. |
Incompatibilité de la clé pré-partagée | Vérifiez que les clés pré-partagées aux deux extrémités sont identiques, y compris la casse et les caractères spéciaux. | |
Incompatibilité des paramètres IKE | Vérifiez si la version IKE, l'algorithme de chiffrement, l'algorithme d'authentification et le groupe DH correspondent aux deux extrémités. Les passerelles VPN traditionnelles ne prennent pas en charge plusieurs suites d'algorithmes : les paramètres doivent être identiques aux deux extrémités. | |
Le tunnel est établi, mais le ping échoue | Route non publiée | Vérifiez si la route de destination de la passerelle VPN a été publiée dans la table de routage du VPC. |
Restriction du groupe de sécurité | Vérifiez si le groupe de sécurité ECS autorise le trafic ICMP provenant du bloc CIDR de l'IDC (172.16.0.0/16). | |
Restriction du pare-feu sur site | Vérifiez si le pare-feu de l'IDC sur site autorise le trafic provenant du bloc CIDR du VPC (10.0.0.0/16). | |
Route manquante sur l'appareil strongSwan | Confirmez que le transfert IP est activé sur l'appareil strongSwan et que les autres serveurs de l'IDC disposent d'une route vers le bloc CIDR du VPC avec l'appareil strongSwan comme saut suivant. |