Basicamente, estou tentando conectar um pfSense a um EdgeRouter via site2site IPsec.
(redes ip públicas ofuscadas por '1.2')
[pfsense] <-> [edgerouter]
public: 1.2.156.229/30 <-> 1.2.112.249/30
tunnel: 10.5.44.100/24 <-> 10.20.30.100/24
Configurações de IPsec em ambos os sites:
fase 1: IKEv2 PSK AES128 SHA1 DH2
fase2: ESP AES128 SHA1
O EdgeRouter tem acesso à Internet via OLSR com roteamento em malha, de modo que seu gateway geralmente não é local e também está sujeito a alterações se a rede de malha mudar. Isto é feito desta maneira pelo OLSR, então não é errado nesta configuração que o gateway não esteja na mesma sub-rede.
O túnel / conexão está em alta, mas não há tráfego passando por ele, então depois de aumentar strongswan kernel loglevel e cavando em charon.log em ambos os sites, eu encontrei um problema com a criação de rotas no EdgeRouter:
charon.log no edgerouter:
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> getting a local address in traffic selector 10.20.30.0/24
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> using host 10.20.30.100
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> sending RTM_GETROUTE 207: => 52 bytes @ 0x711f80a8
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 0: 34 00 00 00 1A 00 01 00 CF 00 00 00 6A 6B 00 00 4...........jk..
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 16: 02 00 00 00 00 00 00 00 00 00 00 00 08 00 10 00 ................
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 32: FF FF FF FF 08 00 07 00 4E 29 70 F9 08 00 01 00 ........N)p.....
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 48: C1 EE 9C E5 ....
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> received RTM_NEWROUTE 207: => 112 bytes @ 0x604f58
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 0: 70 00 00 00 18 00 00 00 CF 00 00 00 6A 6B 00 00 p...........jk..
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 16: 02 20 00 00 FE 00 00 01 00 02 00 00 08 00 0F 00 . ..............
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 32: FE 00 00 00 08 00 01 00 C1 EE 9C E5 08 00 04 00 ................
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 48: 0A 00 00 00 08 00 07 00 4E 29 70 F9 08 00 05 00 ........N)p.....
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 64: 4E 29 76 75 08 00 10 00 FF FF FF FF 24 00 0C 00 N)vu........$...
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 80: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 96: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> using 1.2.118.117 as nexthop to reach 1.2.156.229/32
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 1.2.112.249 is on interface br0
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> installing route: 10.5.44.0/24 via 1.2.118.117 src 10.20.30.100 dev br0
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> getting iface index for br0
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> sending RTM_NEWROUTE 208: => 60 bytes @ 0x711f8090
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 0: 3C 00 00 00 18 00 05 06 D0 00 00 00 6A 6B 00 00 <...........jk..
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 16: 02 18 00 00 DC 04 00 01 00 00 00 00 08 00 01 00 ................
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 32: 0A 05 2C 00 08 00 07 00 0A 14 1E 64 08 00 05 00 ..,........d....
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 48: 4E 29 76 75 08 00 04 00 0A 00 00 00 N)vu........
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> received (2) 208: => 80 bytes @ 0x604fe8
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 0: 50 00 00 00 02 00 00 00 D0 00 00 00 6A 6B 00 00 P...........jk..
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 16: FD FF FF FF 3C 00 00 00 18 00 05 06 D0 00 00 00 ....<...........
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 32: 6A 6B 00 00 02 18 00 00 DC 04 00 01 00 00 00 00 jk..............
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 48: 08 00 01 00 0A 05 2C 00 08 00 07 00 0A 14 1E 64 ......,........d
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> 64: 08 00 05 00 4E 29 76 75 08 00 04 00 0A 00 00 00 ....N)vu........
Mar 4 23:27:27 12[KNL] <peer-1.2.156.229-tunnel-1|1> unable to install source route for 10.20.30.100
Mar 4 23:27:27 12[IKE] <peer-1.2.156.229-tunnel-1|1> CHILD_SA peer-1.2.156.229-tunnel-1{2} established with SPIs c042bc69_i c46929b0_o and TS 10.20.30.0/24 === 10.5.44.0/24
Mar 4 23:27:40 11[KNL] creating roam job due to route change
Mar 4 23:27:40 11[KNL] <peer-1.2.156.229-tunnel-1|1> sending RTM_GETROUTE 209: => 52 bytes @ 0x719f8888
Eu tentei reproduzir o erro para entender o que está errado.
# # reproduce error:
# ip route add 10.5.44.0/24 via 1.2.118.117 src 10.20.30.100 dev br1
RTNETLINK answers: No such process
# # check default route and local ip address:
# ip route show | grep 0.0.0.0
0.0.0.0/1 via 1.2.118.117 dev br0 metric 2 onlink
# ip -f inet address show br0
10: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
inet 1.2.112.249/30 brd 1.2.112.251 scope global br0
# ip -f inet address show br1
11: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1462 qdisc noqueue state UP group default
inet 10.20.30.100/24 brd 10.20.30.255 scope global br1
# # try to narrow down the problem
# ip route add 10.5.44.0/24 via 1.2.118.117 src 10.20.30.100 dev br1
RTNETLINK answers: No such process
# ip route add 10.5.44.0/24 src 10.20.30.100 dev br1
# ip route change 10.5.44.0/24 via 1.2.118.117 src 10.20.30.100 dev br1
RTNETLINK answers: No such process
Agora eu não entendo o que o rtnetlink está faltando ou o que há de errado com o gateway?
Procurando pelos erros strongswan ou rtnetlink, não dá nada de especial como resposta, apenas explicações gerais que eu já entendi.
Meu próximo palpite seria, eu perdi alguma coisa enquanto estava montando este túnel?
O EdgeRouter possui uma interface bridge (br0) com ip público para acesso à internet e uma segunda interface bridge (br1) com ip local para rede mgmt.
Também verifiquei este artigo descrevendo IPsec em EdgeRouter e minha configuração é quase o mesmo, além de que eu estou usando interfaces de ponte e IKEv2 (em vez descrito IKEv1).
Indo mais fundo, acabei de chegar a O que pode causar 'respostas RTNETLINK: Nenhum tal processo' ao adicionar uma rota e agora eu estou sem idéias o que poderia estar errado.