Accès à d'autres nuages avec Libreswan

Libreswan est une mise en oeuvre IPSec à code source libre basée sur FreeS/WAN et Openswan. La plupart des distributions Linux comprennent Libreswan ou facilitent son installation. Vous pouvez l'installer sur des hôtes dans votre réseau sur place ou celui d'un fournisseur de services infonuagiques. Cette rubrique décrit comment connecter votre réseau en nuage virtuel (VCN) Oracle Cloud Infrastructure à un autre fournisseur de services infonuagiques à l'aide d'un RPV site à site avec une machine virtuelle Libreswan comme équipement local d'abonné (CPE).

Dans l'exemple présenté ici, l'autre fournisseur de services infonuagiques est Amazon Web Services (AWS). Un RPV site à site offre une connexion IPSec site à site sécurisée et chiffrée entre les environnements Oracle et Amazon. Elle permet aux ressources situées dans les deux nuages de communiquer à l'aide de leurs adresses IP privées comme si elles se trouvaient dans le même segment de réseau.

Un guide des CPE Libreswan est également disponible pour tous les autres cas d'utilisation.

La prise en charge de l'interface de tunnel virtuel pour cette configuration basée sur les routes requiert au moins la version 3.18 de Libreswan, ainsi qu'un noyau Linux 3.x ou 4.x récent. Cette configuration a été validée à l'aide de Libreswan version 3.29.

Architecture

Le diagramme suivant présente la disposition générale de la connexion.

Cette image montre la disposition générale de deux nuages connectés avec un RPV site à site et un CPE Libreswan.

Configuration

Important

Les instructions de configuration de cette section sont fournies par Oracle Cloud Infrastructure pour Libreswan. Si vous avez besoin de soutien technique ou d'une assistance supplémentaire, consultez la documentation sur Libreswan.

Libreswan prend en charge les tunnels basés sur des routes et sur des politiques. Les types de tunnel peuvent coexister sans interférer les uns avec les autres. Les têtes de réseau du RPV d'Oracle utilisent des tunnels basés sur des routes. Oracle recommande de configurer Libreswan avec la syntaxe de configuration de l'interface de tunnel virtuel.

Reportez-vous aux Paramètres IPSec pris en charge pour plus de détails sur les paramètres spécifiques utilisés dans ce document.

Fichiers de configuration Libreswan par défaut

L'installation de Libreswan par défaut crée les fichiers suivants :

  • etc/ipsec.conf : Racine de la configuration Libreswan.
  • /etc/ipsec.secrets : Racine de l'emplacement où Libreswan recherche les secrets (clés prépartagées du tunnel).
  • /etc/ipsec.d/ : Répertoire de stockage des fichiers .conf et .secrets pour vos tunnels Oracle Cloud Infrastructure (par exemple, oci-ipsec.conf et oci-ipsec.secrets). Libreswan vous encourage à créer ces fichiers dans ce dossier.

Le fichier etc/ipsec.conf par défaut comprend cette ligne :

