Por: @jonasc Publicado em: 2021-06-10
Libreswan IPsec com IKEv2
Topologia
Dois Firewalls FWFLEX com IPsec instalado.
Versão do IPsec: Libreswan 4.3
Configuração
Configurar IPsec padrão entre os dois firewalls, negociando uma rede LAN. Conf exemplo abaixo:
conn teste01
authby=secret
auto=start
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
mark=12/0xffffff
vti-interface=teste01
vti-routing=yes
vti-shared=no
# Phase 1
keyexchange=ike
ikelifetime=28800s
ike=aes128-sha256;modp1024
# Phase 2
phase2alg=aes128-sha256;modp1024
pfs=yes
keylife=3600s
# Network - local
left=172.28.60.10
leftsubnet=10.152.0.0/24
leftsourceip=172.28.60.10
leftid=172.28.60.10
leftupdown="ipsec _updown ; itflex-reload-routes"
# Network - Remote
right=172.28.60.13
rightsubnet=10.157.0.0/24
rightsourceip=172.28.60.13
rightid=172.28.60.13
Testes das funcionalidades
Por padrão, o Libreswan já permite o IKEv2 se a outra ponta tiver suporte. Com estas configurações, dois nodes Libreswan já fecharam o IPsec no IKEv2.
000 #1: "teste01":500 STATE_V2_ESTABLISHED_IKE_SA (established IKE SA); EVENT_SA_REKEY in 23575s; newest ISAKMP; idle;
000 #3: "teste01":500 STATE_V2_ESTABLISHED_CHILD_SA (IPsec SA established); EVENT_SA_REKEY in 1254s; newest IPSEC; eroute owner; isakmp#1; idle;
O prefixo STATE_V2 indica ser IKEv2, além da nomenclatura CHILD SA ser associada também ao IKEv2.
O parâmetro que pode ser ajustado na configurações é o ikev2
. Os valores possíveis são no
ou never
, que força somente o IKEv1 e insist
, que força somente o IKEv2.
Alterando o conf para never
, o log de SA ficou assim:
000 #3: "teste01":500 STATE_MAIN_R3 (IKE SA established); EVENT_SA_REPLACE in 28525s; newest ISAKMP; lastdpd=-1s(seq in:0 out:0); idle;
000 #4: "teste01":500 STATE_QUICK_R2 (IPsec SA established); EVENT_SA_REPLACE in 3325s; newest IPSEC; eroute owner; isakmp#3; idle;
Informação importante: A versão 4 do IPsec se comporta assim, mas na versão 3, o comportamento era diferente. O manual do ipsec.conf
diz:
ikev2
Wether to use IKEv1 (RFC 4301) or IKEv2 (RFC 7296) as the Internet Key Exchange (IKE) protcol. Currently the accepted values are no (or never) signifying only IKEv1 is accepted, or insist(the
default), signifying only IKEv2 is accepted. Previous versions allowed the keywords propose, yes or permit that would allow either IKEv1 or IKEv2, but this is no longer supported and both options
now cause the connection to fail to load. WARNING: This behaviour differs from upstream libreswan, which only accepts yes or no where yes means the same as insist.
Ou seja, a versão anterior tinha os parâmetros propose
, yes
ou permit
, sendo possível habilitar ambos os métodos, o que dependia da outra ponta para espeficiar a forma de conexão.