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
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
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
yoci-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
- 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.
-
Una vez iniciada la nueva instancia, conéctese con SSH e instale el paquete de Libreswan:
sudo yum -y install libreswan
-
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.
-
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 consudo 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
-
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.
-
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:
Para las ACL de red:
-
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.
-
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).
-
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
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 () de un túnel individual y, a continuación, en View Details. Junto a Secreto compartido, haga clic en Mostrar.
-
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.
-
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.
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.
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.
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
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}"
Después de configurar los archivos secrets y la configuración, debe reiniciar el servicio de Libreswan con el siguiente comando.
El reinicio del servicio de Libreswan puede afectar a los túneles existentes.
service ipsec restart
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.
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.