include /etc/ipsec.d/*.conf

Le fichier etc/ipsec.secrets par défaut comprend cette ligne :

include /etc/ipsec.d/*.secrets

Les lignes précédentes fusionnent automatiquement tous les fichiers .conf et .secrets du répertoire /etc/ipsec.d dans la configuration principale et les fichiers de secrets utilisés par Libreswan.

À propos de l'utilisation de IKEv2

Oracle prend en charge le protocole Internet Key Exchange version 1 (IKEv1) et version 2 (IKEv2). Si vous configurez la connexion IPSec dans la console pour utiliser IKEv2, vous devez limiter votre CPE aux paramètres de chiffrement IKEv2 et connexes qu'il prend en charge. Pour obtenir la liste des paramètres pris en charge par Oracle pour IKEv1 ou IKEv2, voir Paramètres IPSec pris en charge.

Vous spécifiez la version IKE lors du paramétrage du fichier de configuration IPSec dans la tâche 4 de la section suivante. Dans cet exemple de fichier, un commentaire explique comment configurer IKEv2 plutôt qu'IKEv1.

Processus de configuration

Tâche 1 : Préparer l'instance Libreswan AWS
  1. À l'aide de la console ou des API AWS, créez une machine virtuelle Libreswan en utilisant son processus de provisionnement. Utilisez Oracle Linux, CentOS ou Red Hat comme système d'exploitation principal.
  2. Après le démarrage de la nouvelle instance, connectez-vous à l'aide de SSH et installez le paquetage Libreswan :

    sudo yum -y install libreswan
  3. Dans la console AWS, désactivez les contrôles de la source et de la destination de l'instance de machine virtuelle Libreswan en cliquant avec le bouton droit de la souris sur l'instance, en cliquant sur Networking (Réseau), puis sur Change Source/Dest. (Changer le contrôle de la source/dest). . Lorsque vous y êtes invité, cliquez sur Yes, Disable (Oui, désactiver).

    Cette image présente la boîte de dialogue de la console AWS servant à désactiver la vérification de la source/destination sur l'instance de machine virtuelle Libreswan.
  4. Dans la machine virtuelle Libreswan, configurez IP_forward pour permettre aux clients AWS d'envoyer et de recevoir du trafic par l'intermédiaire de la machine virtuelle Libreswan. Dans le fichier /etc/sysctl.conf, définissez les valeurs suivantes et appliquez les mises à jour avec sudo sysctl -p.

    net.ipv4.ip_forward=1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send_redirects = 0
    net.ipv4.conf.eth0.send_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.conf.eth0.accept_redirects = 0
  5. Dans la console AWS, modifiez la table de routage AWS. Ajoutez une règle avec comme destination le CIDR du réseau VCN (172.0.0.0/16) et comme cible l'ID instance Libreswan AWS (i-016ab864b43cb368e dans cet exemple).

    Cette image présente la boîte de dialogue de la console AWS servant à modifier une règle de routage.
  6. Dans la console AWS, activez le trafic TCP et UDP entrant sur les ports 4500 et 500 pour permettre une connexion IPSec de RPV site à site d'Oracle Cloud Infrastructure avec la machine virtuelle AWS Libreswan. Cette tâche comprend la modification des groupes de sécurité et des listes de contrôle d'accès réseau AWS. Vous pouvez régler la valeur source à l'adresse IP publique Oracle (le point d'extrémité du tunnel IPSec de la tête de réseau du RPV Oracle) au lieu de 0.0.0.0/0.

    Pour les groupes de sécurité :

    Cette image présente la boîte de dialogue de la console AWS servant à modifier les règles des groupes de sécurité.

    Pour les listes de contrôle d'accès réseau :

    Cette image présente la boîte de dialogue de la console AWS servant à modifier les listes de contrôle d'accès réseau.
Tâche 2 : Configurer la passerelle DRG et l'objet CPE Oracle Cloud Infrastructure
  1. Dans la console Oracle, créez un objet d'équipement local d'abonné (CPE) qui pointe vers l'adresse IP publique de l'instance AWS Libreswan (34.200.255.174). Pour ce faire, utilisez l'application d'aide pour la configuration de l'équipement local d'abonné.

  2. Si aucune passerelle DRG n'est encore associée à votre réseau VCN : Dans la console Oracle, créez une passerelle DRG puis associez-la au réseau VCN (172.0.0.0/16).

  3. Dans la console Oracle, créez une connexion IPSec et faites-l a pointer vers le CIDR du RPV AWS (10.0.0.0/16). En d'autres termes, lorsque vous créez la connexion IPSec, réglez sa route statique avec le CIDR du VPC AWS.

    Pour chaque connexion IPSec configurée, Oracle crée deux tunnels et affecte les éléments suivants à chacun :

    • Point d'extrémité du tunnel IPSec de tête de réseau du RPV Oracle
    • Clé secrète partagée du tunnel du RPV d'Oracle

    Vous pouvez voir le statut du tunnel IPSec et l'adresse IP de la tête de réseau du RPV Oracle en cliquant sur le menu Actions (Menu Actions) pour la connexion IPSec, puis sur Voir les détails. Au départ, chaque tunnel se trouve à l'état DOWN (hors ligne) car il vous reste encore des opérations de configuration à effectuer plus tard sur la machine virtuelle Libreswan AWS.

    Pour voir la clé secrète partagée, cliquez sur le menu Actions (Menu Actions) d'un tunnel individuel, puis sur Voir les détails. Cliquez sur Show (Afficher) à côté de Shared Secret (Secret partagé).

  4. Dans la console Oracle, modifiez les règles de sécurité du réseau VCN pour activer le trafic TCP et UDP entrant sur les ports 4500 et 500, comme vous l'avez fait pour les groupes de sécurité et les listes de contrôle d'accès réseau AWS. Vous pouvez utiliser l'adresse IP publique de la machine virtuelle Libreswan AWS et non 0.0.0.0/0 s'il s'agit d'une adresse IP publique persistante. Ouvrez également tous les protocoles et ports pour le trafic entrant à partir du CIDR du VPC AWS (10.0.0.0/16). Rappel : Les listes de sécurité sont associées à un sous-réseau. Modifiez donc la liste de sécurité associée à chaque sous-réseau qui doit communiquer avec le nuage VPC AWS. Ou, si vous utilisez des groupes de sécurité de réseau VCN, modifiez les règles dans les groupes NSG correspondants.

  5. Dans la console Oracle, modifiez les tables de routage du réseau VCN pour ajouter une règle où le CIDR du VPC AWS (10.0.0.0/16) est le bloc CIDR de destination, et la passerelle DRG que vous avez créée précédemment, la cible. Rappel : Les tables de routage sont associées à un sous-réseau. Modifiez donc la table de routage associée à chaque sous-réseau qui doit communiquer avec le nuage VPC AWS.

Tâche 3 : Déterminer les valeurs de configuration requises

La configuration de Libreswan utilise les variables suivantes. Déterminez les valeurs avant de poursuivre la configuration.

  • ${cpeLocalIP} : Adresse IP de votre appareil Libreswan.
  • ${cpePublicIpAddress} : Adresse IP publique de Libreswan. Il s'agit de l'adresse IP de votre interface externe. Selon la topologie de votre réseau, la valeur peut être différente de ${cpeLocalIP}.
  • ${oracleHeadend1} : Pour le premier tunnel, point d'extrémité de l'adresse IP publique Oracle obtenu de la console Oracle.
  • ${oracleHeadend2} : Pour le second tunnel, point d'extrémité de l'adresse IP publique Oracle obtenu de la console Oracle.
  • ${vti1} : Nom de la première interface VTI utilisée. Par exemple, vti1.
  • ${vti2} : Nom de la seconde interface VTI utilisée. Par exemple, vti2.
  • ${sharedSecret1} : Clé prépartagée du premier tunnel. Vous pouvez utiliser la clé prépartagée fournie par Oracle par défaut ou fournir votre propre clé lorsque vous configurez la connexion IPSec dans la console Oracle.
  • ${sharedSecret2} : Clé prépartagée du second tunnel. Vous pouvez utiliser la clé prépartagée fournie par Oracle par défaut ou fournir votre propre clé lorsque vous configurez la connexion IPSec dans la console Oracle.
  • ${vcnCidrNetwork} : Intervalle d'adresses IP du réseau VCN.
Tâche 4 : Paramétrer le fichier de configuration : /etc/ipsec.d/oci-ipsec.conf

La configuration Libreswan utilise le concept de gauche et de droite pour définir les paramètres de configuration de votre équipement local d'abonné (CPE) et de la passerelle distante. N'importe quel côté de la connexion (conn dans la configuration de Libreswan) peut être la gauche ou la droite, mais la configuration de cette connexion doit être cohérente. Dans cet exemple :

  • Gauche : Votre CPE Libreswan local
  • Droite : Tête de réseau du RPV Oracle

Utilisez le modèle suivant pour votre fichier /etc/ipsec.d/oci-ipsec.conf. Ce fichier définit les deux tunnels créés par Oracle lors de la configuration de la connexion IPSec.

Important

Si votre équipement local d'abonné est derrière un appareil NAT 1–1, annulez la mise en commentaire du paramètre leftid et réglez-le à ${cpePublicIpAddress}.
conn oracle-tunnel-1
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend1}
     authby=secret
     leftsubnet=0.0.0.0/0 
     rightsubnet=0.0.0.0/0
     auto=start
     mark=5/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti1}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
conn oracle-tunnel-2
     left=${cpeLocalIP}
     # leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
     right=${oracleHeadend2}
     authby=secret
     leftsubnet=0.0.0.0/0
     rightsubnet=0.0.0.0/0
     auto=start
     mark=6/0xffffffff # Needs to be unique across all tunnels
     vti-interface=${vti2}
     vti-routing=no
     ikev2=no # To use IKEv2, change to ikev2=insist
     ike=aes_cbc256-sha2_384;modp1536
     phase2alg=aes_gcm256;modp1536
     encapsulation=yes
     ikelifetime=28800s
     salifetime=3600s
Tâche 5 : Configurer le fichier de secrets : /etc/ipsec.d/oci-ipsec.secrets

Utilisez le modèle suivant pour votre fichier /etc/ipsec.d/oci-ipsec.secrets. Il contient deux lignes par connexion IPSec (une ligne par tunnel).

${cpePublicIpAddress} ${ipAddress1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${sharedSecret2}"
Tâche 6 : Redémarrer la configuration de Libreswan

Après avoir paramétré vos fichiers de configuration et de secrets, vous devez redémarrer le service Libreswan avec la commande suivante.

Important

Le redémarrage du service Libreswan peut avoir une incidence sur les tunnels existants.
service ipsec restart
Tâche 7 : Configurer le routage IP

Utilisez la commande ip suivante pour créer des routes statiques qui envoient le trafic à votre réseau VCN au moyen des tunnels IPSec. Si vous êtes connecté avec un compte d'utilisateur sans privilèges, il vous faudra peut-être ajouter sudo avant la commande.

Important

Les routes statiques créées avec la commande ip route ne sont pas conservées lors d'un redémarrage. Pour déterminer comment rendre vos routes persistantes, reportez-vous à la documentation de la distribution Linux de votre choix.
ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show

Vérification

Un service Surveillance, également disponible dans Oracle Cloud Infrastructure, vous permet de contrôler vos ressources en nuage de manière active et passive. Pour plus d'informations sur la surveillance de votre RPV site à site, voir Mesures du RPV site à site.

En cas de problèmes, voir Dépannage du RPV site à site.

Vérifier le statut de Libreswan

Vérifiez l'état courant de vos tunnels Libreswan à l'aide de la commande suivante :

ipsec status

Le tunnel est établi si vous voyez une ligne qui inclut ce qui suit :

STATE_MAIN_I4: ISAKMP SA established

Si vous utilisez IKEv2, vous voyez ce qui suit :

STATE_V2_IPSEC_I (IPsec SA established)

Par la suite, si vous devez ouvrir un ticket My Oracle Support concernant votre tunnel Libreswan, incluez la sortie de la commande ipsec status précédente.

Vérification du statut de l'interface de tunnel

Vérifiez si les interfaces de tunnel virtuel sont en ligne ou hors ligne à l'aide de la commande ifconfig ou ip link show. Vous pouvez également utiliser des applications telles que tcdump avec les interfaces.

Voici un exemple de la sortie ifconfig avec une mise en oeuvre Libreswan en cours d'exécution qui présente les interfaces VTI disponibles.

ifconfig
<output trimmed>
                 
vti01: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::1 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 10 dropped 0 overruns 0 carrier 10 collisions 0
 
vti02: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
     inet6 2001:db8::2 prefixlen 64 scopeid 0x20<link>
     tunnel txqueuelen 1000 (IPIP Tunnel)
     RX packets 0 bytes 0 (0.0 B)
     RX errors 0 dropped 0 overruns 0 frame 0
     TX packets 0 bytes 0 (0.0 B)
     TX errors 40 dropped 0 overruns 0 carrier 40 collisions 0

Voici un exemple de sortie pour ip link show :

ip link show
<output trimmed>
 
9: vti01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.51
 
10: vti02@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue
state UNKNOWN mode DEFAULT group default qlen 1000
   link/ipip 10.1.2.3 peer 192.168.0.49

De plus, dans la console Oracle, chaque tunnel IPSec doit maintenant être à l'état UP (Actif).