Conecte su centro de datos local (IDC) a una Virtual Private Cloud (VPC) de Alibaba Cloud mediante un Traditional VPN Gateway y el software de código abierto strongSwan.
Escenario
Una empresa ha creado una VPC en la región China (Hangzhou). La empresa desea utilizar un Traditional VPN Gateway con strongSwan para habilitar la conectividad de red entre la VPC en la nube y el IDC local.
En este escenario, el IDC cuenta con una sola IP pública de salida y establece una conexión IPsec de túnel dual con el VPN Gateway de Alibaba Cloud:
Plan de recursos
-
Nube: VPC con bloque CIDR 10.0.0.0/16 en la región China (Hangzhou)
vSwitch 1: Zona de disponibilidad I, bloque CIDR 10.0.0.0/24
vSwitch 2: Zona de disponibilidad J, bloque CIDR 10.0.1.0/24
Instancia ECS: ubicada en vSwitch 1, dirección IP 10.0.0.1
-
VPN Gateway: tras su creación, el sistema asigna automáticamente dos direcciones IP públicas:
Dirección IPsec 1 (túnel activo): [[0]]
Dirección IPsec 2 (túnel en espera): [[0]]
-
Local: Bloque CIDR del IDC local 172.16.0.0/16
Dispositivo strongSwan: IP privada 172.16.0.1
IP pública de salida: XX.XX.3.3
-
Configuración de cifrado: Debe ser consistente tanto en el lado de la nube como en el local.
Versión IKE: v2
Modo de negociación: principal
Algoritmo de cifrado: AES128 / SHA1 / Grupo DH 2.
Tiempo de vida de SA: 86400 segundos.
Enrutamiento: Utilice enrutamiento basado en destino. Este método especifica "qué tráfico fluye a través del túnel VPN"; solo necesita definir los bloques CIDR en ambos extremos, y el tráfico que coincida con dichos bloques se considera "tráfico interesante". El sistema lo enruta automáticamente por el túnel y genera la ruta correspondiente.
Este tutorial abarca únicamente el escenario de IP pública de salida única con enrutamiento estático. Para escenarios de doble IP pública de salida o enrutamiento dinámico BGP, consulte Configure strongSwan.
Requisitos previos
El bloque CIDR de la VPC y el bloque CIDR del IDC local no deben superponerse.
Cree una VPC según lo descrito en el plan de recursos, con un vSwitch en cada una de las dos zonas de disponibilidad diferentes. Despliegue al menos una instancia ECS en la VPC para verificar la conectividad.
Despliegue un servidor Linux en el IDC local (este tutorial utiliza CentOS Stream 9) con una IP pública de salida. Instalará strongSwan en este servidor para que funcione como gateway local.
Paso 1: Crear un Traditional VPN Gateway
-
Vaya a la página de consola de VPN Gateway page y haga clic en Create VPN Gateway para configurar los siguientes parámetros clave:
Instance Name: Introduzca un nombre descriptivo para la instancia, como vpn-gw-docdev.
Region and Availability Zone: Seleccione la región donde se encuentra la VPC. Este tutorial utiliza China (Hangzhou).
Gateway Type: Seleccione Standard.
Network Type: Seleccione Public.
VPC: Seleccione la VPC a la que desea conectarse.
vSwitch 1: Seleccione un vSwitch en la Zona de disponibilidad I.
vSwitch 2: Seleccione un vSwitch en la Zona de disponibilidad J. Debe estar en una zona de disponibilidad distinta a la de vSwitch 1 para garantizar alta disponibilidad entre zonas. Si no hay ningún vSwitch disponible, cree uno primero.
Peak bandwidth: Seleccione el ancho de banda según sus requisitos empresariales. Este tutorial utiliza el valor predeterminado.
IPsec-VPN: Enable.
SSL-VPN: Close.
Purchase duration: Utilice el valor predeterminado.
Create Service-Linked Role: Asegúrese de que se haya creado un rol vinculado al servicio. El VPN Gateway utiliza este rol para acceder a recursos de otros productos en la nube.
Haga clic en Buy Now y complete el pago. La inicialización de la instancia de VPN Gateway tarda entre 1 y 5 minutos aproximadamente. El sistema asigna dos direcciones IP públicas al VPN Gateway para los túneles activo y en espera.
Paso 2: Crear un customer gateway
Un customer gateway registra la dirección IP pública de su dispositivo de gateway local en Alibaba Cloud. Dado que en este escenario el IDC tiene una sola IP pública de salida, solo es necesario crear un customer gateway.
En el panel de navegación izquierdo de la consola de VPN Gateway, haga clic en Customer Gateways.
-
Configure los siguientes parámetros:Create Customer Gateway
Name: Introduzca un nombre para el customer gateway, como cgw-idc-docdev.
IP Address: Introduzca la IP pública de salida del IDC local (XX.XX.3.3).
Paso 3: Crear una conexión IPsec
En el panel de navegación izquierdo de la consola de VPN Gateway, haga clic en IPsec Connections.Bind VPN Gateway
-
Configure los parámetros básicos de la conexión IPsec:
Name: Introduzca un nombre descriptivo para el recurso, como ipsec-docdev.
Region: Seleccione China (Hangzhou).
Bind VPN Gateway: Seleccione el VPN Gateway creado en el Paso 1.
Routing Mode: Seleccione Destination Routing Mode. En este modo, usted define los bloques CIDR en ambos extremos, y el sistema enruta automáticamente el tráfico coincidente a través del túnel, generando la ruta correspondiente.
Local Network: Introduzca el bloque CIDR de la VPC 10.0.0.0/16.
Remote Network: Introduzca el bloque CIDR del IDC 172.16.0.0/16.
Effective Immediately: Seleccione Yes. El lado de Alibaba Cloud inicia la negociación con el par, lo que permite establecer la conexión rápidamente una vez configurado el extremo remoto.
Enable BGP: No se habilita en este tutorial.
-
Configure los parámetros del túnel:
-
Tunnel 1 (Primary):
Customer Gateway: Seleccione el customer gateway creado en el Paso 2.
Pre-Shared Key: Clave precompartida utilizada para la autenticación de identidad durante la negociación del túnel IPsec. La clave precompartida debe ser idéntica en ambos extremos; de lo contrario, el túnel no se podrá establecer. Utilice una contraseña segura que contenga letras mayúsculas, minúsculas, dígitos y caracteres especiales.
-
Encryption Configuration: Mantenga la configuración predeterminada. Este tutorial utiliza el algoritmo de cifrado (AES128), el algoritmo de autenticación (SHA1) y el grupo DH (group2) predeterminados. Para especificar manualmente los algoritmos, expanda Encryption Configuration y modifíquelos.
ImportanteSi necesita cambiar la configuración, asegúrese de que los siguientes parámetros sean consistentes entre el lado de la nube y el local: versión IKE, modo de negociación y tiempo de vida de SA.
-
Tunnel 1 (Backup):
Customer Gateway: Seleccione el mismo customer gateway que para el túnel activo (en este escenario, el IDC tiene una sola IP pública de salida).
Pre-Shared Key: Este tutorial utiliza la misma clave que el túnel activo.
Encryption Configuration: Mantenga la misma configuración que el túnel activo. Utilice los valores predeterminados.
-
-
Después de hacer clic en OK, el sistema le preguntará si desea publicar la ruta. Haga clic en Cancel por ahora.
La inicialización del recurso de conexión IPsec tarda aproximadamente 5 minutos (estado: Preparing ), periodo durante el cual no es posible configurar rutas. Puede continuar con el Paso 4 para configurar strongSwan primero. La configuración de rutas se completa en el Paso 5.
-
Anote las IP públicas de los dos túneles del lado de la nube. Las necesitará al configurar strongSwan:
Regrese a la página de lista de IPsec-VPN connection y busque la conexión IPsec que acaba de crear.
En la columna Gateway IP Address, anote la Dirección IPsec 1 y la Dirección IPsec 2. Este tutorial utiliza XX.XX.1.1 y XX.XX.2.2 como ejemplos.
Paso 4: Configurar strongSwan
La siguiente información sobre productos de terceros se proporciona únicamente como referencia. Alibaba Cloud no ofrece garantías, expresas o implícitas, sobre el rendimiento o la fiabilidad de productos de terceros, ni sobre cualquier impacto derivado de las operaciones que realice en ellos.
A continuación se utiliza el sistema operativo CentOS Stream 9 de 64 bits como ejemplo para configurar strongSwan. Para otros sistemas operativos, consulte official strongSwan documentation.
1. Configurar reglas de firewall
En el dispositivo strongSwan, permita el protocolo ESP (número de protocolo IP 50), el puerto UDP 500 y el puerto UDP 4500 para permitir el acceso desde las dos direcciones IPsec del lado de la nube.
El siguiente ejemplo utiliza iptables. Ajuste los comandos según la herramienta de firewall que utilice:
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p esp -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 500 -j ACCEPT
iptables -I INPUT -s XX.XX.1.1,XX.XX.2.2 -p udp --dport 4500 -j ACCEPT
2. Habilitar el reenvío de IP
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sudo sysctl -p
3. Instalar strongSwan
dnf install epel-release -y
dnf install strongswan -y
Paso 4: Configurar strongSwan
Realice una copia de seguridad del archivo de configuración original: mv /etc/strongswan/swanctl/swanctl.conf /etc/strongswan/swanctl/swanctl.conf.bak
Cree un nuevo archivo de configuración: vi /etc/strongswan/swanctl/swanctl.conf
-
Agregue y guarde la siguiente configuración. Reemplace las direcciones IP y la clave precompartida del ejemplo con sus valores reales:
# strongSwan dual-tunnel IPsec-VPN configuration for: Alibaba Cloud Traditional VPN Gateway + on-premises single public egress IP + destination-based routing (traffic selector) # # Only parameters marked with "(Modify)" need to be changed for your environment. Keep all other parameters as default. # Algorithm note: aes128-sha1-modp1024 = AES-128 / SHA-1 / DH Group 2 (console default) # Active/standby logic: vco1 (priority=1) is the active tunnel, and vco2 (priority=2) is the standby tunnel. Failover is automatic when the active tunnel fails. connections { # === Tunnel 1 (Active) === vco1 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (Modify) Private IP of the strongSwan NIC. In a NAT environment, use the private IP. If the NIC is bound to the public IP, use the public IP. local { auth = psk id = XX.XX.3.3 # (Modify) On-premises public egress IP } remote_addrs = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud remote { auth = psk id = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud. Must match remote_addrs above. } children { vco_child1 { local_ts = 172.16.0.0/16 # (Modify) On-premises traffic selector CIDR block remote_ts = 10.0.0.0/16 # (Modify) Alibaba Cloud traffic selector CIDR block mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 1 # Specifies the active tunnel. Do not modify. } } } # === Tunnel 2 (Standby) === vco2 { version = 2 dpd_delay = 10 rekey_time = 84600 over_time = 1800 proposals = aes128-sha1-modp1024 encap = yes local_addrs = 172.16.0.1 # (Modify) Private IP of the strongSwan NIC. Same as local_addrs of Tunnel 1. local { auth = psk id = XX.XX.3.3 # (Modify) On-premises public egress IP. Same as Tunnel 1. } remote_addrs = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud remote { auth = psk id = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud. Must match remote_addrs above. } children { vco_child2 { local_ts = 172.16.0.0/16 # (Modify) On-premises traffic selector CIDR block. Same as local_ts of Tunnel 1. remote_ts = 10.0.0.0/16 # (Modify) Alibaba Cloud traffic selector CIDR block. Same as remote_ts of Tunnel 1. mode = tunnel rekey_time = 85500 life_time = 86400 dpd_action = restart start_action = start close_action = start esp_proposals = aes128-sha1-modp1024 priority = 2 # Specifies the standby tunnel. Do not modify. } } } } secrets { ike-vco1 { id = XX.XX.1.1 # (Modify) Public IP of Tunnel 1 on Alibaba Cloud secret = your-psk-here # (Modify) Pre-shared key for Tunnel 1. Must match the key on the Alibaba Cloud side. } ike-vco2 { id = XX.XX.2.2 # (Modify) Public IP of Tunnel 2 on Alibaba Cloud secret = your-psk-here # (Modify) Pre-shared key for Tunnel 2. Must match the key on the Alibaba Cloud side. } }
5. Iniciar strongSwan y verificar el estado del túnel
sudo systemctl restart strongswan
swanctl --load-all
watch swanctl --list-sas
Si ambos túneles muestran ESTABLISHED y CHILD_SA se encuentra en estado INSTALLED, la conexión IPsec-VPN entre el dispositivo strongSwan y el VPN Gateway de Alibaba Cloud se ha establecido correctamente.
Paso 5: Publicar rutas en la nube
Dado que este tutorial utiliza enrutamiento basado en destino, el sistema genera automáticamente una entrada de ruta en la Policy-based Route Table del VPN Gateway.
Puede publicar esta ruta en la tabla de rutas de la VPC con un solo clic, de modo que el tráfico desde las instancias ECS en la VPC hacia el bloque CIDR del IDC se dirija al VPN Gateway:
Regrese a la página de lista de VPN Gateway y haga clic en el ID de instancia del VPN Gateway creado en el Paso 1 para abrir la página de detalles.
Haga clic en la pestaña Policy-based Route Table. Podrá ver la entrada de ruta de destino generada automáticamente por el sistema después de que la conexión IPsec utiliza el enrutamiento basado en destino (bloque CIDR de destino 172.16.0.0/16, el siguiente salto es la conexión IPsec).
-
En la columna Actions de la entrada de ruta objetivo, haga clic en Advertise para publicar la ruta en la tabla de rutas de la VPC.
Una vez publicada la ruta, se agrega una nueva entrada a la tabla de rutas de la VPC: bloque CIDR de destino 172.16.0.0/16, con el VPN Gateway como siguiente salto. El tráfico desde las instancias ECS en la VPC hacia el bloque CIDR del IDC se transmite automáticamente a través del túnel VPN.
Verificación
Verificar la conectividad
-
Asegúrese de que las reglas del security group de ECS allows inbound ICMP traffic sean correctas; luego, inicie sesión en el dispositivo strongSwan y ejecute el siguiente comando para hacer ping a la ECS del lado de la nube:
ping 10.0.0.1Si recibe paquetes de respuesta, la VPC del lado de la nube y el IDC local pueden comunicarse entre sí.
-
Asegúrese de que su firewall local permita el tráfico ICMP entrante. Luego, inicie sesión en la instancia ECS ([[0]]) y haga ping al dispositivo strongSwan:
ping 172.16.0.1Si recibe paquetes de respuesta, la conectividad inversa también funciona correctamente.
Verificar la alta disponibilidad
-
Inicie un ping de larga duración desde la instancia ECS hacia el servidor local:
ping 172.16.0.1 -c 10000 Interrumpa el túnel activo: en la consola de Alibaba Cloud, cambie la clave precompartida del túnel activo para provocar una discrepancia.
Observe los resultados del ping: el tráfico se reanuda tras una breve interrupción, lo que indica que el tráfico ha cambiado automáticamente al túnel en espera.
Restaure el túnel activo: vuelva a establecer la clave precompartida con el valor correcto. El tráfico regresará al túnel activo una vez que este se recupere.
Solución de problemas
Problemas comunes y sus soluciones:
Síntoma | Posible causa | Solución |
La consola muestra Negotiation Failed | Problema de conectividad de red | Verifique que el dispositivo strongSwan pueda hacer ping a las direcciones IPsec de Alibaba Cloud. Confirme que el firewall del IDC local permite el puerto UDP 500 y el puerto 4500. |
Discrepancia en la clave precompartida | Verifique que las claves precompartidas en ambos extremos sean idénticas, incluyendo mayúsculas, minúsculas y caracteres especiales. | |
Discrepancia en parámetros IKE | Compruebe si la versión IKE, el algoritmo de cifrado, el algoritmo de autenticación y el grupo DH coinciden en ambos extremos. Los Traditional VPN Gateway no admiten múltiples conjuntos de algoritmos; los parámetros deben ser idénticos en ambos lados. | |
El túnel está establecido, pero el ping falla | Ruta no publicada | Compruebe si la ruta de destino del VPN Gateway se ha publicado en la tabla de rutas de la VPC. |
Restricción de security group | Verifique si el security group de ECS permite tráfico ICMP desde el bloque CIDR del IDC (172.16.0.0/16). | |
Restricción de firewall local | Verifique si el firewall del IDC local permite tráfico desde el bloque CIDR de la VPC (10.0.0.0/16). | |
Falta una ruta en el dispositivo strongSwan | Confirme que el reenvío de IP está habilitado en el dispositivo strongSwan y que otros servidores en el IDC tienen una ruta hacia el bloque CIDR de la VPC con el dispositivo strongSwan como siguiente salto. |