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 una red on-premises o en una red de proveedor de 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 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 una 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.
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 el 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.
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.
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. En el caso de la nube del Gobierno del Reino Unido, consulte Regiones.
Configuración de CPE
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:
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 un CPE para utilizar solo IKEv2 y parámetros del 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, un comentario muestra cómo configurar IKEv1 o 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. Se recomienda configurar strongSwan con la sintaxis de configuración de la interfaz del 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 la reenvío de IP en la 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 distinta de eth0, cambie eth0
en el siguiente ejemplo a la interfaz (líneas 5 y 7).
Si utiliza varias interfaces, configure las líneas 5 y 7 para esa interfaz también.
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. Antes de continuar con la configuración, decida los valores.
${cpeLocalIP}
: dirección IP del dispositivo strongSwan.${cpePublicIpAddress}
: dirección IP pública de strongSwan, también 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.${sharedSecret1}
: clave compartida previamente para el primer túnel. Puede utilizar la clave compartida previamente proporcionada por Oracle por defecto o proporcionar una 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 proporcionada por Oracle por defecto o proporcionar una al configurar la conexión IPSec en la consola de Oracle.${vcnCidrNetwork}
: rango de IP de las VCN.
La configuración del 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:
- izquierda: el CPE local de Strongswan
- derecha: la cabecera de VPN de Oracle
Utilice la siguiente plantilla para los archivos /etc/strongswan/ipsec.conf
. El archivo define los dos túneles que crea Oracle al configurar la conexión IPSec.
Si el CPE está detrás del 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 cambiar 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 un IP privado cuando el 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, luego, 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, cambie 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 datos y secretos, 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 una VCN a través de los túneles 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 al reiniciar. Para saber cómo hacer que las rutas persistan, consulte la documentación de la distribución de Linux que desee.
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.
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 mediante 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 este túnel, 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
Recomendamos utilizar quagga para configurar BGP. Para instalar quagga, utilice el siguiente comando de la aplicación Oracle Linux (si utiliza una distribución de la aplicación Linux diferente, las opciones de 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