Créer un tunnel VPN

Cette page explique comment ajouter un tunnel VPN d'une passerelle VPN à une autre.

Un tunnel VPN est un tunnel IPsec chiffré entre le réseau d'une organisation et un réseau distant. Il connecte une interface VPNGateway à une interface PeerGateway et utilise la ressource VPNBGPPeer pour échanger des informations de routage sur le tunnel.

Avant de commencer

Pour créer un tunnel VPN, vous devez disposer des éléments suivants :

  • Une passerelle VPN et une passerelle VPN de pairs existantes. Pour en savoir plus, consultez Créer une passerelle VPN et une passerelle de pair.
  • Objet de pair BGP VPN existant. Pour en savoir plus, consultez Créer une session BGP VPN.
  • Un secret existant. Pour en savoir plus, consultez Créer le secret avec une clé PSK.
  • Rôles d'identité et d'accès nécessaires :

    • Administrateur VPN : dispose d'autorisations de lecture et d'écriture sur toutes les ressources liées au VPN. Demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Administrateur VPN (vpn-admin).
    • Lecteur VPN : dispose d'autorisations de lecture sur toutes les ressources liées au VPN. Demandez à votre administrateur IAM de l'organisation de vous attribuer le rôle Lecteur VPN (vpn-viewer).
    • Pour en savoir plus, consultez Définitions des rôles.

Créer un tunnel VPN

Faites référence aux ressources VPNGateway, PeerGateway, VPNBGPPeer et Secret créées lors des étapes précédentes pour créer le tunnel.

Pour créer un tunnel VPN, procédez comme suit :

  1. Créez l'objet VPNTunnel :

    kubectl --kubeconfig MANAGEMENT_API_SERVER create -n platform -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: VPNTunnel
    metadata:
      name: VPN_TUNNEL_NAME
    spec:
      vpnInterface:
        name: VPN_GW_NAME
        namespace: platform
        interface: VPN_INTERFACE_NAME
      peerInterface:
        name: PEER_GW_NAME
        namespace: platform
        interface: PEER_INTERFACE_NAME
      vpnBGPPeer:
        name: VPN_BGP_PEER_NAME
        namespace: platform
      ikeKey:
        name: PSK_NAME
        namespace: platform
    EOF
    

    Remplacez les éléments suivants :

    • MANAGEMENT_API_SERVER : chemin d'accès au fichier kubeconfig du serveur d'API zonal. Si vous n'avez pas encore généré de fichier kubeconfig pour le serveur d'API dans la zone cible, consultez Se connecter pour en savoir plus.
    • VPN_TUNNEL_NAME : nom du tunnel VPN utilisé.
    • VPN_GW_NAME : nom de la passerelle VPN.
    • VPN_INTERFACE_NAME : nom de l'interface VPN.
    • PEER_GW_NAME : nom de la passerelle VPN de pairs.
    • PEER_INTERFACE_NAME : nom de l'interface de la passerelle VPN de pairs.
    • VPN_BGP_PEER_NAME : nom du pair BGP VPN. Pour en savoir plus, consultez Créer une session BGP VPN.
    • PSK_NAME : nom de la clé PSK que vous avez créée dans Créer le secret avec une clé PSK.
  2. Vérifiez que l'objet VPN_TUNNEL_NAME a été correctement rapproché en examinant le champ Status. Obtenez les détails du tunnel VPN :

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpntunnel VPN_TUNNEL_NAME
    

    Examinez le résultat. Il doit ressembler à l'exemple suivant :

    Status:
      Conditions:
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Reconciled
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Ready
        Last Transition Time:  2024-05-10T00:33:31Z
        Message:               Tunnel is established.
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  TunnelEstablished
      State:                   Established
    
  3. Les objets VPNGateway, PeerGateway et VPNBGPPeer doivent avoir des états mis à jour après avoir été référencés par un VPNTunnel. Par exemple, si vous vérifiez que le VPNBGPPeer a été correctement rapproché, les valeurs d'état sont mises à jour. Obtenez les détails de l'objet VPNBGPPeer :

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpnbgppeer VPN_BGP_PEER_NAME
    

    Examinez le résultat. Les valeurs d'état sont désormais mises à jour :

    Status:
      Advertised:
        Prefix:  10.0.0.16/28
        Prefix:  10.0.1.32/27
        Prefix:  172.16.0.0/14
        Prefix:  172.20.0.0/17
        Prefix:  172.20.128.0/17
        Prefix:  2002:4860:100e:fa00::/58
      Conditions:
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ValidIPs
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  TunnelsAttached
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Reconciled
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  AdvertisedRoutesReady
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ReceivedRoutesValid
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  ReceivedRoutesReady
        Last Transition Time:  2024-05-10T00:36:38Z
        Message:               Ready
        Observed Generation:   1
        Reason:                Ready
        Status:                True
        Type:                  Ready
      Received:
        Prefix:  192.168.100.0/24
        Prefix:  193.188.200.0/24
      State:     Established
    

Étapes suivantes