Por: @jonasc Publicado em: 2021-06-29
Libreswan IPsec - Exemplos de Topologias
Topologia
Dois Firewalls FWFLEX com IPsec instalado.
Versão do IPsec: Libreswan 4.3
Configuração
IKEv1 Peer estático - Ativo x Ativo
conn teste01
authby=secret
auto=start
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
ikev2=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.13
leftsubnet=10.157.0.0/24
leftsourceip=172.28.60.13
leftid=172.28.60.13
leftupdown="ipsec _updown ; itflex-reload-routes"
# Network - Remote
right=172.28.60.10
rightsubnet=10.152.0.0/24
rightsourceip=172.28.60.10
rightid=172.28.60.10
Secrects:
172.28.60.13 172.28.60.10: PSK "semprelinux"
IKEv2 Peer estático - Ativo x Ativo
conn teste01
authby=secret
auto=start
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
ikev2=insist
# 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.13
leftsubnet=10.157.0.0/24
leftsourceip=172.28.60.13
leftid=172.28.60.13
leftupdown="ipsec _updown ; itflex-reload-routes"
# Network - Remote
right=172.28.60.10
rightsubnet=10.152.0.0/24
rightsourceip=172.28.60.10
rightid=172.28.60.10
Secrects:
172.28.60.13 172.28.60.10: PSK "semprelinux"
Autenticação por ID
Servidor VPN em modo escuta:
conn teste01
authby=secret
auto=add
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
ikev2=insist
# Phase 1
keyexchange=ike
ikelifetime=28800s
ike=aes128-sha256;modp1024
# Phase 2
phase2alg=aes128-sha256;modp1024
pfs=yes
keylife=3600s
# Network - local
left=jonasc-ipsec01.itflex.local
leftsubnet=10.157.0.0/24
leftsourceip=10.157.0.254
leftid=10.157.0.254
leftupdown="ipsec _updown ; itflex-reload-routes"
# Network - Remote
right=%any
rightsubnet=10.152.0.0/24
rightsourceip=10.152.0.254
rightid=10.152.0.254
OBS: Right passado como %any pois o IP do cliente pode ser dinâmico.
Secrects:
10.157.0.254 10.152.0.254: PSK "semprelinux"
Cliente VPN em modo ativo:
conn teste01
authby=secret
auto=start
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
# Phase 1
keyexchange=ike
ikelifetime=28800s
ike=aes128-sha256;modp1024
# Phase 2
phase2alg=aes128-sha256;modp1024
pfs=yes
keylife=3600s
# Network - local
left=%defaultroute
leftsubnet=10.152.0.0/24
leftsourceip=10.152.0.254
leftid=10.152.0.254
leftupdown="ipsec _updown ; itflex-reload-routes"
# Network - Remote
right=jonasc-ipsec01.itflex.local
rightsubnet=10.157.0.0/24
rightsourceip=10.157.0.254
rightid=10.157.0.254
OBS: Right com nome DNS que deve resolver para o servidor. Left com variável do gateway, caso seja uma conexão em DHCP, que pode mudar de IP (ex. PPPoE).
Secrects:
10.152.0.254 10.157.0.254: PSK "semprelinux"
IPsec Route-based
Topologia em que é usado uma interface VTI dedicada (vti-shared=no) e sem criar rotas (vti-routing=no).
OBS: Também foi necessário modificar o leftupdown
padrão, pois este cria as rotas para as redes negociadas, mesmo quando vti-routing=no.
ATENÇÃO: Se negociar 0.0.0.0/0 com vti-routing=yes
ou manter o leftupdown
padrão (–route yes), O Firewall irá criar uma rota default por dentro do IPsec e o ACESSO SERÁ PERDIDO e só retomado com stop do túnel.
Com os parâmetro corretos acima, o IPsec negocia 0.0.0.0/0
sem rotas.
conn teste01
authby=secret
auto=start
keyingtries=%forever
type=tunnel
compress=no
aggrmode=no
cisco_unity=no
ikev2=insist
mark=12/0xffffff
vti-interface=teste01
vti-routing=no
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.13
leftsubnet=0.0.0.0/0
leftsourceip=172.28.60.13
leftid=172.28.60.13
leftupdown="%disabled"
# Network - Remote
right=172.28.60.10
rightsubnet=0.0.0.0/0
rightsourceip=172.28.60.10
rightid=172.28.60.10
E o roteamento é feito através da VTI:
[root@jonasc-ipsec01 ~]# ip route add 10.152.0.0/24 dev teste01
[root@jonasc-ipsec02 ~]# ip route add 10.157.0.0/24 dev teste01
OBS: A rota é criada sem nexthop, pois a interface é criada com peer:
[root@jonasc-ipsec01 ~]# ip addr show teste01
5: teste01@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
link/ipip 172.28.60.13 peer 172.28.60.10
Testes das funcionalidades
Teste comum de ping entre as redes negociadas:
ping -I 10.152.0.254 10.157.0.254
E tcpdump quando usado interface VTI:
tcpdump -nni teste01