Configuración de la conectividad VPN clásica
Esta información de VPN es específica de los clústeres clásicos. Para obtener información sobre los clústeres de VPN, consulte Configuración de la conectividad de VPN de VPC.
La conectividad de VPN le permite conectar de forma segura apps de un clúster de Kubernetes en IBM Cloud® Kubernetes Service a una red local. También puede conectar apps que son externas al clúster a una app que se ejecuta dentro del clúster.
Para conectar de forma segura sus nodos trabajadores y apps a un centro de datos local, puede utilizar una de las siguientes opciones.
-
strongSwan IPSec VPN Servicio: Puede configurar un servicio strongSwan IPSec VPN que conecte de forma segura su clúster Kubernetes con una red local. El servicio VPN IPSec de strongSwan proporciona un canal de comunicaciones de extremo a extremo seguro sobre Internet que está basado en la suite de protocolos Internet Protocol Security (IPSec) estándar del sector. Para configurar una conexión segura entre el clúster y una red local, configure y despliegue el servicio VPN IPSec strongSwan directamente en un pod del clúster.
-
IBM Cloud® Direct Link: IBM Cloud Direct Link le permite crear una conexión privada directa entre entornos de red remotos y IBM Cloud Kubernetes Service sin tener que direccionar sobre Internet público. Las ofertas de IBM Cloud Direct Link resultan útiles cuando se deben implementar cargas de trabajo híbridas, cargas de trabajo entre proveedores, transferencias de datos grandes o frecuentes o cargas de trabajo privadas. Para elegir una conexión de IBM Cloud Direct Link y configurar una conexión de IBM Cloud Direct Link, consulte Iniciación a IBM Cloud IBM Cloud Direct Link en la documentación de IBM Cloud Direct Link.
-
Virtual Router Appliance (VRA): puede optar por configurar un VRA(Vyatta) para configurar un punto final IPSec VPN. Esta opción es útil si tiene un clúster grande, desea acceder a varios clústeres sobre una sola VPN o necesita una VPN basada en ruta. Para configurar VRA, consulte Configuración de la conectividad de VPN con VRA.
Si tiene previsto conectar el clúster a las redes locales, consulte las siguientes características que le pueden resultar de ayuda:
-
Es posible que tenga conflictos de subred con el rango predeterminado proporcionado por IBM 172.30.0.0/16 para los pods y el rango 172.21.0.0/16 para los servicios. Puede evitar conflictos de subred al crear un clúster desde la CLI especificando un CIDR de subred personalizado para los pods en la opción
--pod-subnet
y un CIDR de subred personalizado para los servicios en la opción--service-subnet
. -
Si la solución VPN conserva las direcciones IP de origen de las solicitudes, puede crear rutas estáticas personalizadas para asegurarse de que los nodos trabajadores pueden direccionar las respuestas del clúster de nuevo a la red local.
Los rangos de subred 172.16.0.0/16
, 172.18.0.0/16
, 172.19.0.0/16
y 172.20.0.0/16
están prohibidos porque están reservados para la funcionalidad de plano de control de IBM Cloud Kubernetes Service.
Utilización del diagrama de Helm del servicio VPN IPSec de strongSwan
Utilice un diagrama de Helm para configurar y desplegar el servicio VPN IPSec de strongSwan dentro de un pod de Kubernetes.
Puesto que strongSwan está integrado en su clúster, no necesita un dispositivo de pasarela externo. Cuando se establece la conectividad de VPN, las rutas se configuran automáticamente en todos los nodos de trabajador del clúster. Estas rutas permiten la conectividad bidireccional a través del túnel VPN entre pods en cualquier nodo trabajador y el sistema remoto. Por ejemplo, el diagrama siguiente muestra cómo una app en IBM Cloud Kubernetes Service se puede comunicar con un servidor local mediante una conexión VPN strongSwan.
-
Una app en el clúster,
myapp
, recibe una solicitud desde un servicio Ingress o LoadBalancer. Dicha app debe conectarse de forma segura a los datos en su red local. -
La solicitud al centro de datos local se reenvía al pod de VPN IPSec strongSwan. La dirección IP de destino se utiliza para determinar qué paquetes de red deben enviarse al pod de VPN IPSec strongSwan.
-
La solicitud se cifra y envía a través del túnel VPN al centro de datos local.
-
La solicitud entrante pasa a través del cortafuegos local y se entrega al punto final de túnel VPN (direccionador) donde se descifra.
-
El punto final de túnel VPN (direccionador) reenvía la solicitud al sistema principal o al servidor en local, en función de la dirección IP de destino que se haya especificado en el paso 2. Los datos necesarios se devuelven a través de la conexión VPN a
myapp
por medio del mismo proceso.
Consideraciones sobre el servicio VPN de strongSwan
Antes de utilizar el diagrama de Helm strongSwan, revise las siguientes consideraciones y limitaciones.
- El diagrama de Helm strongSwan solo se admite para clústeres clásicos y no se admite para clústeres de VPC. Para obtener información sobre los clústeres de VPN, consulte Configuración de la conectividad de VPN de VPC.
- El diagrama de Helm strongSwan requiere que el punto final VPN remoto haya habilitado el cruce de NAT. El cruce de NAT requiere el puerto UDP 4500, además del puerto IPSec de IPSec predeterminado de 500. Los dos puertos UDP deben estar permitidos a través de cualquier cortafuegos que esté configurado.
- El diagrama de Helm strongSwan no da soporte a VPN IPSec basadas en rutas.
- La tabla strongSwan Helm admite VPN IPSec que utilicen claves precompartidas, pero no admite VPN IPSec que requieran certificados.
- El diagrama de Helm strongSwan no permite que varios clústeres y otros recursos de IaaS compartan una sola conexión VPN.
- El diagrama de Helm strongSwan se ejecuta como un pod de Kubernetes dentro del clúster. El rendimiento de VPN se ve afectado por el uso de memoria y de red por parte de Kubernetes y de otros pods que se ejecuten en el clúster. Si tiene un entorno en el que el rendimiento sea un factor clave, tenga en cuenta la posibilidad de utilizar una solución VPN que se ejecute fuera del clúster en hardware dedicado.
- El diagrama de Helm strongSwan ejecuta un solo pod de VPN como punto final de túnel IPSec. Si el pod falla, el clúster reinicia el pod. Sin embargo, es posible que experimente un breve tiempo de inactividad mientras se inicia el nuevo pod y se restablece la conexión VPN. Si necesita una recuperación de errores más rápida o una solución de alta disponibilidad más elaborada, tenga en cuenta la posibilidad de utilizar una solución VPN que se ejecute fuera del clúster en hardware dedicado.
- El diagrama de Helm strongSwan no proporciona métricas ni supervisión del tráfico de red que fluye a través de la conexión VPN. Para ver una lista de las herramientas de supervisión a las que se da soporte, consulte Servicios de registro y de supervisión.
- Solo se admiten las versiones del diagrama de Helm strongSwan que se han publicado en los últimos 6 meses. Asegúrese de actualizar el diagrama de Helm de strongSwan consecuentemente para ver las características más recientes y los arreglos de seguridad.
Los usuarios del clúster pueden utilizar el servicio VPN de strongSwan para conectar con el nodo maestro de Kubernetes a través del punto final de servicio en la nube privado. Sin embargo, la comunicación con el nodo maestro de Kubernetes a
través del punto final de servicio de nube privada debe pasar por el rango de direcciones IP de 166.X.X.X
, que no es direccionable desde una conexión VPN. Puede exponer el punto final de servicio en la nube privado del nodo maestro
para los usuarios del clúster utilizando un equilibrador de carga de red (NLB) privado. El NLB privado expone el punto final de servicio en la nube privado del
nodo maestro como una dirección IP interna de clúster 172.21.x.x
a la que puede acceder el pod VPN de strongSwan. Si solo habilita el punto final de servicio en la nube privado, puede utilizar el panel de control de Kubernetes
o puede habilitar temporalmente el punto final de servicio en la nube público para crear el NLB privado.
Configuración de la VPN strongSwan en un clúster multizona
Los clústeres multizona proporcionan una alta disponibilidad para las aplicaciones en caso de interrupción del servicio, ya que las instancias de las aplicaciones están disponibles en nodos de trabajo de varias zonas. Sin embargo, configurar el servicio de VPN strongSwan en un clúster multizona es más complejo que configurar strongSwan en un clúster de una sola zona.
Antes de configurar strongSwan en un clúster multizona, intente desplegar un diagrama de Helm de strongSwan en un clúster de una sola zona. Al establecer por primera vez una conexión VPN entre un clúster de una sola zona y una red local, puede determinar más fácilmente los valores de cortafuegos de red remoto que son importantes para una configuración strongSwan multizona.
- Algunos puntos finales de VPN remota tienen valores, como por ejemplo
leftid
orightid
, en el archivoipsec.conf
. Si tiene estos valores, compruebe si debe establecer el valor deleftid
en la dirección IP del túnel IPSec de VPN. - Si la conexión es de entrada al clúster desde la red remota, compruebe si el punto final de VPN remota puede volver a establecer la conexión VPN con una dirección IP distinta en caso de que se produzca una anomalía en el equilibrador de carga en una zona.
Para empezar a trabajar con strongSwan en un clúster multizona, elija una de las opciones siguientes.
- Si puede utilizar una conexión VPN de salida, puede optar por configurar solo un despliegue de VPN de strongSwan. Consulte Configuración de una conexión VPN de salida desde un clúster multizona.
- Si necesita una conexión VPN de entrada, los valores de configuración que puede utilizar dependen de si el punto final de la VPN remota se puede configurar de modo que vuelva a establecer la conexión VPN con otra IP pública del equilibrador
de carga si se detecta una interrupción.
- Si el punto final de VPN remota puede volver a establecer automáticamente la conexión VPN con otra IP, puede optar por configurar solo un despliegue de VPN de strongSwan. Consulte Configuración de una conexión de VPN de entrada a un clúster multizona.
- Si el punto final de VPN remoto no puede restablecer automáticamente la conexión VPN en otra IP, se debe desplegar un servicio VPN strongSwan de entrada por separado en cada zona. Consulte Configuración de una conexión VPN en cada zona de un clúster multizona.
Intente configurar el entorno de modo que solo necesite un despliegue de VPN strongSwan para una conexión de VPN de salida o de entrada con el clúster multizona. Si debe configurar VPN de strongSwan separadas en cada zona, asegúrese de planificar cómo gestionar esta complejidad añadida y el aumento en el uso de recursos.
Configuración de una sola conexión VPN de salida desde un clúster multizona
La solución más sencilla para configurar el servicio VPN de strongSwan en un clúster multizona consiste en utilizar una única conexión VPN de salida que flote entre distintos nodos trabajadores en todas las zonas de disponibilidad del clúster.
Cuando la conexión VPN es de salida del clúster multizona, solo se necesita un despliegue de strongSwan. Si se elimina un nodo trabajador o se experimenta un tiempo de inactividad, kubelet
vuelve a planificar el pod de VPN en
un nuevo nodo trabajador. Si una zona de disponibilidad experimenta una interrupción, kubelet
vuelve a planificar el pod de VPN en un nuevo nodo trabajador en otra zona.
-
Configurar un diagrama de Helm de VPN de strongSwan. Cuando realice los pasos de esa sección, asegúrese de que especifica los valores siguientes.
ipsec.auto
: Cambie su valor porstart
. Las conexiones son de salida del clúster.loadBalancerIP
: No especifique una dirección IP. Deje este valor en blanco.zoneLoadBalancer
: Especifique una dirección IP pública de equilibrador de carga para cada zona en la que tenga nodos trabajadores. Puede comprobar las direcciones IP públicas disponibles o liberar una dirección IP usada. Puesto que el pod de VPN de strongSwan se puede planificar en un nodo trabajador de cualquier zona, la lista de las IP garantiza que se puede utilizar una IP del equilibrador de carga en cualquier zona en la que se haya planificado el pod de VPN.connectUsingLoadBalancerIP
: Establezca su valor entrue
. Cuando el pod de VPN de strongSwan se planifica en un nodo trabajador, el servicio strongSwan selecciona la dirección IP del equilibrador de carga que se encuentra en la misma zona y utiliza esta dirección IP para establecer la conexión de salida.local.id
: Especifique un valor fijo que reciba soporte del punto final de VPN remota. Si el punto final de VPN remoto requiere que establezca la opciónlocal.id
(valorleftid
enipsec.conf
) en la dirección IP pública del túnel de VPN IPSec, establezcalocal.id
en%loadBalancerIP
. Este valor configura automáticamente el valorleftid
enipsec.conf
en la dirección IP del equilibrador de carga que se utiliza para la conexión.- Opcional: oculte todas las direcciones IP de clúster tras una única dirección IP en cada zona estableciendo
enableSingleSourceIP
entrue
. Esta opción proporciona una de las configuraciones más seguras para la conexión VPN porque no se permiten conexiones entre la red remota y el clúster. También debe establecerlocal.subnet
en la variable%zoneSubnet
y utilizarlocal.zoneSubnet
para especificar una dirección IP como una subred /32 para cada zona del clúster.
-
En el cortafuegos de red remota, permita las conexiones VPN entrantes de IPSec desde las direcciones IP públicas que aparecen en la lista del valor
zoneLoadBalancer
. -
Configure el punto final de VPN remota de modo que permita una conexión de VPN entrante desde cada una de las posibles IP del equilibrador de carga que aparecen en la lista del valor
zoneLoadBalancer
.
Configuración de una sola conexión VPN de entrada a un clúster multizona
Cuando necesite conexiones VPN entrantes y el punto final de VPN remota puede volver a establecer automáticamente la conexión VPN con otra IP cuando se detecta una anomalía, puede utilizar una única conexión VPN de entrada que flote entre distintos nodos trabajadores en todas las zonas de disponibilidad del clúster.
El punto final de VPN remota puede establecer la conexión VPN con cualquiera de los equilibradores de carga de strongSwan en cualquiera de las zonas. La solicitud de entrada se envía al pod de VPN independientemente de la zona en la que se
encuentre el pod de VPN. Las respuestas procedentes del pod de VPN se envían de nuevo a través del equilibrador de carga original al punto final de VPN remota. Esta opción garantiza una alta disponibilidad debido a que kubelet
vuelve a planificar el pod de VPN en un nuevo nodo trabajador si se elimina un nodo trabajador o si se experimenta un tiempo de inactividad. Además, si una zona de disponibilidad experimenta una interrupción, el punto final de VPN remota
puede volver a establecer la conexión VPN con la dirección IP del equilibrador de carga de otra zona para que se pueda acceder al pod de VPN.
-
Configurar un diagrama de Helm de VPN de strongSwan. Cuando realice los pasos de esa sección, asegúrese de que especifica los valores siguientes.
ipsec.auto
: Cambie su valor poradd
. Las conexiones son de entrada en el clúster.loadBalancerIP
: No especifique una dirección IP. Deje este valor en blanco.zoneLoadBalancer
: Especifique una dirección IP pública de equilibrador de carga para cada zona en la que tenga nodos trabajadores. Puede comprobar las direcciones IP públicas disponibles o liberar una dirección IP usada.local.id
: Si el punto final de VPN remoto requiere que establezca la opciónlocal.id
(valorleftid
enipsec.conf
) en la dirección IP pública del túnel de VPN IPSec, establezcalocal.id
en%loadBalancerIP
. Este valor configura automáticamente el valorleftid
enipsec.conf
en la dirección IP del equilibrador de carga que se utiliza para la conexión.
-
En el cortafuegos de red remota, permita las conexiones VPN de salida de IPSec a las direcciones IP públicas que aparecen en la lista del valor
zoneLoadBalancer
.
Configuración de una conexión VPN de entrada en cada zona de un clúster multizona
Si necesita conexiones VPN entrantes y el punto final de VPN remoto no puede volver a establecer la conexión VPN en otra IP, debe desplegar un servicio VPN strongSwan por separado en cada zona.
El punto final de VPN remota se debe actualizar para que establezca una conexión VPN independiente con un equilibrador de carga en cada una de las zonas. Además, debe configurar valores específicos de zona en el punto final de VPN remota para que cada una de estas conexiones VPN sea exclusiva. Asegúrese de que estas diversas conexiones VPN de entrada permanezcan activas.
Después de desplegar cada diagrama de Helm, cada despliegue de VPN de strongSwan se inicia como un servicio de equilibrador de carga de Kubernetes en la zona correcta. Las solicitudes de entrada a dicha IP pública se reenvían al pod de VPN que también está asignado a la misma zona. Si la zona experimenta una interrupción, las conexiones VPN que se establecen en las otras zonas no se ven afectadas.
-
Configure un diagrama de Helm de VPN de strongSwan para cada zona. Cuando siga los pasos de dicha sección, asegúrese de especificar los valores siguientes:
loadBalancerIP
: Especifique una dirección IP pública disponible de equilibrador de carga que esté en la zona en la que despliega este servicio strongSwan. Puede comprobar las direcciones IP públicas disponibles o liberar una dirección IP usada.zoneSelector
: Especifique la zona en la que desea planificar el pod de VPN.- Es posible que se necesiten valores adicionales, como por ejemplo
zoneSpecificRoutes
,remoteSubnetNAT
,localSubnetNAT
oenableSingleSourceIP
, en función de los recursos a los que se debe acceder a través de la VPN. Consulte el paso siguiente si desea información más detallada.
-
Configure valores específicos de zona en ambos lados del túnel de VPN para asegurarse de que cada conexión VPN sea exclusiva. En función de los recursos a los que se debe acceder a través de la VPN, tiene dos opciones para conseguir que las conexiones se puedan distinguir:
- Si los pods del clúster deben acceder a servicios en la red local remota,
zoneSpecificRoutes
: Establezca su valor entrue
. Esta configuración restringe la conexión VPN a una única región de zona del clúster. Los pods de una zona específica solo utilizan la conexión VPN que se ha configurado para dicha zona específica. Esta solución reduce el número de pods de strongSwan que se necesitan para dar soporte a varias VPN en un clúster multizona, mejora el rendimiento de VPN porque el tráfico de VPN solo fluye a los nodos trabajadores ubicados en la zona actual y garantiza que la conectividad VPN para cada zona no se vea afectada por la conectividad VPN, la interrupción de pods o las detenciones de zona de otras zonas. Tenga en cuenta que no hace falta configurarremoteSubnetNAT
. Varias VPN que utilicen el valorzoneSpecificRoutes
pueden tener el mismo valor deremote.subnet
porque el direccionamiento se configura por zona.enableSingleSourceIP
: Establezca este valor entrue
y establezca el valor delocal.subnet
en una única dirección IP /32. Esta combinación de valores oculta todas las direcciones IP privadas del clúster tras una única dirección IP /32. Esta dirección IP /32 exclusiva permite a la red local remota devolver respuestas sobre la conexión VPN correcta al pod correcto en el clúster que ha iniciado la solicitud. Tenga en cuenta que la única dirección IP /32 que se configura para la opciónlocal.subnet
debe ser exclusiva en cada configuración de VPN de strongSwan.
- Si las aplicaciones de la red local remota deben acceder a servicios del clúster,
localSubnetNAT
: Asegúrese de que una aplicación de la red remota local pueda seleccionar una conexión VPN específica a la que enviar y de la que recibir tráfico del clúster. En cada configuración de Helm de strongSwan, utilicelocalSubnetNAT
para identificar de forma exclusiva los recursos del clúster a los que puede acceder la aplicación local remota. Dado que se establecen varias VPN desde la red local remota al clúster, debe añadir lógica a la aplicación en la red local para que pueda seleccionar qué VPN se utiliza cuando accede a los servicios del clúster. Tenga en cuenta que se puede acceder a los servicios del clúster a través de varias subredes distintas en función de lo que haya configurado paralocalSubnetNAT
en cada configuración de VPN de strongSwan.remoteSubnetNAT
: Asegúrese de que un pod del clúster utilice la misma conexión VPN para devolver el tráfico a la red remota. En cada archivo de despliegue strongSwan, correlacione la subred local remota con una subred exclusiva mediante el valorremoteSubnetNAT
. El tráfico que recibe un pod del clúster desde unremoteSubnetNAT
específico de VPN se vuelve a enviar a ese mismoremoteSubnetNAT
específico de VPN y se transmite a través de esa misma conexión VPN.
- Si los pods del clúster deben acceder a los servicios de la red local remota y las aplicaciones de la red local remota deben acceder a los servicios del clúster, configure los valores
localSubnetNAT
yremoteSubnetNAT
listados en el segundo punto. Tenga en cuenta que si un pod del clúster inicia una solicitud a la red local remota, debe añadir lógica al pod para que pueda seleccionar qué conexión VPN utilizar para acceder a los servicios en la red local remota.
- Si los pods del clúster deben acceder a servicios en la red local remota,
-
Configure el software de punto final de VPN remota de modo que establezca una conexión VPN independiente con la IP del equilibrador de carga en cada zona.
Configuración del diagrama de Helm strongSwan
Antes de instalar el diagrama de Helm strongSwan, debe elegir su configuración de strongSwan.
Antes de empezar
- Instale una pasarela de VPN IPSec en su centro de datos local.
- Asegúrese de que dispone de la función de acceso al servicio IAM Writer o Manager IBM Cloud para el espacio de nombres
default
. - Inicie una sesión en la cuenta. If applicable, target the appropriate resource group. Establezca el contexto para el clúster. En los clústeres estándar se permiten todas las configuraciones strongSwan.
Paso 1: Obtenga el diagrama de Helm strongSwan
Instale Helm y obtenga el diagrama de Helm strongSwan para ver las posibles configuraciones.
-
Siga las instrucciones para instalar el cliente Helm versión 3 en la máquina local.
-
Guarde los valores de configuración predeterminados para el diagrama de Helm de strongSwan en un archivo YAML local.
helm show values iks-charts/strongswan > config.yaml
-
Abra el archivo
config.yaml
.
Paso 2: Configure los valores básicos de IPSec
Para controlar el establecimiento de la conexión VPN, modifique los siguientes valores básicos de IPSec.
Para obtener más información sobre cada valor, lea la documentación que se proporciona en el archivo config.yaml
para el diagrama de Helm.
- Si el punto final de túnel VPN local no admite
ikev2
como protocolo para inicializar la conexión, cambie el valor deipsec.keyexchange
porikev1
. - Establezca
ipsec.esp
como una lista de algoritmos de autenticación y cifrado de ESP que el punto final de túnel de VPN local utiliza para la conexión.- Si
ipsec.keyexchange
se establece enikev1
, se debe especificar este valor. - Si
ipsec.keyexchange
se establece enikev2
, este valor es opcional. - Si deja este valor en blanco, se utilizan para la conexión los algoritmos predeterminados de strongSwan
aes128-sha1,3des-sha1
.
- Si
- Establezca
ipsec.ike
como una lista de algoritmos de autenticación y cifrado de IKE/ISAKMP que el punto final de túnel de VPN local utiliza para la conexión. Los algoritmos deben ser específicos en el formatoencryption-integrity[-prf]-dhgroup
.- Si
ipsec.keyexchange
se establece enikev1
, se debe especificar este valor. - Si
ipsec.keyexchange
se establece enikev2
, este valor es opcional. - Si deja este valor en blanco, se utilizan para la conexión los algoritmos predeterminados de strongSwan
aes128-sha1-modp2048,3des-sha1-modp1536
.
- Si
- Cambie el valor de
local.id
por la serie que desee utilizar para identificar el lado del clúster de Kubernetes local que utiliza el punto final de túnel VPN. El valor predeterminado esibm-cloud
. Algunas implementaciones de VPN requieren que utilice la dirección IP pública para el punto final local. - Cambie el valor de
remote.id
por la serie que desee utilizar para identificar el lado local remoto que utiliza el punto final de túnel VPN. El valor predeterminado eson-prem
. Algunas implementaciones de VPN requieren que utilice la dirección IP pública para el punto final remoto. - Cambie el valor de
preshared.secret
por el secreto precompartido que la pasarela de punto final de túnel VPN local utiliza para la conexión. Este valor se almacena enipsec.secrets
. - Opcional: establezca
remote.privateIPtoPing
en cualquier dirección IP privada de la subred remota para ejecutar ping como parte de la prueba de validación de conectividad de Helm.
Paso 3: Seleccione una conexión VPN de entrada o de salida
Cuando configure una conexión VPN de strongSwan, debe elegir si la conexión VPN es de entrada al clúster o de salida del clúster.
- Entrada
- El punto final VPN local de la red remota inicia la conexión VPN y el clúster escucha la conexión.
- De salida
- El clúster inicia la conexión VPN y el punto final VPN local de la red remota escucha la conexión.
Para establecer una conexión VPN de entrada, modifique los valores siguientes.
- Verifique que
ipsec.auto
esté establecido enadd
. - Opcional: establezca
loadBalancerIP
en una dirección IP pública portátil para el servicio VPN de strongSwan. Especificar una dirección IP es útil cuando necesita una dirección IP estable como, por ejemplo, cuando debe designar las direcciones IP permitidas a través de un cortafuegos local. El clúster debe tener disponible al menos una dirección IP pública de equilibrador de carga. Puede comprobar las direcciones IP públicas disponibles o liberar una dirección IP usada.- Si deja este valor en blanco, se utilizará una de las direcciones IP públicas portátiles disponibles.
- También debe configurar la dirección IP pública que seleccione o la dirección IP pública que se asigna al punto final de VPN del clúster en el punto final VPN local.
Para establecer una conexión VPN de salida, modifique los valores siguientes.
- Cambie
ipsec.auto
porstart
. - Establezca
remote.gateway
en la dirección IP pública para el punto final VPN local en la red remota. - Elija una de las opciones siguientes para la dirección IP para el punto final VPN del clúster:
-
Dirección IP pública de la pasarela privada del clúster: Si los nodos de sus trabajadores están conectados únicamente a una VLAN privada, la solicitud de VPN saliente se enruta a través de la puerta de enlace privada para llegar a Internet. La dirección IP pública de la pasarela privada se utiliza para la conexión VPN.
-
Dirección IP pública del nodo trabajador en el que se ejecuta el pod strongSwan: si el nodo trabajador en el que se ejecuta el pod strongSwan está conectado a una VLAN pública, se utiliza la dirección IP pública del nodo trabajador para la conexión VPN.
- Si el pod strongSwan se suprime y se vuelve a planificar en otro nodo trabajador del clúster, la dirección IP pública de VPN cambia. El punto final VPN local de la red remota debe permitir que se establezca la conexión VPN a partir de la dirección IP pública de cualquiera de los nodos trabajadores del clúster.
- Si el punto final de VPN remoto no puede manejar conexiones VPN procedentes de varias direcciones IP públicas, limite los nodos en los que se despliega el pod de VPN strongSwan. Establezca
nodeSelector
en las direcciones IP de nodos trabajadores específicos o en una etiqueta de nodo trabajador. Por ejemplo, el valorkubernetes.io/hostname: 10.232.xx.xx
permite que el pod de VPN se despliegue únicamente en ese nodo trabajador. El valorstrongswan: vpn
restringe la ejecución del pod de VPN a los nodos trabajadores que tengan esa etiqueta. Puede utilizar cualquier etiqueta de nodo trabajador. Para permitir que se utilicen distintos nodos de trabajador con distintos despliegues de diagrama de helm, utilicestrongswan: <release_name>
. Para obtener una alta disponibilidad, seleccione al menos dos nodos trabajadores.
-
Dirección IP pública del servicio strongSwan: para establecer la conexión utilizando la dirección IP del servicio VPN strongSwan, establezca
connectUsingLoadBalancerIP
entrue
. La dirección IP del servicio strongSwan es una dirección IP pública portátil que puede especificar en el valorloadBalancerIP
o bien una dirección IP pública portátil disponible que se asigna automáticamente al servicio.- Si elige seleccionar una dirección IP mediante el valor
loadBalancerIP
, el clúster debe tener al menos una dirección IP pública de equilibrador de carga disponible. Puede comprobar las direcciones IP públicas disponibles o liberar una dirección IP usada. - Todos los nodos de trabajador de clúster deben estar en la misma VLAN pública. De lo contrario, debe utilizar el valor
nodeSelector
para asegurarse de que el pod de VPN se despliega en un nodo trabajador en la misma VLAN pública queloadBalancerIP
. - Si
connectUsingLoadBalancerIP
tiene el valortrue
eipsec.keyexchange
tiene el valorikev1
, debe establecer paraenableServiceSourceIP
el valortrue
.
- Si elige seleccionar una dirección IP mediante el valor
-
Paso 4: Acceda a recursos de clúster a través de la conexión VPN
Determinar los recursos de clúster a los que debe poder acceder la red remota a través de la conexión VPN.
-
Añada los CIDR de una o varias subredes del clúster a la configuración
local.subnet
. Debe configurar los CIDR de subred locales en el punto final VPN local. Esta lista puede incluir las subredes siguientes.- El CIDR de subred del pod de Kubernetes:
172.30.0.0/16
. La comunicación bidireccional está habilitada entre todos los pods del clúster y cualquiera de los hosts de las subredes de red remotas que se muestran en el valorremote.subnet
. Si debe impedir que algún host deremote.subnet
acceda a los pods de clúster por motivos de seguridad, no añada la subred de pod de Kubernetes al valorlocal.subnet
. - El CIDR de subred del servicio de Kubernetes:
172.21.0.0/16
. Las direcciones IP de servicio proporcionan una forma de exponer varios pods de app que se despliegan en varios nodos trabajadores detrás de una única IP. - Si las apps están expuestas por un servicio NodePort en una red privada en un Ingress ALB privado, añada el CIDR de subred privada del nodo trabajador. Recupere los tres primeros octetos de la dirección IP privada del trabajador ejecutando
ibmcloud ks worker <cluster_name>
. Por ejemplo, si es10.176.48.xx
, anote10.176.48
. A continuación, obtenga el CIDR de subred privada de trabajador ejecutando el mandato siguiente, sustituyendo<xxx.yyy.zz>
por el octeto que ha recuperado anteriormente:ibmcloud sl subnet list | grep <xxx.yyy.zzz>
. Nota: si se añade un nodo trabajador en una nueva subred privada, debe añadir el nuevo CIDR de subred privada al valorlocal.subnet
y al punto final VPN local. Luego se debe reiniciar la conexión VPN. - Si tiene apps expuestas por los servicios de LoadBalancer en la red privada, añada el CIDR de subred privada gestionada por el usuario del clúster. Para encontrar estos valores, ejecute
ibmcloud ks cluster get --cluster <cluster_name> --show-resources
. En la sección VLAN, busque los CIDR que tengan los valores Public ofalse
. Nota: Siipsec.keyexchange
se establece enikev1
, solo puede especificar una subred. Sin embargo, puede utilizar el valorlocalSubnetNAT
para combinar varias subredes de clúster en una única subred.
- El CIDR de subred del pod de Kubernetes:
-
Opcional: vuelva a correlacionar las subredes del clúster utilizando el valor
localSubnetNAT
. NAT (conversión de direcciones de red) para subredes supone una solución temporal para los conflictos de subred entre la red del clúster y la red remota local. Puede utilizar NAT para volver a correlacionar las subredes IP locales privadas del clúster, la subred del pod (172.30.0.0/16) o la subred del servicio del pod (172.21.0.0/16) a una subred privada diferente. El túnel VPN ve subredes IP correlacionadas en lugar de las subredes originales. La correlación ocurre antes de que los paquetes se envíen a través del túnel VPN, así como después de que lleguen del túnel VPN. Puede exponer las redes correlacionadas y las no correlacionadas al mismo tiempo a través de la VPN. Para habilitar NAT, puede añadir una subred entera o direcciones IP individuales.- Si añade una subred completa en el formato
10.171.42.0/24=10.10.10.0/24
, la correlación es de 1 a 1: todas las direcciones IP de la subred de red interna se correlacionan con la subred de red externa, y viceversa. - Si añade direcciones IP individuales en el formato
10.171.42.17/32=10.10.10.2/32,10.171.42.29/32=10.10.10.3/32
, solo estas direcciones IP internas se correlacionan con las direcciones IP externas especificadas.
- Si añade una subred completa en el formato
-
Opcional para diagramas de Helm strongSwan de la versión 2.2.0 y posteriores: oculte todas las direcciones IP del clúster tras una única dirección IP estableciendo
enableSingleSourceIP
entrue
. Esta opción proporciona una de las configuraciones más seguras para la conexión VPN porque no se permiten conexiones entre la red remota y el clúster.- Este valor requiere que todo el flujo de datos a través de la conexión VPN sea de salida, independientemente de si la conexión VPN se establece desde el clúster o desde la red remota.
- Si instala strongSwan en un clúster de una sola zona, debe establecer
local.subnet
en una sola dirección IP como una subred /32. Si instala strongSwan en un clúster multizona, puede establecerlocal.subnet
en la variable%zoneSubnet
y utilizarlocal.zoneSubnet
para especificar una dirección IP como una subred /32 para cada zona del clúster.
-
Opcional para diagramas de Helm strongSwan de versión 2.2.0 y posteriores: habilite el servicio strongSwan para direccionar las solicitudes de entrada procedentes de la red remota a un servicio que exista fuera del clúster utilizando el valor
localNonClusterSubnet
.- El servicio que no es de clúster debe existir en la misma red privada o en una red privada a la que puedan acceder los nodos trabajadores.
- El nodo de trabajador que no es de clúster no puede iniciar el tráfico a la red remota a través de la conexión VPN, pero el nodo que no es de clúster puede ser el destino de las solicitudes entrantes de la red remota.
- Debe obtener una lista de los CIDR de las subredes que no son de clúster en el valor
local.subnet
.
Paso 5: Acceda a recursos de red remotos a través de la conexión VPN
Determine los recursos de red remotos a los que debe poder acceder el clúster a través de la conexión VPN.
- Añada los CIDR de una o varias subredes privadas locales al valor
remote.subnet
. Nota: Siipsec.keyexchange
se establece enikev1
, solo puede especificar una subred. - Opcional para los diagramas de Helm strongSwan de la versión 2.2.0 y posteriores: vuelva a correlacionar las subredes de red remota utilizando el valor
remoteSubnetNAT
. NAT (conversión de direcciones de red) para subredes supone una solución temporal para los conflictos de subred entre la red del clúster y la red remota local. Puede utilizar NAT para volver a correlacionar las subredes IP remotas con otra subred privada. La correlación ocurre antes de que los paquetes se envíen a través del túnel VPN. Los pods del clúster ven las subredes IP correlacionadas en lugar de las subredes originales. Antes de que los pods envíen de nuevo los datos a través del túnel de VPN, la subred IP que se ha vuelto a correlacionar se cambia de nuevo a la subred real que está utilizando la red remota. Puede exponer las redes correlacionadas y las no correlacionadas al mismo tiempo a través de la VPN.
Paso 6 (opcional): Habilite la supervisión con la integración del webhook de Slack
Para supervisar el estado de la VPN de strongSwan, puede configurar un webhook para publicar automáticamente mensajes de conectividad de VPN en un canal de Slack.
-
Inicie sesión en el espacio de trabajo de Slack.
-
Vaya a la página de la aplicación Incoming WebHooks.
-
Pulse Solicitud de instalación. Si esta app no aparece en la configuración de Slack, póngase en contacto con el propietario del espacio de trabajo de Slack.
-
Una vez que se haya aprobado la solicitud e instalación, pulse Añadir configuración.
-
Elija un canal de Slack o cree un canal nuevo al que enviar los mensajes de VPN.
-
Copie del URL de webhook que se genera. El formato de URL tiene un aspecto similar al siguiente:
https://hooks.slack.com/services/A1AA11A1A/AAA1AAA1A/a1aaaaAAAaAaAAAaaaaaAaAA
-
Para verificar que el webhook de Slack está instalado, envíe un mensaje de prueba al URL de webhook ejecutando el mandato siguiente:
curl -X POST -H 'Content-type: application/json' -d '{"text":"VPN test message"}' <webhook_URL>
-
Vaya al canal de Slack que haya elegido para verificar que el mensaje de prueba se envía correctamente.
-
En el archivo
config.yaml
del diagrama de Helm, configure el webhook para supervisar su conexión VPN.- Cambie
monitoring.enable
portrue
. - Añada las direcciones IP privadas o puntos finales HTTP de la subred remota a
monitoring.privateIPs
omonitoring.httpEndpoints
, para los cuales desea asegurarse de que sean accesibles a través de la conexión VPN. Por ejemplo, puede añadir la IP del valorremote.privateIPtoPing
amonitoring.privateIPs
. - Añada el URL de webhook a
monitoring.slackWebhook
. - Cambie los demás valores de
monitoring
opcionales según sea necesario.
- Cambie
Paso 7: Despliegue el diagrama de Helm
Despliegue el diagrama de Helm strongSwan en el clúster con las configuraciones que ha elegido anteriormente.
-
Si necesita configurar valores más avanzados, siga la documentación que se proporciona para cada valor en el diagrama de Helm.
-
Guarde el archivo
config.yaml
actualizado. -
Instale el diagrama de Helm en el clúster con el archivo
config.yaml
actualizado.Si tiene varios despliegues de VPN en un solo clúster, puede evitar conflictos de denominación y diferenciar entre los despliegues eligiendo nombres de release más descriptivos que
vpn
. Para evitar el truncamiento del nombre de release, limite el nombre de release a 35 caracteres o menos.helm install vpn iks-charts/strongswan -f config.yaml
-
Compruebe el estado de despliegue del diagrama. Cuando el gráfico está listo, el campo ESTADO cerca en la salida tiene un valor de
DEPLOYED
.helm status vpn
-
Una vez que se haya desplegado el diagrama, verifique que se hayan utilizado los valores actualizados del archivo
config.yaml
.helm get values vpn
Solo se admiten las versiones del diagrama de Helm strongSwan que se han publicado en los últimos 6 meses. Asegúrese de actualizar el diagrama de Helm de strongSwan consecuentemente para ver las características más recientes y los arreglos de seguridad.
Prueba y verificación de la conectividad VPN de strongSwan
Después de desplegar el diagrama de Helm, pruebe la conectividad de VPN.
-
Si la VPN de la pasarela local no está activa, inicie la VPN.
-
Establezca la variable de entorno
STRONGSWAN_POD
.export STRONGSWAN_POD=$(kubectl get pod -l app=strongswan,release=vpn -o jsonpath='{ .items[0].metadata.name }')
-
Compruebe el estado de la VPN. Un estado
ESTABLISHED
significa que la conexión VPN se ha realizado correctamente.kubectl exec $STRONGSWAN_POD -- sudo ipsec status
Salida de ejemplo
Security Associations (1 up, 0 connecting): k8s-conn[1]: ESTABLISHED 17 minutes ago, 172.30.xxx.xxx[ibm-cloud]...192.xxx.xxx.xxx[on-premises] k8s-conn{2}: INSTALLED, TUNNEL, reqid 12, ESP in UDP SPIs: c78cb6b1_i c5d0d1c3_o k8s-conn{2}: 172.21.0.0/16 172.30.0.0/16 === 10.91.152.xxx/26
-
Cuando intenta establecer la conectividad de VPN con el diagrama de Helm de strongSwan, es probable que el estado de VPN no sea
ESTABLISHED
la primera vez. Es posible que necesite comprobar los valores de punto final de VPN local y cambiar el archivo de configuración varias veces antes de que la conexión se realice correctamente.- Ejecute
helm uninstall <release_name> -n <namespace>
- Corrija los valores incorrectos en el archivo de configuración.
- Ejecute
helm install vpn iks-charts/strongswan -f config.yaml
También puede ejecutar más comprobaciones en el paso siguiente.
- Ejecute
-
Si el pod de VPN está en estado
ERROR
o sigue bloqueándose y reiniciándose, puede que se deba a la validación de parámetro de los valores deipsec.conf
en el mapa de configuración del diagrama.- Compruebe los errores de validación en los registros del pod de strongSwan ejecutando
kubectl logs $STRONGSWAN_POD
. - Si existen errores de validación, ejecute
helm uninstall <release_name> -n <namespace>
- Corrija los valores incorrectos en el archivo de configuración.
- Ejecute
helm install vpn iks-charts/strongswan -f config.yaml
- Compruebe los errores de validación en los registros del pod de strongSwan ejecutando
-
-
Puede probar más la conectividad de VPN ejecutando las cinco pruebas de Helm que se incluyen en la definición de diagrama de strongSwan.
helm test vpn
- Si se pasan todas las pruebas, la conexión VPN strongSwan está configurada correctamente.
- Si alguno de los pasos fallan, continúe en el siguiente paso.
-
Puede consultar la salida de una prueba que ha fallado en los registros del pod de prueba.
kubectl logs <test_program>
Algunas pruebas tienen requisitos que son ajustes opcionales en la configuración de la VPN. Si falla alguna de las pruebas, puede que los errores sean aceptables en función de si ha especificado estos valores opcionales. Consulte la tabla siguiente para obtener más información sobre cada prueba y por qué puede fallar.
vpn-strongswan-check-config
- Valida la sintaxis del archivo
ipsec.conf
que se genera a partir del archivoconfig.yaml
. Esta prueba puede fallar debido a valores incorrectos en el archivoconfig.yaml
. vpn-strongswan-check-state
- Comprueba que la conexión VPN tiene un estado
ESTABLISHED
. Esta prueba podría fallar por las razones siguientes.- Diferencias entre los valores del archivo
config.yaml
y los valores del punto final de VPN local. - Si el clúster está en modalidad "de escucha" (
ipsec.auto
se establece enadd
), la conexión no se establece en el lado local.
- Diferencias entre los valores del archivo
vpn-strongswan-ping-remote-gw
- Ejecuta ping en la dirección IP pública de
remote.gateway
que ha configurado en el archivoconfig.yaml
. Si la conexión VPN tiene el estadoESTABLISHED
, puede pasar por alto el resultado de esta prueba. Si la conexión VPN no tiene un estadoESTABLISHED
, esta prueba podría fallar por las razones siguientes.- No haber especificado una dirección IP de pasarela VPN local. Si
ipsec.auto
se establece enstart
, la dirección IP deremote.gateway
es obligatoria. - Los paquetes ICMP (ping) están siendo bloqueados por un cortafuegos.
- No haber especificado una dirección IP de pasarela VPN local. Si
vpn-strongswan-ping-remote-ip-1
- Ejecuta ping en la dirección IP privada de
remote.privateIPtoPing
de la pasarela VPN local desde el pod de VPN del clúster. Esta prueba puede fallar por las siguientes razones. \n - No ha especificado ninguna dirección IP deremote.privateIPtoPing
. Si no ha especificado ninguna dirección IP a propósito, este error es aceptable. \n - No ha especificado el CIDR de subred de pod de clúster,172.30.0.0/16
, en la lista delocal.subnet
. vpn-strongswan-ping-remote-ip-2
- Ejecuta ping en la dirección IP privada de
remote.privateIPtoPing
de la pasarela VPN local desde el nodo de trabajador del clúster. Esta prueba puede fallar por las siguientes razones. \n - No ha especificado ninguna dirección IP deremote.privateIPtoPing
. Si no ha especificado ninguna dirección IP a propósito, este error es aceptable. \n - No ha especificado el CIDR de subred privada de nodo de trabajador de clúster en la lista delocal.subnet
. |
-
Suprima el diagrama de Helm actual.
helm uninstall vpn -n <namespace>
-
Abra el archivo
config.yaml
y corrija los valores incorrectos. -
Guarde el archivo
config.yaml
actualizado. -
Instale el diagrama de Helm en el clúster con el archivo
config.yaml
actualizado. Las propiedades actualizadas se almacenan en un mapa de configuración para el diagrama.helm install vpn iks-charts/strongswan -f config.yaml
-
Compruebe el estado de despliegue del diagrama. Cuando el gráfico está listo, el campo STATUS de la salida tiene el valor
DEPLOYED
.
helm status vpn
- Una vez que se haya desplegado el diagrama, verifique que se hayan utilizado los valores actualizados del archivo
config.yaml
.
helm get values vpn
- Limpie los pods de prueba actuales.
kubectl get pods -a -l app=strongswan-test
kubectl delete pods -l app=strongswan-test
- Ejecute las pruebas de nuevo.
helm test vpn
Limitación del tráfico de VPN de strongSwan por espacio de nombres o nodo trabajador
Si tiene un clúster de un solo arrendatario, o si tiene un clúster multiarrendatario en el que los recursos del clúster se comparten entre los arrendatarios, puede limitar el tráfico de VPN para cada despliegue de strongSwan a los pods de determinados espacios de nombres. Si tiene un clúster multiarrendatario en el que los recursos del clúster están dedicados a los arrendatarios, puede limitar el tráfico de VPN para cada despliegue de strongSwan a los nodos trabajadores dedicados a cada arrendatario.
Limitación del tráfico de VPN de strongSwan por espacio de nombres
Cuando dispone de un clúster de un solo arrendatario o multiarrendatario, puede limitar el tráfico de VPN a los pods en determinados espacios de nombres únicamente.
Por ejemplo, digamos que desea que los pods de un solo espacio de nombres específico, my-secure-namespace
, envíen y reciban datos a través de la VPN. No desea que los pods de otros espacios de nombres, como kube-system
,
ibm-system
o default
accedan a la red local. Para limitar el tráfico de VPN únicamente a my-secure-namespace
, puede crear políticas de red globales de Calico.
Antes de utilizar esta solución, revise las siguientes consideraciones y limitaciones.
-
No es necesario desplegar el diagrama de Helm de strongSwan en el espacio de nombres especificado. El pod de VPN de strongSwan y el conjunto de daemons de rutas se pueden desplegar en
kube-system
o en cualquier otro espacio de nombres. Si la VPN de strongSwan no se despliega en el espacio de nombres especificado, la prueba de Helmvpn-strongswan-ping-remote-ip-1
fallará. Este error es esperado y aceptable. La prueba ejecuta ping sobre la dirección IP privadaremote.privateIPtoPing
de la pasarela VPN local desde un pod que no está en el espacio de nombres que tiene acceso directo a la subred remota. Sin embargo, el pod de VPN sigue siendo capaz de reenviar tráfico a los pods de los espacios de nombres que no tienen rutas a la subred remota, y el tráfico puede seguir fluyendo correctamente. El estado de VPN sigue siendoESTABLISHED
y los pods del espacio de nombres especificado se pueden conectar a través de la VPN. -
Las políticas de red global de Calico en los siguientes pasos no impiden que los los pods de Kubernetes que utilizan redes de host envíen y reciban datos a través de la VPN. Cuando se configura un pod con redes de host, la app que se ejecuta en el pod puede estar a la escucha en las interfaces de red del nodo trabajador en el que se encuentra. Estos pods de redes de host pueden existir en cualquier espacio de nombres. Para determinar qué pods tienen redes de host, ejecute
kubectl get pods --all-namespaces -o wide
y busque los pods que no tengan ninguna dirección IP de pod de172.30.0.0/16
. Si desea evitar que los pods de redes de host puedan enviar y recibir datos a través de la VPN, puede establecer las opciones siguientes en el archivo de desplieguevalues.yaml
:local.subnet: 172.30.0.0/16
yenablePodSNAT: false
. Estos valores de configuración exponen todos los pods de Kubernetes a través de la conexión VPN en la red remota. No obstante, únicamente serán accesibles a través de la VPN aquellos pods que se encuentren en el espacio de nombres seguro especificado.
Antes de empezar
- Despliegue el diagrama de Helm strongSwan y asegúrese de que la conectividad de VPN funciona correctamente.
- Instale y configure la CLI de Calico.
Para limitar el tráfico de VPN a un espacio de nombres determinado,
-
Cree una política de red global de Calico denominada
allow-non-vpn-outbound.yaml
. Esta política permite que todos los espacios de nombres puedan seguir enviando tráfico de salida a todos los destinos, excepto a la subred remota a la que accede la VPN de strongSwan. Sustituya<remote.subnet>
por el valor deremote.subnet
que ha especificado en el archivo de configuraciónvalues.yaml
de Helm. Para especificar varias subredes remotas, consulte la documentación de Calico.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: allow-non-vpn-outbound spec: selector: has(projectcalico.org/namespace) egress: - action: Allow destination: notNets: - <remote.subnet> order: 900 types: - Egress
-
Aplique la política.
calicoctl apply -f allow-non-vpn-outbound.yaml --config=filepath/calicoctl.cfg
-
Cree otra política de red global de Calico denominada
allow-vpn-from-namespace.yaml
. Esta política permite que únicamente un espacio de nombres especificado pueda enviar tráfico saliente a la subred remota a la que accede la VPN de strongSwan. Sustituya<namespace>
por el espacio de nombres que puede acceder a la VPN y<remote.subnet>
por el valor deremote.subnet
que ha especificado en el archivo de configuraciónvalues.yaml
de Helm. Para especificar varios espacios de nombres o subredes remotas, consulte la documentación de Calico.apiVersion: projectcalico.org/v3 kind: GlobalNetworkPolicy metadata: name: allow-vpn-from-namespace spec: selector: projectcalico.org/namespace == "<namespace>" egress: - action: Allow destination: nets: - <remote.subnet> order: 900 types: - Egress
-
Aplique la política.
calicoctl apply -f allow-vpn-from-namespace.yaml --config=filepath/calicoctl.cfg
-
Verifique que se crean las políticas de red globales en el clúster.
calicoctl get GlobalNetworkPolicy -o wide --config=filepath/calicoctl.cfg
Limitación del tráfico de VPN de strongSwan por nodo trabajador
Cuando tiene varios despliegues de VPN de strongSwan en un clúster multiarrendatario, puede limitar el tráfico de VPN para cada despliegue a nodos trabajadores específicos que estén dedicados a cada arrendatario.
Al desplegar un diagrama de Helm strongSwan, se crea un despliegue de VPN de strongSwan. Los pods de VPN de strongSwan se despliegan en cualquier nodo trabajador no marcado. Además, se crea un conjunto de daemons de Kubernetes. Este conjunto de daemons configura automáticamente rutas en todos los nodos trabajadores no marcados del clúster con cada una de las subredes remotas. El pod de VPN de strongSwan utiliza las rotas en los nodos trabajadores para reenviar solicitudes a la subred remota en la red local.
No se configuran rutas en nodos marcados a menos que especifique la marca en el valor tolerations
del archivo value.yaml
. Al aplicar una marca a los nodos trabajadores, puede evitar que se configuren rutas VPN en
dichos trabajadores. A continuación, puede especificar la marca en el valor tolerations
únicamente para el despliegue de VPN que desea permitir en los trabajadores marcados. De este modo, los pods de VPN de strongSwan del despliegue
del diagrama de Helm de un arrendatario solo utilizan las rutas en los nodos trabajadores de dicho arrendatario para reenviar el tráfico a través de la conexión VPN con la subred remota.
Antes de utilizar esta solución, revise las siguientes consideraciones y limitaciones.
- De forma predeterminada, Kubernetes coloca los pods de app en los nodos trabajadores no marcados que estén disponibles. Para asegurarse de que esta solución funciona correctamente, cada arrendatario debe asegurarse primero de desplegar sus pods de app únicamente en trabajadores a los que se haya aplicado la marca correspondiente al arrendatario correcto. Además, cada nodo trabajador marcado debe tener también una tolerancia para permitir que los pods de app se puedan colocar en el nodo. Para más información sobre manchas y tolerancias, consulte la documentación de Kubernetes.
- Es posible que los recursos del clúster no se utilicen de manera óptima debido a que ningún arrendatario puede colocar pods de app los nodos compartidos no marcados.
Los pasos siguientes para limitar el tráfico de VPN de strongSwan por nodo trabajador utilizan este caso de ejemplo: digamos que tiene un clúster de IBM Cloud Kubernetes Service multiarrendatario con seis nodos trabajadores. El clúster da soporte al arrendatario A y al arrendatario B. Puede marcar los nodos de trabajador de las maneras siguientes.
- Se aplica una marca a dos nodos trabajadores de manera que solo se planifican en los trabajadores los pods del arrendatario A.
- Se aplica una marca a dos nodos trabajadores de manera que solo se planifican en los trabajadores los pods del arrendatario B.
- No se aplica ninguna marca a dos nodos trabajadores, ya que se necesitan al menos 2 nodos trabajadores para los pods de VPN de strongSwan y la IP del equilibrador de carga en el que se ejecuta.
Para limitar el tráfico de VPN a los nodos marcados para cada arrendatario.
-
Para limitar el tráfico de VPN solo a los trabajadores dedicados a arrendatario A en este ejemplo, especifique la siguiente
toleration
en el archivovalues.yaml
para el diagrama de Helm strongSwan del arrendatario A.tolerations: - key: dedicated operator: "Equal" value: "tenantA" effect: "NoSchedule"
Esta tolerancia permite que se ejecute el conjunto de daemons de ruta en los dos nodos trabajadores que tienen el antagonismo
dedicated="tenantA"
y en los dos nodos trabajadores no antagónicos. The strongSwan VPN pods for this deployment run on the two untainted worker nodes. -
Para limitar el tráfico de VPN solo a los trabajadores dedicados a arrendatario B en este ejemplo, especifique la siguiente
toleration
en el archivovalues.yaml
para el diagrama de Helm strongSwan del arrendatario B.tolerations: - key: dedicated operator: "Equal" value: "tenantB" effect: "NoSchedule"
Esta tolerancia permite que se ejecute el conjunto de daemons de ruta en los dos nodos trabajadores que tienen el antagonismo
dedicated="tenantB"
y en los dos nodos trabajadores no antagónicos. Los pods de VPN de strongSwan para este despliegue también se ejecutan en los dos nodos trabajadores no marcados.
Actualización o inhabilitación del diagrama de Helm de strongSwan
Asegúrese de actualizar el diagrama de Helm de strongSwan consecuentemente para ver las características más recientes y los arreglos de seguridad.
Revise las versiones soportadas del diagrama de Helm strongSwan. Normalmente, una versión del diagrama pasa a estar en desuso 6 meses después de su fecha de release.
- Soportado: 2.7.9, 2.7.8, 2.7.7, 2.7.6, 2.7.5, 2.7.4, 2.7.3, 2.7.2
- En desuso: 2.7.1, 2.7.0, 2.6.9, 2.6.8, 2.6.7
- No soportado: 2.6.6 y anteriores
Para conocer las fechas de publicación y los registros de cambios de cada versión del gráfico strongSwan Helm, ejecute helm show readme iks-charts/strongswan
y busque la sección Version History
.
Para actualizar el diagrama de Helm strongSwan a la última versión, utilice el mandato helm upgrade
.
helm upgrade -f config.yaml <release_name> iks-charts/strongswan
Puede inhabilitar la conexión VPN suprimiendo el diagrama de Helm.
helm uninstall <release_name> -n <namespace>
Utilización de un dispositivo de direccionador virtual (Virtual Router Appliance, VRA)
Virtual Router Appliance (VRA) proporciona el último sistema operativo Vyatta 5600 para servidores nativos x86. Puede utilizar VRA como una pasarela VPN para conectarse de forma segura a una red local.
Todo el tráfico de red privado y público que entre o salga de las VLAN del clúster se direcciona a través de VRA. Puede utilizar VRA como un punto final de VPN para crear un túnel IPSec cifrado entre servidores en la infraestructura de IBM Cloud y los recursos locales. Por ejemplo, en el diagrama siguiente se muestra cómo una app en un nodo trabajador privado en IBM Cloud Kubernetes Service puede comunicarse con un servidor local a través de una conexión VPN Vyatta:
-
Una app en el clúster,
myapp2
, recibe una solicitud desde un servicio Ingress o LoadBalancer. Dicha app debe conectarse de forma segura a los datos en su red local. -
Puesto que
myapp2
se encuentra en un nodo trabajador que está en una VLAN privada únicamente, el dispositivo VRA actúa como una conexión segura entre los nodos trabajadores y la red local. El dispositivo VRA utiliza la dirección IP de destino para determinar qué paquetes de red deben enviarse a la red local. -
La solicitud se cifra y envía a través del túnel VPN al centro de datos local.
-
La solicitud entrante pasa a través del cortafuegos local y se entrega al punto final de túnel VPN (direccionador) donde se descifra.
-
El punto final de túnel VPN (direccionador) reenvía la solicitud al sistema principal o al servidor en local, en función de la dirección IP de destino que se haya especificado en el paso 2. Los datos necesarios se devuelven a través de la conexión VPN a
myapp2
por medio del mismo proceso.
Para configurar un Virtual Router Appliance,
-
Para habilitar una conexión VPN utilizando el VRA, configure VRRP en el VRA.
Si tiene un dispositivo direccionador existente y luego añade un clúster, las nuevas subredes portátiles que se soliciten para el clúster no se configuran en el dispositivo direccionador. Para utilizar los servicios de red, debe habilitar el direccionamiento entre las subredes de la misma VLAN habilitando VRF o la expansión de VLAN.