Crear un túnel VPN

En esta página, se describe cómo agregar un túnel VPN de una puerta de enlace de VPN a otra.

Un túnel VPN es un túnel IPsec encriptado entre la red de una organización y una red remota. Conecta una interfaz VPNGateway a una interfaz PeerGateway y usa el recurso VPNBGPPeer para intercambiar información de enrutamiento a través del túnel.

Antes de comenzar

Para crear un túnel VPN, debes tener lo siguiente:

  • Un recurso existente de puerta de enlace de VPN y puerta de enlace de VPN de intercambio de tráfico. Para obtener más información, consulta Crea una puerta de enlace de VPN y una puerta de enlace de intercambio de tráfico.
  • Es un objeto de par de BGP de VPN existente. Para obtener más información, consulta Crea una sesión de BGP de VPN.
  • Es un secreto existente. Para obtener más información, consulta Crea el secreto con una PSK.
  • Los roles de identidad y acceso necesarios son los siguientes:

    • Administrador de VPN: Tiene permisos de lectura y escritura en todos los recursos relacionados con la VPN. Pídele al administrador de IAM de tu organización que te otorgue el rol de administrador de VPN (vpn-admin).
    • Visualizador de VPN: Tiene permisos de lectura para todos los recursos relacionados con la VPN. Pídele al administrador de IAM de la organización que te otorgue el rol de visualizador de VPN (vpn-viewer).
    • Para obtener más información, consulta Definiciones de roles.

Crear un túnel VPN

Haz referencia a los recursos VPNGateway, PeerGateway, VPNBGPPeer y Secret creados en los pasos anteriores para crear el túnel.

Para crear un túnel VPN, sigue estos pasos:

  1. Crea el objeto 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
    

    Reemplaza lo siguiente:

    • MANAGEMENT_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API zonal. Si aún no generaste un archivo kubeconfig para el servidor de la API en la zona de destino, consulta Accede para obtener más detalles.
    • VPN_TUNNEL_NAME: Es el nombre del túnel VPN que se usa.
    • VPN_GW_NAME: Es el nombre de la puerta de enlace de VPN.
    • VPN_INTERFACE_NAME: Es el nombre de la interfaz de VPN.
    • PEER_GW_NAME: Es el nombre de la puerta de enlace de VPN de intercambio de tráfico.
    • PEER_INTERFACE_NAME: Es el nombre de la interfaz de la puerta de enlace de VPN de intercambio de tráfico.
    • VPN_BGP_PEER_NAME: Es el nombre del par de BGP de la VPN. Para obtener más información, consulta Crea una sesión de BGP de VPN.
    • PSK_NAME: Es el nombre de la PSK que creaste en Crea el secreto con una PSK.
  2. Verifica que el objeto VPN_TUNNEL_NAME se haya conciliado correctamente examinando el campo Status. Obtén los detalles del túnel VPN:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpntunnel VPN_TUNNEL_NAME
    

    Examina el resultado, que debe ser similar al siguiente ejemplo:

    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. Los objetos VPNGateway, PeerGateway y VPNBGPPeer deben tener estados actualizados después de que un VPNTunnel haga referencia a ellos. Por ejemplo, si verificas que el VPNBGPPeer se concilió correctamente, verás valores de estado actualizados. Obtén los detalles del objeto VPNBGPPeer:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpnbgppeer VPN_BGP_PEER_NAME
    

    Examina el resultado. Los valores de estado ahora están actualizados:

    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
    

¿Qué sigue?