我正在运行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脚本,但我总觉得它们非常简单……我错了吗?
解决方法:
确保您的ifcfg-eth0脚本包含
NM_CONTROLLED=no
否则,调用systemctl restart network或ifup eth0将不会为eth0执行ifup-pre-local,ifup-eth,ifup-post,ifup-local等.不过,他们仍然会被召唤.