strongSwan
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.
Oracle proporciona instrucciones de configuración para un conjunto probado de proveedores y dispositivos. Utilice la configuración correcta para su proveedor y 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, es posible que pueda crear la configuración necesaria en el dispositivo. Consulte la documentación del proveedor y realice los ajustes necesarios.
Si el dispositivo es para 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 extremos de IPSec para cada una de las conexiones para proporcionar una alta disponibilidad para las cargas de trabajo críticas. En el lado de Oracle, estos dos extremos están en enrutadores diferentes para fines de redundancia. Oracle recomienda 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 las ubicaciones de redes locales
Cada una de las direcciones que se conectan con IPSec a Oracle Cloud Infrastructure debe tener dispositivos de perímetro redundantes (también conocidos como "equipos locales de cliente" [CPE]). Agregue cada CPE a la consola de Oracle y cree una conexión de IPSec independiente entre el gateway de direccionamiento 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 de IPSec redundantes. Oracle le recomienda configurar su CPE para que utilice ambos túneles (si su CPE lo admite). En el pasado Oracle creaba conexiones IPSec con hasta cuatro túneles de IPSec.
Los tres tipos siguientes de enrutamiento están disponibles 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 aprende de forma dinámica las rutas de su red local. En el lado de Oracle, DRG anuncia las subredes de la VCN.
- Enrutamiento estático: al configurar la conexión de 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 su 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 al DRG, debe especificar las rutas específicas a la red local que desea que conozca la VCN. También debe configurar su 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 Enrutamiento de la VPN de sitio a sitio.
Otras configuraciones importantes de CPE
Asegúrese de que las listas de acceso de su 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 permitir el enrutamiento asimétrico, asegúrese de que su CPE esté configurado para gestionar el tráfico que procede de su 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 Enrutamiento de la VPN de sitio a sitio.
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 varios túneles que forman la conexión de IPSec. Configure los firewalls según corresponda. 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.
Cuando utilice varios túneles a Oracle Cloud Infrastructure, Oracle recomienda configurar el enrutamiento para direccionar de forma determinista el tráfico a través del túnel preferido. Si desea utilizar un túnel de 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/estático). De lo contrario, si da a conocer la misma ruta (por ejemplo, una ruta por defecto) a través de todos los túneles, devolverá el tráfico de su VCN a sus rutas de red locales 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 determinar cómo cifrar 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.
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 al final de la conexión debe coincidir con el identificador IKE de CPE que utiliza Oracle. De forma 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 su CPE está detrás de un dispositivo NAT, el identificador IKE de CPE configurado en su extremo puede ser la dirección IP privada del CPE, como se muestra en el diagrama siguiente.
Algunas plataformas de CPE no permiten cambiar el identificador de 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 su 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.
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 de CPE
Oracle Cloud Infrastructure proporciona las instrucciones de configuración de esta sección para su CPE. Si necesita asistencia técnica o adicional, póngase en contacto con el soporte del proveedor de CPE directamente.
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:
Include /etc/strongswan/*.conf
El archivo etc/strongswan/ipsec.secrets
por defecto incluye esta línea:
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 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 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.
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.ens3.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.ens3.accept_redirects = 0
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.${vcnCidrNetwork}
: rango de IP de las VCN.
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 left o right, 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.
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}
.
# 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
Las sentencias como ike=
y esp=
se pueden modificar para parámetros específicos según los Parámetros IPSec soportados.
Utilice la siguiente plantilla para el archivo /etc/strongswan/ipsec.secrets
. Contiene dos líneas por conexión IPSec (una línea por túnel).
${cpePublicIpAddress} ${oracleHeadend1}: PSK "${sharedSecret1}"
${cpePublicIpAddress} ${oracleHeadend2}: PSK "${sharedSecret2}"
El siguiente comando crea una interfaz de VTI con el nombre definido y la enlaza al túnel mediante IP locales y remotas.
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 porvti
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.
ip tunnel add vti1 mode vti local 10.0.3.78 remote 193.123.68.187 key 13
ip link set vti1 up
La instalación de ruta por parte del daemon IKE debe estar desactivada. Para ello, modifique charon.conf
como se muestra.
Directory - /etc/strongswan/strongswan.d/Charon.conf
#Uncomment below statement
install_routes = no
Después de configurar los archivos de secretos y de configuración, debe reiniciar el servicio de strongSwan. Utilice el comando siguiente:
Strongswan restart
El reinicio del servicio strongSwan puede afectar a los túneles existentes.
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 se guardan 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.
También puede activar el registro de OCI para obtener acceso a los logs de VPN.
Verificación del estado de la interfaz de túnel
Verifique el estado actual de los túneles de Strongswan con el siguiente comando.
strongswan status
Si la salida devuelta es similar al siguiente ejemplo, se establecerá el túnel.
oci-tunnel-1[591]: ESTABLISHED 43 minutes ago, 10.0.3.78[129.148.216.212]...193.123.68.187[193.123.68.187]
oci-tunnel-1{399}: INSTALLED, TUNNEL, reqid 102, ESP in UDP SPIs: ce6a1525_i 4829c65c_o
oci-tunnel-1{399}: 0.0.0.0/0 === 0.0.0.0/0
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.
ifconfig
<output trimmed>
vti1: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
inet 10.10.10.1 netmask 255.255.255.252 destination 10.10.10.1
inet6 fe80::5efe:a00:34e prefixlen 64 scopeid 0x20<link>
tunnel txqueuelen 1000 (IPIP Tunnel)
RX packets 69209 bytes 4050022 (3.8 MiB)
RX errors 54 dropped 54 overruns 0 frame 0
TX packets 50453 bytes 3084997 (2.9 MiB)
TX errors 1016 dropped 0 overruns 0 carrier 1016 collisions 0
vti2: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 8980
inet 192.168.10.1 netmask 255.255.255.252 destination 192.168.10.1
inet6 fe80::5efe:a00:34e prefixlen 64 scopeid 0x20<link>
tunnel txqueuelen 1000 (IPIP Tunnel)
RX packets 101256 bytes 6494872 (6.1 MiB)
RX errors 12 dropped 12 overruns 0 frame 0
TX packets 70023 bytes 4443597 (4.2 MiB)
TX errors 2142 dropped 0 overruns 0 carrier 2142 collisions 0
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):
sudo yum -y install quagga
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:
!
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
!
El archivo de configuración bgpd también es necesario para la configuración de BGP. Defina las siguientes variables para bgpd:
${LOCAL_ASN}
: ASN de BGP de la red local.${router-id_ipaddress}
: ID de BGP de la red local.${local_subnet}
: subred local que se debe anunciar.${bgp_peer-ip _network}
: CIDR /30 para la red IP de peer en OCI.${neighbor_peer_ip_address}
: dirección IP del peer de BGP de OCI.
Estas variables se utilizan en el siguiente fragmento del archivo de configuración /etc/quagga/bgpd.conf
:
hostname <host-name>
router bgp ${LOCAL_ASN}
bgp router-id ${router-id_ipaddress}
network ${bgp_peer-ip _network}
network ${bgp_peer-ip _network}
network ${local_subnet}
neighbor ${neighbour_peer_ip_address} remote-as 31898
neighbor ${neighbour_peer_ip_address} ebgp-multihop 255
neighbor ${neighbour_peer_ip_address} next-hop-self
neighbor ${neighbour_peer_ip_address} remote-as 31898
neighbor ${neighbour_peer_ip_address} ebgp-multihop 255
neighbor ${neighbour_peer_ip_address} next-hop-self
log file bgpd.log
log stdout
La activación de strongSwan para utilizar rutas e IP virtuales requiere cambios en /etc/strongswan/strongswan.d/Charon.conf
.
Elimine los comentarios de las líneas #install_routes = yes
e #install_virtual_ip = yes
y cambie los valores a "no", como se muestra a continuación:
#Tunnels
install_routes = no
#Install virtual IP addresses.
install_virtual_ip = no
Utilice los siguientes comandos para activar e iniciar el servicio para zebra y BGPD:
systemctl start zebra
systemctl enable zebra
systemctl start bgpd
systemctl enable bgpd