当接口启动时我需要静态路由,并在接口关闭时删除该路由,但我没有接口配置文件来描述其中的 shell 命令。
我有使用 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 有一些本地方法可以仅为某些网络创建路由?或者我的笔记中犯了一些错误?