インターフェイスの状態が変わったときのスクリプトの実行

インターフェイスの状態が変わったときのスクリプトの実行

インターフェイスが動作しているときは静的パスが必要で、インターフェイスが停止したときにそれらを削除する必要がありますが、その中のシェルコマンドを説明するインターフェイス設定ファイルはありません。

LibreSwanを使用して作成されたIPSecトンネルと、ipsecデーモンで生成されたトンネルインターフェイスvti0があります。構成は次のとおりです。

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 }}

vti0トンネルを介してこのIPsecの背後にあるサブネットにトラフィックをルーティングする必要があります。手動で行うと、すべてが計画どおりに機能します。

ip route add {{ ipsec_static_route }} dev vti0 src {{ ipsec_source_ip }}

ただし、vti0の起動時にこのパスが自動的に表示され、インターフェイスがシャットダウンすると自動的に消えることを望みます。私のスクリプトを/etc/network/if-up.d/と/etc/network/if-down.d/に入れようとしましたが、うまくいきませんでした。

#!/bin/sh

if [ "$IFACE" = {{ ipsec_vti_interface }} ]; then
    route add -net {{ ipsec_static_route }} dev {{ ipsec_vti_interface }}
fi

たぶんLibreSwanには、特定のネットワークに対してのみルートを生成する基本的な方法がありますか?それとも私がノートに間違いを犯したのでしょうか?

関連情報