Acceso a otras nubes con Libreswan

Libreswan es una implementación de IPSec de código abierto basada en FreeS/WAN y Openswan. La mayoría de las distribuciones de Linux incluyen Libreswan 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 muestra cómo conectar la red virtual en la nube (VCN) de Oracle Cloud Infrastructure con otro proveedor en la nube mediante una VPN de sitio a sitio con una VM de Libreswan como equipo local de cliente (CPE).

En el ejemplo que se muestra aquí, el otro proveedor en la nube es Amazon Web Services (AWS). La VPN de sitio a sitio proporciona una conexión IPSec de sitio a sitio segura y cifrada entre los entornos de Oracle y Amazon. Permite que los recursos de las dos nubes se comuniquen entre sí mediante las direcciones IP privadas como si estuvieran en el mismo segmento de red.

También hay disponible una guía de Libreswan CPE para todos los demás casos de uso.

La compatibilidad con la interfaz de túnel virtual (VTI) para esta configuración basada en rutas requiere como mínimo la versión 3.18 de Libreswan y un núcleo reciente de Linux 3.x o 4.x. Esta configuración se validó con la versión 3.29 de Libreswan.

Arquitectura

El siguiente diagrama muestra el diseño general de la conexión.

En esta imagen se muestra el diseño general de dos nubes conectadas con una VPN de sitio a sitio y un CPE de Libreswan.

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.

El ASN de BGP de Oracle para el dominio de nube comercial es 31898. Si configura la VPN de sitio a sitio para la nube del Gobierno de EE. UU., consulte Parámetros de VPN de sitio a sitio necesarios para Government Cloud y también ASN de BGP de Oracle. Para ver la nube del Gobierno de Reino Unido, consulte Regiones.

Configuración

Importante

Las instrucciones de configuración de esta sección las proporciona Oracle Cloud Infrastructure para Libreswan. Si necesita asistencia técnica o asistencia adicional, consulte la documentación de Libreswan.

Libreswan admite túneles basados en políticas y en rutas. Los tipos de túnel pueden coexistir sin interferir entre sí. Las cabeceras de VPN de Oracle utilizan túneles basados en rutas. Oracle recomienda configurar Libreswan con la sintaxis de configuración de la interfaz de túnel virtual (VTI).

Consulte Parámetros de IPSec admitidos para obtener más información sobre los parámetros específicos utilizados de este documento.

Archivos de configuración por defecto de Libreswan

La instalación por defecto de Libreswan crea los siguientes archivos:

  • etc/ipsec.conf: raíz de la configuración de Libreswan.
  • /etc/ipsec.secrets: raíz de la ubicación en la que Libreswan busca secrets (las claves del túnel compartidas previamente).
  • /etc/ipsec.d/: directorio para almacenar los archivos .conf y .secrets de los túneles de Oracle Cloud Infrastructure (por ejemplo: oci-ipsec.conf y oci-ipsec.secrets). Libreswan le recomienda crear estos archivos en esta carpeta.

El archivo etc/ipsec.conf por defecto incluye esta línea:

