인터페이스 상태가 변경되면 스크립트 실행

인터페이스 상태가 변경되면 스크립트 실행

인터페이스가 작동 중일 때 정적 경로가 필요하고 인터페이스가 작동 중지될 때 이를 제거해야 하지만, 그 안의 셸 명령을 설명하는 인터페이스 구성 파일이 없습니다.

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에는 특정 네트워크에 대해서만 경로를 생성하는 기본 방법이 있을까요? 아니면 제가 노트에 실수를 한 걸까요?

관련 정보