Eu preciso de rota estática quando a interface está ativa e excluo essa rota quando ela está inativa, mas não tenho nenhum arquivo de configuração de interface para descrever o shell-command nela.
Eu tenho o túnel IPSec criado com o LibreSwan e a interface de túnel vti0, criada pelo daemon ipsec. Aqui está a configuração:
conn dc
authby=secret
auto=start
type=tunnel
esp={{ ipsec_ike_alg }}
ike={{ ipsec_ike_alg }}
ikelifetime={{ ipsec_ikelifetime }}
keylife={{ ipsec_key_lifetime }}
ikev2=insist
rekey=no
fragmentation=yes
narrowing=yes
left={{ ipsec_local_ip }}
leftsubnet={{ ipsec_local_net }}
right={{ ipsec_remote_ip }}
rightsubnet={{ ipsec_remote_net }}
mark=5/0xffffffff
vti-interface=vti0
vti-routing=no
leftvti={{ ipsec_vti_local_ip }}
Eu preciso rotear o tráfego para sub-redes por trás desse ipsec através do túnel vti0. Eu posso fazer isso manualmente e tudo vai funcionar como planejado:
ip route add {{ ipsec_static_route }} dev vti0 src {{ ipsec_source_ip }}
Mas eu quero que esta rota apareça automaticamente quando vti0 se levantar e desaparecer quando a interface estiver inativa. Eu tentei colocar meus scripts em /etc/network/if-up.d/ e /etc/network/if-down.d/, mas não funciona:
#!/bin/sh
if [ "$IFACE" = {{ ipsec_vti_interface }} ]; then
route add -net {{ ipsec_static_route }} dev {{ ipsec_vti_interface }}
fi
Talvez exista alguma forma nativa de criar rotas apenas para determinadas redes pelo LibreSwan? Ou cometi alguns erros nos meus scripts?