include /etc/ipsec.d/*.conf

El archivo etc/ipsec.secrets por defecto incluye esta línea:

include /etc/ipsec.d/*.secrets

Las líneas anteriores fusionan automáticamente todos los archivos .conf y .secrets del directorio /etc/ipsec.d en los archivos secretos y de configuración principal que utiliza Libreswan.

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 de 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 IPSec en la tarea 4 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

Tarea 1: preparar la instancia de AWS Libreswan
  1. Al usar la consola de AWS o las API, cree una VM de Libreswan mediante un proceso de aprovisionamiento. Utilice Oracle Linux, CentOS o Red Hat como el sistema operativo principal.
  2. Una vez iniciada la nueva instancia, conéctese con SSH e instale el paquete de Libreswan:

    sudo yum -y install libreswan
  3. En la consola de AWS, desactive las comprobaciones de origen y destino de la instancia de VM de Libreswan haciendo clic con el botón derecho en la instancia, luego en Networking y, a continuación, en Cambiar origen/destino. Comprobar. Cuando se le solicite, haga clic en Sí, desactivar.

    Esta imagen muestra el cuadro de diálogo de la consola de AWS para desactivar la comprobación de origen/destino en la instancia de VM de Libreswan.
  4. En la VM de Libreswan, configure la IP_forward para permitir que los clientes de AWS envíen y reciban tráfico a través de la VM de Libreswan. En el archivo /etc/sysctl.conf, defina los siguientes valores y aplique las actualizaciones con 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. En la consola de AWS, edite la tabla de rutas de AWS. Agregue una regla con el CIDR de la VCN (172.0.0.0/16) como destino y el ID de instancia de AWS Libreswan (i-016ab864b43cb368e en este ejemplo) como destino.

    Esta imagen muestra el cuadro de diálogo de la consola AWS para editar una regla de ruta.
  6. En la consola de AWS, active el tráfico de entrada de TCP y UDP en los puertos 4500 y 500 para permitir una conexión IPSec de la VPN de sitio a sitio de Oracle Cloud Infrastructure con la VM de AWS Libreswan. Esta tarea incluye la edición de los grupos de seguridad de AWS y las ACL de red. Puede definir el valor de origen como la IP pública de Oracle (el punto final del túnel de IPSec de la cabecera de VPN de Oracle) en lugar de 0.0.0.0/0.

    Para grupos de seguridad:

    Esta imagen muestra el cuadro de diálogo de la consola AWS para editar reglas de grupo de seguridad.

    Para las ACL de red:

    Esta imagen muestra el cuadro de diálogo de la consola AWS para editar las ACL de red.
Tarea 2: configurar el objeto DRG y CPE de Oracle Cloud Infrastructure
  1. En la consola de Oracle, cree un objeto de equipo local de cliente (CPE) que apunte a la dirección IP pública de la instancia de AWS Libreswan (34.200.255.174). Puede hacerlo fácilmente usando el asistente de configuración de CPE.

  2. Si aún no tiene ningún DRG conectado a la VCN, en la consola de Oracle, cree un DRG y, a continuación, asócielo a la VCN (172.0.0.0/16).

  3. En la consola de Oracle, cree una conexión IPSec que haga referencia al CIDR de AWS VPC (10.0.0.0/16). En otras palabras, al crear la conexión IPSec, defina la ruta estática en el CIDR de AWS VPC.

    Para cada conexión IPSec configurada, Oracle crea dos túneles y asigna estos elementos a cada uno:

    • Punto final del túnel de IPSec de la cabecera de VPN de Oracle
    • Secreto compartido de túnel de VPN de Oracle

    Puede ver el estado del túnel IPSec y la IP del extremo de VPN de Oracle haciendo clic en el menú Acciones (Menú Acciones) de la conexión IPSec y, a continuación, en Ver detalles. Inicialmente, cada túnel se encuentra en estado INACTIVO (fuera de línea) porque aún tiene alguna configuración adicional que realizar más adelante en la VM de AWS Libreswan.

    Para ver el secreto compartido, haga clic en el menú Actions (Menú Acciones) de un túnel individual y, a continuación, en View Details. Junto a Secreto compartido, haga clic en Mostrar.

  4. En la consola de Oracle, edite las reglas de seguridad de la VCN para activar el tráfico de entrada de TCP y UDP en los puertos 4500 y 500, como lo hizo para los grupos de seguridad de AWS y las ACL de red. Puede utilizar la dirección IP pública de la VM de AWS Libreswan en lugar de 0.0.0.0/0 si es una IP pública persistente. Abra también todos los protocolos y puertos para el tráfico de entrada desde el CIDR de AWS VPC (10.0.0.0/16). Recuerde: las listas de seguridad están asociadas con una subred; por lo tanto, edite la lista de seguridad asociada con cada subred que necesite comunicarse con AWS VPC. O bien, si utiliza grupos de seguridad de red de la VCN, edite las reglas en los NSG relevantes.

  5. En la consola de Oracle, edite las tablas de rutas de la VCN para agregar una regla que tenga el CIDR de AWS VPC (10.0.0.0/16) como bloque CIDR de destino y el DRG creado anteriormente como destino. Recuerde: las tablas de rutas están asociadas con una subred; por lo tanto, edite la tabla de rutas asociada con cada subred que necesite comunicarse con AWS VPC.

Tarea 3: determinar los valores de configuración necesarios

La configuración de Libreswan utiliza las siguientes variables. Determine los valores antes de continuar con la configuración.

  • ${cpeLocalIP}: dirección IP del dispositivo Libreswan.
  • ${cpePublicIpAddress}: dirección IP pública de Libreswan. Esta es la dirección IP de la 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.
  • ${vti1}: nombre de la primera VTI utilizada. Por ejemplo, vti1.
  • ${vti2}: nombre de la segunda VTI utilizada. Por ejemplo, vti2.
  • ${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.
  • ${vcnCidrNetwork}: rango de IP de las VCN.
Tarea 4: configurar el archivo de configuración: /etc/ipsec.d/oci-ipsec.conf

La configuración de Libreswan utiliza el concepto de izquierda y derecha para definir los parámetros de configuración para el dispositivo CPE local y el gateway remoto. Cualquiera de los lados de la conexión (la conexión en la configuración de Libreswan) puede estar a la izquierda o a la derecha, pero la configuración de dicha conexión debe ser coherente. En este ejemplo:

  • Izquierda: el CPE local de Libreswan
  • Derecha: la cabecera de VPN de Oracle

Utilice la siguiente plantilla para el archivo /etc/ipsec.d/oci-ipsec.conf. El archivo define los dos túneles que crea Oracle al configurar la conexión IPSec.

Importante

Si el CPE está detrás de un dispositivo NAT 1–1, elimine el comentario del parámetro leftid y configúrelo igual que ${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
Tarea 5: Configurar el archivo secrets: /etc/ipsec.d/oci-ipsec.secrets

Utilice la siguiente plantilla para el archivo /etc/ipsec.d/oci-ipsec.secrets. Contiene dos líneas por conexión IPSec (una línea por túnel).

${cpePublicIpAddress} ${ipAddress1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${ipAddress2}: PSK "${sharedSecret2}"
Tarea 6: Reiniciar la configuración de Libreswan

Después de configurar los archivos secrets y la configuración, debe reiniciar el servicio de Libreswan con el siguiente comando.

Importante

El reinicio del servicio de Libreswan puede afectar a los túneles existentes.
service ipsec restart
Tarea 7: Configurar el enrutamiento IP

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.

Importante

Las rutas estáticas creadas con el comando ip route no persisten durante un reinicio. Para determinar cómo persisten las rutas, consulte la documentación que prefiera sobre la distribución de Linux.
ip route add ${VcnCidrBlock} nexthop dev ${vti1} nexthop dev ${vti2}
ip route show

Verificación

Un servicio de supervisión 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 cómo supervisar la VPN de sitio a sitio, consulte Métricas de VPN de sitio a sitio.

Si tiene alguna incidencia, consulte Solución de problemas de VPN de sitio a sitio.

Verificación del estado de Libreswan

Verifique el estado actual de los túneles de Libreswan mediante el siguiente comando:

ipsec status

El túnel se establece si ve una línea que incluye lo siguiente:

STATE_MAIN_I4: ISAKMP SA established

Si utiliza IKEv2, verá lo siguiente:

STATE_V2_IPSEC_I (IPsec SA established)

En el futuro, si necesita abrir un ticket de soporte con Oracle para el túnel de Libreswan, incluya la salida del comando ipsec status anterior.

Comprobación del estado de la interfaz de túnel

Compruebe si 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 muestra un ejemplo de la salida de ifconfig con una implementación de trabajo de Libreswan que muestra las 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

A continuación, se muestra un ejemplo de la salida de 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

Además, en la consola de Oracle, cada túnel de IPSec debe estar ahora en estado ACTIVO.