O problema foi que o ipsec inseriu as regras em uma tabela de roteamento diferente (tabela 220
) e criou uma política para direcionar o tráfego para lá:
root@turris:/etc/config# ip rule list
0: from all lookup local
220: from all lookup 220
32766: from all lookup main
32767: from all lookup default
Mas a tabela 220
continha apenas a rota padrão no túnel ipsec e não na rede local:
root@turris:/etc/config# ip -6 r show table 220
default dev ipsec0 proto static src 2a01:490:19:42::1 metric 1024
Que inevitavelmente fez com que todos os pacotes fossem encaminhados para o túnel.
A rede do próprio roteador funcionou apenas porque eles foram aceitos e não foram roteados.
Corrigi isso instruindo o strongswan a inserir regras de roteamento na tabela principal, definindo charon.routing_table = 254
(o id de main, como visto em /etc/iproute2/rt_tables
). Meu strongswan.conf
agora é assim:
charon {
# load_modular = yes
plugins {
include strongswan.d/charon/*.conf
}
routing_table = 254 # main
}