Set routes on VPN startup using NetworkManager

From Levy

For my internet access being secure I like to be behind a VPN. However, if I connect to a VPN, my default route gets replaced with the VPN default route. As a result of this I cannot access my storage network any more. Setting the routes in the KDE Network Manager results in the VPN not connecting any more. So, I've created a small script that sets a route to my storage network after a VPN connection is established.

In order to make this work, create the script /etc/NetworkManager/dispatcher.d/30-vpn with the following content:

if [ "$2" = "vpn-up" ]; then  
       ip route add 192.168.1.0/24 via 172.16.0.10 metric 10
fi  
if [ "$2" = "vpn-down" ]; then  
       ip route del 192.168.1.0/24 via 172.16.0.10 metric 10
fi  
exit $?

This script is automatically executed by NetworkManager whenever a connection goes up or down. As we specify to only take action on either "vpn-up" or "vpn-down" it does exactly what needs to be doing: (un)set the route to the storage LAN when the state of the VPN connection changes.