Execute o script quando a interface mudar seu status

1

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?

    
por sergkondr 03.11.2018 / 08:39

0 respostas