CentOS网络接口Post-Up脚本未执行

Dav*_*rne 3 linux vpn networking interface

我正在运行CentOS 7.2,我正在努力获得一个简单的脚本来执行任何接口的ifup.

我的/ sbin/ifup-local看起来像这样:

[root@oracle2 ~]# cat /sbin/ifup-local
#!/bin/bash
 if [[ "$1" == "eth0" ]]
   then
     exec /vpnup
 fi
[root@oracle2 ~]#
Run Code Online (Sandbox Code Playgroud)

引用的脚本/ 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 ~]#
Run Code Online (Sandbox Code Playgroud)

相当简单,脚本在命令行调用时工作正常.它只是拨入我设置的L2TP VPN,以便让这个盒子访问其网络的另一部分的生产局域网.

但是,如果我执行"service network restart"或"systemctl restart network.service",则VPN接口不会出现,也不会添加ip路由.如果我手动执行ifdown eth0,然后ifup eth0,它也不会按预期运行脚本.

如果我执行"/ sbin/ifup-local eth0"脚本按预期运行,所以我知道我的脚本很好,我知道我的ifup-local是好的.

我错过了一些明显的东西吗 我之前从未使用过pre/post up脚本,但我总觉得它们非常简单......我错了吗?

mys*_*egg 5

确保您的ifcfg-eth0脚本包含

NM_CONTROLLED=no
Run Code Online (Sandbox Code Playgroud)

否则,调用systemctl restart networkifup eth0将不会执行ifup-pre-local,ifup-eth,ifup-post,ifup-local为等eth0.不过,他们仍然会被要求lo.