strongSwan es una solución de VPN basada en IPSec de código abierto. La mayoría de las distribuciones de Linux incluyen strongSwan o facilitan la instalación. Puede instalarlo en hosts de su red local o en una red de proveedor en la nube.
En este tema se proporciona la configuración de CPE que ejecuta strongSwan. La rama strongSwan 5.x soporta los protocolos de intercambio de claves IKEv1 y IKEv2 con la pila IPSec nativa NETKEY del núcleo de Linux.
Importante
Oracle proporciona instrucciones de configuración para un conjunto probado de proveedores y dispositivos. Utilice la configuración correcta para el proveedor y la versión de software.
Si el dispositivo o la versión de software que Oracle utiliza para verificar que la configuración no coincide exactamente con el dispositivo o el software, puede crear la configuración necesaria en el dispositivo. Consulte la documentación del proveedor y realice los cambios necesarios.
Si el dispositivo proviene de un proveedor que no está en la lista de proveedores y dispositivos verificados o si ya está familiarizado con la configuración del dispositivo para IPSec, consulte la lista de parámetros admitidos de IPSec y consulte la documentación del proveedor para obtener ayuda.
Oracle Cloud Infrastructure ofrece una VPN de sitio a sitio, una conexión IPSec segura entre la red local y una red virtual en la nube (VCN).
El siguiente diagrama muestra una conexión básica de IPSec con Oracle Cloud Infrastructure con túneles redundantes. Las direcciones IP utilizadas en este diagrama son solo ejemplos.
Mejores prácticas
En esta sección se tratan las mejores prácticas y consideraciones generales para utilizar la VPN de sitio a sitio.
Configuración de todos los túneles para cada conexión de IPSec
Oracle despliega dos cabeceras IPSec para conexiones a fin de proporcionar alta disponibilidad para cargas de trabajo esenciales. En el lado de Oracle, estos dos extremos están en enrutadores diferentes para fines de redundancia. Recomendamos configurar todos los túneles disponibles para obtener la máxima redundancia. Esta es una parte clave de la filosofía "Diseño para fallo".
Disponibilidad de CPE redundantes en ubicaciones de redes locales
Recomendamos que cada sitio que se conecte con IPSec a Oracle Cloud Infrastructure tenga dispositivos perimetrales redundantes (también conocidos como equipos locales de cliente [CPE]). Agregue cada CPE a la consola de Oracle y cree una conexión IPSec independiente entre un gateway de enrutamiento dinámico (DRG) y cada CPE. Para cada conexión de IPSec, Oracle aprovisiona dos túneles en las cabeceras de IPSec geográficamente redundantes. Para obtener más información, consulte la Guía de redundancia de conectividad (PDF).
Consideraciones del protocolo de enrutamiento
Al crear una conexión IPSec de VPN de sitio a sitio, esta tiene dos túneles IPSec redundantes. Oracle recomienda configurar el CPE para que utilice ambos túneles (si el CPE lo soporta). En el pasado Oracle creaba conexiones IPSec con hasta cuatro túneles de IPSec.
Están disponibles los tres tipos siguientes de enrutamiento y puede seleccionar el tipo de enrutamiento por separado para cada túnel de la VPN de sitio a sitio:
Enrutamiento dinámico de BGP: las rutas disponibles se aprenden de forma dinámica mediante BGP. DRG obtiene de forma dinámica las rutas de la red local. En el lado de Oracle, DRG anuncia las subredes de la VCN.
Envío estático: al configurar la conexión IPSec con DRG, debe especificar las rutas específicas a la red local de la que desea que se conozca la VCN. También debe configurar el dispositivo CPE con rutas estáticas a las subredes de la VCN. Estas rutas no se aprenden dinámicamente.
Enrutamiento basado en política: al configurar la conexión IPSec con DRG, debe especificar las rutas específicas a la red local de la que desea que se conozca la VCN. También debe configurar el dispositivo CPE con rutas estáticas a las subredes de la VCN. Estas rutas no se aprenden dinámicamente.
Para obtener más información sobre el enrutamiento con la VPN de sitio a sitio, incluidas las recomendaciones de Oracle sobre cómo manipular el algoritmo de selección de la mejor ruta de acceso de BGP, consulte Envío de la VPN de sitio a sitio.
Otras configuraciones importantes de CPE
Asegúrese de que las listas de acceso de CPE estén configuradas correctamente para no bloquear el tráfico necesario desde o hasta Oracle Cloud Infrastructure.
Si tiene varios túneles activos simultáneamente, puede que experimente un enrutamiento asimétrico. Para tener en cuenta el enrutamiento asimétrico, asegúrese de que el CPE esté configurado para gestionar el tráfico que procede de la VCN en cualquiera de los túneles. Por ejemplo, debe desactivar la inspección ICMP y configurar la omisión del estado TCP. Para obtener más información sobre la configuración adecuada, póngase en contacto con el soporte del proveedor de CPE. Para configurar el enrutamiento para que sea simétrico, consulte Routing for Site-to-Site VPN.
Advertencias y limitaciones 🔗
En esta sección se tratan las características y las limitaciones importantes generales de la VPN de sitio a sitio que deben tenerse en cuenta. Consulte la sección Límites de servicio para obtener una lista de límites aplicables e instrucciones para solicitar un aumento del límite.
Enrutamiento asimétrico
Oracle utiliza el enrutamiento asimétrico en los túneles que forman la conexión IPSec. Configure firewalls teniendo esto en cuenta. De lo contrario, las pruebas de ping o el tráfico de aplicaciones a través de la conexión no funcionan de forma fiable.
Al utilizar varios túneles con Oracle Cloud Infrastructure, recomendamos configurar el enrutamiento para enrutar de manera determinista el tráfico a través del túnel preferido. Para utilizar un túnel IPSec como principal y otro como de copia de seguridad, configure más rutas específicas para el túnel principal (BGP) y rutas menos específicas (resumen o ruta predeterminada) para el túnel de copia de seguridad (BGP/static). De lo contrario, si anuncia la misma ruta (por ejemplo, una ruta por defecto) a través de todos los túneles, el tráfico devuelto de una VCN a una red local se enrutará a cualquiera de los túneles disponibles. Esto se debe a que Oracle utiliza el enrutamiento asimétrico.
Para obtener recomendaciones específicas de enrutamiento de Oracle sobre cómo forzar un enrutamiento simétrico, consulte Enrutamiento de la VPN de sitio a sitio.
VPN de sitio a sitio basada en rutas o en políticas
El protocolo IPSec utiliza asociaciones de seguridad (SA) para decidir cómo cifrar los paquetes. Dentro de cada SA, se definen dominios de cifrado para asignar el tipo de protocolo y la dirección IP de origen y destino de un paquete a una entrada de la base de datos de SA para definir cómo cifrar o descifrar un paquete.
Nota
Otros proveedores o documentación del sector pueden utilizar el término ID de servidor proxy, índice de parámetros de seguridad (SPI) o selector de tráfico al hacer referencia a dominios de cifrado o SA.
Existen dos métodos generales para implantar túneles de IPSec:
Túneles basados en rutas: también denominados túneles basados en el próximo salto. Se realiza una consulta de tabla de rutas en la dirección IP de destino de un paquete. Si la interfaz de salida de esa ruta es un túnel de IPSec, el paquete se cifra y se envía al otro extremo del túnel.
Túneles basados en políticas: la dirección IP de origen y de destino del paquete coincide con una lista de sentencias de política. Si se encuentra una coincidencia, el paquete se cifra según las reglas de esa sentencia de política.
Los extremos de la VPN de sitio a sitio de Oracle utilizan túneles basados en rutas, pero pueden trabajar con túneles basados en políticas con algunas advertencias que se enumeran en las siguientes secciones.
Si su CPE está detrás de un dispositivo NAT 🔗
En general, el identificador IKE de CPE configurado en el extremo local de la conexión debe coincidir con el identificador IKE de CPE que utiliza Oracle. De manera predeterminada, Oracle utiliza la dirección IP pública de CPE, que se proporciona al crear el objeto CPE en la consola de Oracle. Sin embargo, si un CPE está detrás de un dispositivo NAT, el identificador IKE de CPE configurado en el extremo local puede ser la dirección IP privada del CPE, como se muestra en el diagrama siguiente.
Nota
Algunas plataformas de CPE no permiten cambiar el identificador IKE local. Si no puede, debe cambiar el ID de IKE remoto en la consola de Oracle para que coincida con el ID de IKE local de CPE. Puede proporcionar el valor al configurar la conexión de IPSec o más tarde, editando la conexión de IPSec. Oracle espera que el valor sea una dirección IP o un nombre de dominio completo (FQDN), como cpe.example.com. Para obtener instrucciones, consulte Cambio del identificador IKE de CPE que Oracle utiliza.
Parámetros de IPSec admitidos 🔗
Para obtener una lista neutra de proveedores de los parámetros de IPSec admitidos para todas las regiones, consulte Parámetros de IPSec admitidos.
Oracle Cloud Infrastructure proporciona las instrucciones de configuración de esta sección para este CPE. Si necesita soporte o ayuda adicional, póngase en contacto directamente con el soporte del proveedor de CPE.
En la siguiente figura se muestra el diseño básico de la conexión de IPSec.
Archivos de configuración por defecto de strongSwan
La instalación por defecto de strongSwan crea los siguientes archivos:
etc/strongswan/ipsec.conf: raíz de la configuración de strongSwan.
/etc/strongswan/ipsec.secrets: raíz de la ubicación en la que strongSwan busca secretos (las claves compartidas previamente del túnel).
El archivo etc/strongswan/ipsec.conf por defecto incluye esta línea:
Copiar
Include /etc/strongswan/*.conf
El archivo etc/strongswan/ipsec.secrets por defecto incluye esta línea:
Copiar
include /etc/strongswan/ipsec.d/*.secrets
Las líneas anteriores fusionan automáticamente todos los archivos .conf y .secrets del directorio /etc/strongswan en los archivos de secretos y de configuración principal que utiliza strongSwan.
Acerca del uso de IKEv2
Oracle admite la versión 1 (IKEv1) y la versión 2 (IKEv2) de Internet Key Exchange. Si configura la conexión IPSec en la consola para utilizar IKEv2, debe configurar el CPE para que utilice solo IKEv2 y los parámetros de cifrado IKEv2 relacionados que admite el CPE. Para obtener una lista de los parámetros admitidos por Oracle para IKEv1 o IKEv2, consulte Parámetros de IPSec admitidos.
La versión de IKE se especifica al configurar el archivo de configuración de IPSec en la tarea 3 de la siguiente sección. En ese archivo de ejemplo, hay un comentario que muestra cómo configurar IKEv1 frente a IKEv2.
Proceso de configuración
El siguiente proceso de configuración analiza cómo se configura un túnel basado en rutas en strongSwan. Las cabeceras de VPN de Oracle utilizan túneles basados en rutas. Oracle recomienda configurar strongSwan con la sintaxis de configuración de la interfaz de túnel virtual (VTI).
Para obtener más información sobre los parámetros específicos utilizados en este documento, consulte Parámetros de IPSec admitidos.
En función de la distribución de Linux que esté utilizando, es posible que necesite activar el envío de IP en su interfaz para que los clientes puedan enviar y recibir tráfico a través de strongSwan. En el archivo /etc/sysctl.conf, defina los siguientes valores y aplique las actualizaciones con sudo sysctl -p.
Si utiliza una interfaz que no sea eth0, cambie eth0 en el siguiente ejemplo a la interfaz (líneas 5 y 7).
Si utiliza varias interfaces, configure también las líneas 5 y 7 para esa interfaz.
La configuración de strongSwan utiliza las siguientes variables. Determine los valores antes de continuar con la configuración.
${cpeLocalIP}: dirección IP del dispositivo strongSwan.
${cpePublicIpAddress}: dirección IP pública de strongSwan, también la dirección IP de su interfaz externa. Según la topología de red, el valor puede ser diferente de ${cpeLocalIP}.
${oracleHeadend1}: para el primer túnel, el punto final de IP pública de Oracle obtenido de la consola de Oracle.
${oracleHeadend2}: para el segundo túnel, el punto final de IP pública de Oracle obtenido de la consola de Oracle.
${sharedSecret1}: clave compartida previamente para el primer túnel. Puede utilizar la clave compartida previamente y proporcionada por Oracle por defecto o proporcionar su propia conexión al configurar la conexión IPSec en la consola de Oracle.
${sharedSecret2}: clave compartida previamente para el segundo túnel. Puede utilizar la clave compartida previamente y proporcionada por Oracle por defecto o proporcionar su propia conexión al configurar la conexión IPSec en la consola de Oracle.
La configuración de Strongswan utiliza el concepto de izquierda y derecha para definir los parámetros de configuración para el dispositivo CPE local y el gateway remoto. Cada lado de la conexión (conn en la configuración de Strongswan) puede ser izquierdo o derecho, pero la configuración de esa conexión debe ser consistente. En este ejemplo:
left: el CPE local de Strongswan
derecha: la cabecera de VPN de Oracle
Utilice la siguiente plantilla para el archivo /etc/strongswan/ipsec.conf. El archivo define los dos túneles que crea Oracle al configurar la conexión IPSec.
Importante
Si su CPE está detrás de un dispositivo NAT de uno a uno, quite el comentario del parámetro leftid y configúrelo igual que ${cpePublicIpAddress}.
Copiar
# basic configuration
config setup
conn %default
ikelifetime=28800s
keylife=3600s
rekeymargin=3m
keyingtries=%forever
mobike=no
ike=aes256-sha2_384-ecp384!
esp=aes256gcm16-modp1536!
conn oci-tunnel-1
left=${cpeLocalIP}
#leftid=${cpePublicIpAddress} # See preceding note about 1-1 NAT device
leftsubnet=0.0.0.0/0
leftauth=psk
right=${oracleHeadend1}
rightid=${oracleHeadend1}
rightsubnet=0.0.0.0/0
rightauth=psk
type=tunnel
keyexchange=ikev1 # To use IKEv2, change to ikev2
auto=start
dpdaction=restart
mark=13 # Needs to be unique across all tunnels
conn oci-tunnel-2
left={cpeLocalIP}
#leftid=${cpePublicIpAddress}
leftsubnet=0.0.0.0/0
leftauth=psk
right=${oracleHeadend2}
rightid=${oracleHeadend2}
rightsubnet=0.0.0.0/0
rightauth=psk
type=tunnel
keyexchange=ikev1 # To use IKEv2, change to ikev2
auto=start
dpdaction=restart
mark=14 # Needs to be unique across all tunnels
Nota
Las sentencias como ike= y esp= se pueden modificar para parámetros específicos según los Parámetros IPSec soportados.
El siguiente comando crea una interfaz de VTI con el nombre definido y la enlaza al túnel mediante IP locales y remotas.
Copiar
ip tunnel add <name> local <local IP> remote <remote IP> mode vti key <mark>
<name> puede ser cualquier nombre de dispositivo válido (ipsec0, vti0, etc.). El comando ip trata los nombres que empiezan por vti como especiales en algunas instancias (como, por ejemplo, al recuperar estadísticas de dispositivo). Las direcciones IP son los puntos finales del túnel de IPSec. Se puede utilizar una IP privada cuando su CPE esté detrás de un dispositivo NAT.
<mark> debe coincidir con la marca configurada para la conexión.
Después de crear la VTI, se debe activar (utilice ip link set <name> up) y, a continuación, puede instalar rutas y utilizar protocolos de enrutamiento como se muestra en el siguiente ejemplo.
Copiar
ip tunnel add vti1 mode vti local 10.0.3.78 remote 193.123.68.187 key 13
ip link set vti1 up
Utilice el siguiente comando ip para crear rutas estáticas que envíen tráfico a la VCN a través de los túneles de IPSec. Si está conectado con una cuenta de usuario sin privilegios, puede que tenga que utilizar sudo antes del comando.
Nota
Las rutas estáticas creadas con el comando ip route no se guardan durante un reinicio. Para determinar cómo persisten las rutas, consulte la documentación que prefiera sobre la distribución de Linux.
Copiar
ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show
Verificación 🔗
Un servicio de control también está disponible en Oracle Cloud Infrastructure para supervisar de forma activa y pasiva los recursos en la nube. Para obtener información sobre la supervisión de una VPN de sitio a sitio, consulte Métricas de VPN de sitio a sitio.
En el futuro, si necesita abrir un ticket de soporte con Oracle para el túnel de strongSwan, incluya la salida completa del comando strongswan status.
Verificación del estado de la interfaz de túnel
Verifique que las interfaces del túnel virtual estén activas o inactivas mediante el comando ifconfig o el comando ip link show. También puede utilizar aplicaciones como tcpdump con las interfaces.
A continuación se incluye un ejemplo de la salida ifconfig con una implantación de strongSwan en funcionamiento que muestra las VTI disponibles.
A continuación, se muestra un ejemplo de la salida de ip link show:
ip link show
<output trimmed>
vti2@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 10.0.3.78 peer 139.185.34.172
14: vti1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 8980 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/ipip 10.0.3.78 peer 193.123.68.187
Configuración de enrutamiento dinámico con strongSwan 🔗
Oracle recomienda utilizar quagga para configurar BGP. Para instalar quagga, utilice el siguiente comando de Oracle Linux (si utiliza una distribución de Linux diferente, los comandos pueden variar ligeramente):
Cambie la configuración de zebra (/etc/quagga/zebra.conf) para definir la dirección IP de la VTI, que es necesaria ya que BGP utiliza el intercambio de tráfico. Defina las siguientes variables para zebra:
${vti_name1}: nombre de la primera VTI utilizada. Por ejemplo, vti1.
${vti_name2}: nombre de la segunda VTI utilizada. Por ejemplo, vti2.
${vti_ipaddress1}: dirección IP asignada a la primera VTI utilizada.
${vti_ipaddress2}: dirección IP asignada a la segunda VTI utilizada.
${local_subnet}: subred del CPE local.
Estas variables se utilizan en el siguiente extracto del archivo de configuración:
Copiar
!
hostname strongswan-centos
log file /var/log/quagga/quagga.log
!
interface ens3
ipv6 nd suppress-ra
!
interface ens5
ipv6 nd suppress-ra
!
interface lo
!
interface <Vti_name1>
ip address ${vti_ipaddress1}
ipv6 nd suppress-ra
!
interface <Vti_name2>
ip address ${vti_ipaddress2}
ipv6 nd suppress-ra
!
ip route ${local_subnet} <Vti_name1>
ip route ${local_subnet} <Vti_name2>
!
ip forwarding
!
!
line vty
!