Estou tentando configurar uma conexão VPN IPSec entre nossa rede corporativa e a nuvem privada virtual da Amazon, usando o sistema VPN e um servidor Linux. Infelizmente, o único guia que encontrei discute como configurar o túnel usando uma máquina Linux host e fazer com que essa máquina Linux acesse instâncias de VPC, mas não há nenhuma discussão que eu possa encontrar on-line sobre como fazer com que a instância acesse a rede corporativa (ou o resto da internet através dessa rede).
Informações de rede
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
Aqui está o meu /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;
Aqui está o meu /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;
}
O BGP está funcionando bem, então não vou postar essas configurações.
Aqui está o que funciona
- Na caixa Linux, posso executar ping nos pontos de extremidade locais (169.254.249.2/169.254.249.6) e seus equivalentes remotos (169.254.249.1/169.254.249.5).
- Também posso executar ping nas instâncias em VPC, SSH para elas etc.
- Nas instâncias remotas na VPC, também posso executar ping nos terminais locais e remotos
- Não consigo executar ping nos servidores locais na sub-rede 10.3.0.0/25
Suponho que estou perdendo algo simples, mas tentei adicionar entradas ao ipsec-tools.conf para espelhar o {local endpoint} <-> {remote subnet}, usando {local subnet} <-> {remote endpoint}, mas não parecia funcionar.
Quando eu sigo de {instância remota} para {servidor local}, o tempo limite é excedido. Os pacotes são visíveis na interface eth0 (mesmo que a rede local esteja em eth1).
O Google tem sido de pouca ajuda; mostra apenas pessoas tentando usar o OpenSwan, ou tendo problemas semelhantes, mas com roteadores de hardware ou usando ferramentas mais antigas.