我正在运行CentOS 7.2,我正在努力获得一个简单的脚本来执行任何接口的ifup。
我的/ sbin / ifup-local看起来像这样:
[root@oracle2 ~]# cat /sbin/ifup-local
#!/bin/bash
if [[ "$1" == "eth0" ]]
then
exec /vpnup
fi
[root@oracle2 ~]#
引用的脚本/ vpnup如下所示:
[root@oracle2 ~]# cat /vpnup
#!/bin/bash
#
# CompanyX Production L2TP VPN - UP
#
#
echo -e "\n"
echo -e "PLEASE WAIT\n"
echo -e "Dialling Production L2TP VPN... \n"
echo -e ".........................................\n"
ipsec auto --up L2TP-PSK && echo "c qvprodvpn" > /var/run/xl2tpd/l2tp-control
echo -e ".........................................\n"
echo "Connected..."
echo "Adding local static route to manage VPN bound traffic..."
sleep 6s
ip route add 10.10.24.0/24 via 10.10.24.51
echo "Route added..."
echo -e "...\n"
[root@oracle2 ~]#
相当简单,在命令行调用时脚本运行正常。它只是拨入我设置的L2TP VPN,以便让这个盒子访问其网络另一部分的生产局域网。
但是,如果我执行“service network restart”或“systemctl restart network.service”,则VPN接口不会出现,也不会添加ip路由。如果我手动执行ifdown eth0,然后ifup eth0,它也不会按预期运行脚本。
如果我执行“/ sbin / ifup-local eth0”,脚本会按预期运行,所以我知道我的脚本很好,我知道我的ifup-local是好的。
我错过了一些明显的东西吗?我之前从未使用过pre / post up脚本,但我总觉得它们很简单......我错了吗?
答案 0 :(得分:5)
确保您的ifcfg-eth0
脚本包含
NM_CONTROLLED=no
否则,调用systemctl restart network
或ifup eth0
将无法执行ifup-pre-local
,ifup-eth
,ifup-post
,ifup-local
等{{1 }}。不过,他们仍然会被eth0
召唤。