Estoy tratando de configurar una conexión VPN IPSec entre nuestra red corporativa y la Nube privada virtual de Amazon, utilizando su sistema VPN y un servidor Linux. Desafortunadamente, la única guía que he encontrado discute cómo configurar el túnel usando una máquina Linux host y hacer que esa máquina Linux acceda a instancias VPC, pero no hay discusión que pueda encontrar en línea sobre cómo hacer que la instancia acceda a la red corporativa (o el resto de Internet a través de esa red).
Información de red
Local subnet: 10.3.0.0/25
Remote subnet: 10.4.0.0/16
Tunnel 1:
Outside IP Addresses:
- Customer Gateway: : 199.167.xxx.xxx
- VPN Gateway : 205.251.233.121
Inside IP Addresses
- Customer Gateway : 169.254.249.2/30
- VPN Gateway : 169.254.249.1/30
Tunnel 2:
Outside IP Addresses:
- Customer Gateway: : 199.167.xxx.xxx
- VPN Gateway : 205.251.233.122
Inside IP Addresses
- Customer Gateway : 169.254.249.6/30
- VPN Gateway : 169.254.249.5/30
Aquí está mi /etc/ipsec-tools.conf:
flush;
spdflush;
spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
spdadd 169.254.249.1/30 169.254.249.2/30 any -P in ipsec
esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
spdadd 169.254.249.5/30 169.254.249.6/30 any -P in ipsec
esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
spdadd 10.4.0.0/16 169.254.249.2/30 any -P in ipsec
esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
spdadd 10.4.0.0/16 169.254.249.6/30 any -P in ipsec
esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
Aquí está mi /etc/racoon/racoon.conf:
remote 205.251.233.122 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
remote 205.251.233.121 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
BGP funciona bien, así que no voy a publicar esas configuraciones.
Esto es lo que funciona.
- Desde el cuadro de Linux, puedo hacer ping a los puntos finales locales (169.254.249.2/169.254.249.6) y sus equivalentes remotos (169.254.249.1/169.254.249.5).
- También puedo hacer ping a las instancias en VPC, SSH, etc.
- Desde las instancias remotas en VPC, también puedo hacer ping a los puntos finales locales y remotos
- No puedo hacer ping a los servidores locales en la subred 10.3.0.0/25
Supongo que me falta algo simple, pero he intentado agregar entradas a ipsec-tools.conf para reflejar el {punto final local} <-> {subred remota}, usando {subred local} <-> {punto final remoto}, Pero no parecía funcionar.
Cuando hago ping desde {instancia remota} a {servidor local}, se agota el tiempo de espera. Los paquetes son visibles en la interfaz eth0 (aunque la red local esté en eth1).
Google ha sido de poca ayuda; muestra solo a personas que intentan usar OpenSwan, o que tienen problemas similares pero con enrutadores de hardware, o que usan herramientas más antiguas.