Desculpe responder minha própria pergunta - mudei do ipsec-tools para o Openswan e a VPN agora está completamente estável. Parece que o ipsec-tools é um projeto inativo enquanto o Openswan é mantido e agora é a solução VPN padrão no RHEL.
Estamos executando o racoon no Linux, conectando-nos a um firewall do Checkpoint. A conexão é boa, mas vemos uma interrupção no tráfego a cada 24 horas, correspondendo à regenogiação da Fase 1.
Nossa configuração é a seguinte:
Lado local
racoon do ipsec-tools 0.8.0 instalado a partir do RPM no Amazon Linux.
IP local: 10.130.0.253
Sub-rede local: 10.130.0.252/30
Isso está sendo executado em um AWS VPC, ou seja, em uma sub-rede privada. Portanto, temos o NAT traversal ativado. Estamos vinculando a VPN a uma subinterface e usando o iptables para traduzir a conexão vpn ao endereço primário e ao tráfego NAT destinado à LAN remota para a subinterface. Isso permite que o host atue como um gateway de VPN para outros hosts, o que funciona bem. Regras do Iptables:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 10.130.0.253 2.2.2.2 to:10.100.200.112
SNAT all -- 0.0.0.0/0 10.128.80.0/24 to:10.130.0.253
Lado remoto:
VPN Gateway IP: 2.2.2.2 (anonimizado)
Sub-rede remota: 10.128.80.0/24
Nossa configuração local é a seguinte:
/etc/racoon/racoon.conf:
# Racoon IKE daemon configuration file.
# See 'man racoon.conf' for a description of the format and entries.
log debug2;
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
path script "/etc/racoon/scripts";
# Listen on sub-interface - initial connection to establish tunnel is translated to primary IP by iptables
listen {
isakmp 10.130.0.253 [500];
isakmp_natt 10.130.0.253 [4500];
}
timer {
natt_keepalive 1 minute ;
}
# CP VPN-1
remote 2.2.2.2
{
exchange_mode main;
lifetime time 24 hour;
nat_traversal on;
dpd_delay 20;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
}
# net-to-net
sainfo address 10.130.0.252/30 any address 10.128.80.0/24 any
{
pfs_group 2;
lifetime time 1 hour;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}
# gateway to gateway
sainfo address 10.130.0.253/32 any address 2.2.2.2/32 any
{
lifetime time 1 hour;
encryption_algorithm 3des;
authentication_algorithm hmac_sha1 ;
compression_algorithm deflate ;
}
/etc/racoon/setkey.sh
#!/sbin/setkey -f
# First of all flush the SPD database
flush;
spdflush;
# Gateway to Gateway
spdadd 10.130.0.253 2.2.2.2 any -P out ipsec esp/tunnel/10.130.0.253-2.2.2.2/unique;
spdadd 2.2.2.2 10.130.0.253 any -P in ipsec esp/tunnel/2.2.2.2-10.130.0.253/unique;
# Linux-racoon -> CP VPN-1
spdadd 10.130.0.252/30 10.128.80.0/24 any -P out ipsec esp/tunnel/10.130.0.253-2.2.2.2/unique;
# CP VPN-1 > Linux-racoon
spdadd 10.128.80.0/24 10.130.0.252/30 any -P in ipsec esp/tunnel/2.2.2.2-10.130.0.253/unique;
Recebemos recentemente alguns alertas sobre o monitoramento da VPN, por isso, configurei um script de monitoramento mais detalhado, que se conecta ao servidor remoto a cada minuto. Parece que temos um tempo de inatividade significativo a cada 24 horas. Meu script mostra quando a conexão cai e quando volta:
Fri Jan 18 20:24:33 UTC 2013 Connection went down
Fri Jan 18 20:48:36 UTC 2013 Connection came up
Sat Jan 19 20:48:36 UTC 2013 Connection went down
Sat Jan 19 21:00:40 UTC 2013 Connection came up
Sun Jan 20 21:00:38 UTC 2013 Connection went down
Sun Jan 20 21:12:43 UTC 2013 Connection came up
Como você pode ver, a conexão cai exatamente 24 horas depois da última vez.
Essas interrupções parecem corresponder às renegociações da Fase 1 no log da VPN, o que faz sentido, já que a duração da Fase 1 é de 24 horas:
sexta-feira:
Jan 18 20:24:32 ip-10-100-200-112 racoon: INFO: ISAKMP-SA expired 10.130.0.253[500]-2.2.2.2[500] spi:13b2510d0bc467f9:ff649237b81a65b7
Jan 18 20:24:32 ip-10-100-200-112 racoon: INFO: ISAKMP-SA deleted 10.130.0.253[500]-2.2.2.2[500] spi:13b2510d0bc467f9:ff649237b81a65b7
Jan 18 20:36:34 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=213727991(0xcbd3af7)
Jan 18 20:36:34 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=3400029604(0xcaa855a4)
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=213727991(0xcbd3af7)
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=3400029604(0xcaa855a4)
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: IPsec-SA request for 2.2.2.2 queued due to no phase1 found.
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: initiate new phase 1 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: begin Identity Protection mode.
Jan 18 20:48:34 ip-10-100-200-112 racoon: INFO: ISAKMP-SA established 10.130.0.253[500]-2.2.2.2[500] spi:c4978718cd291fde:01245a461d26cc34
Jan 18 20:48:35 ip-10-100-200-112 racoon: INFO: initiate new phase 2 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 18 20:48:35 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=264213233(0xfbf92f1)
Jan 18 20:48:35 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=919162535(0x36c94ea7)
Sábado:
Jan 19 20:48:34 ip-10-100-200-112 racoon: INFO: ISAKMP-SA expired 10.130.0.253[500]-2.2.2.2[500] spi:c4978718cd291fde:01245a461d26cc34
Jan 19 20:48:34 ip-10-100-200-112 racoon: INFO: ISAKMP-SA deleted 10.130.0.253[500]-2.2.2.2[500] spi:c4978718cd291fde:01245a461d26cc34
Jan 19 20:48:36 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=229822093(0xdb2ce8d)
Jan 19 20:48:36 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=2536548534(0x9730a8b6)
Jan 19 21:00:36 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=229822093(0xdb2ce8d)
Jan 19 21:00:36 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=2536548534(0x9730a8b6)
Jan 19 21:00:37 ip-10-100-200-112 racoon: INFO: IPsec-SA request for 2.2.2.2 queued due to no phase1 found.
Jan 19 21:00:37 ip-10-100-200-112 racoon: INFO: initiate new phase 1 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 19 21:00:37 ip-10-100-200-112 racoon: INFO: begin Identity Protection mode.
Jan 19 21:00:38 ip-10-100-200-112 racoon: INFO: ISAKMP-SA established 10.130.0.253[500]-2.2.2.2[500] spi:8b7e98a2cc9d55cb:0b4e8a4cbca2ada9
Jan 19 21:00:38 ip-10-100-200-112 racoon: INFO: initiate new phase 2 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 19 21:00:39 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=111999639(0x6acfa97)
Jan 19 21:00:39 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=577442054(0x226b1106)
Domingo:
Jan 20 21:00:38 ip-10-100-200-112 racoon: INFO: ISAKMP-SA expired 10.130.0.253[500]-2.2.2.2[500] spi:8b7e98a2cc9d55cb:0b4e8a4cbca2ada9
Jan 20 21:00:38 ip-10-100-200-112 racoon: INFO: ISAKMP-SA deleted 10.130.0.253[500]-2.2.2.2[500] spi:8b7e98a2cc9d55cb:0b4e8a4cbca2ada9
Jan 20 21:00:39 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=131435403(0x7d58b8b)
Jan 20 21:00:39 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=272995718(0x10459586)
Jan 20 21:12:39 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 2.2.2.2[500]->10.130.0.253[500] spi=131435403(0x7d58b8b)
Jan 20 21:12:39 ip-10-100-200-112 racoon: INFO: IPsec-SA expired: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=272995718(0x10459586)
Jan 20 21:12:40 ip-10-100-200-112 racoon: INFO: IPsec-SA request for 2.2.2.2 queued due to no phase1 found.
Jan 20 21:12:40 ip-10-100-200-112 racoon: INFO: initiate new phase 1 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 20 21:12:40 ip-10-100-200-112 racoon: INFO: begin Identity Protection mode.
Jan 20 21:12:40 ip-10-100-200-112 racoon: INFO: ISAKMP-SA established 10.130.0.253[500]-2.2.2.2[500] spi:e6d2b9ccb25f4992:31807020144b9a1e
Jan 20 21:12:41 ip-10-100-200-112 racoon: INFO: initiate new phase 2 negotiation: 10.130.0.253[500]<=>2.2.2.2[500]
Jan 20 21:12:41 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=179370287(0xab0f92f)
Jan 20 21:12:41 ip-10-100-200-112 racoon: INFO: IPsec-SA established: ESP/Tunnel 10.130.0.253[500]->2.2.2.2[500] spi=1696204357(0x651a0645)
Portanto, parece que a renegociação da fase 1 leva pelo menos 12 minutos. Alguém sabe por que isso pode acontecer e o que podemos fazer para consertá-lo para que possamos ter tráfego ininterrupto pela VPN?
Desculpe responder minha própria pergunta - mudei do ipsec-tools para o Openswan e a VPN agora está completamente estável. Parece que o ipsec-tools é um projeto inativo enquanto o Openswan é mantido e agora é a solução VPN padrão no RHEL.
Se você ativar a detecção de pontos mortos, o Racoon deve detectar a expiração da fase 1 e renegociar automaticamente, desde que eu tenha diagnosticado o problema corretamente.
Por padrão, o dpd está desativado;
dpd_delay 0; is the default.
Definir um número razoável, em segundos, entre as verificações do dpd, irá habilitá-lo;
dpd_delay 30;
Agora, tente isso com raiva da minha ipsec vpn, que estava fazendo a mesma coisa.