O NetworkManager deve poder fazer isso por você. Na página do manual:
Information about networking is exported via a D-Bus interface to any interested application, providing a rich API with which to inspect and control network settings and operation.
NetworkManager will execute scripts in the /etc/NetworkManager/dispatcher.d directory in alphabetical order in response to network events.
...
Each script receives two arguments, the first being the interface name of the device just activated, and second an action.
Actions:
...
vpn-up: A VPN connection has been activated. The environment contains the connection UUID in the variable CONNECTION_UUID.
vpn-down: A VPN connection has been deactivated.
Portanto, parece que você tem duas rotas: conectar-se ao D-Bus para escutar eventos e agir com base neles ou descartar alguns scripts em /etc/NetworkManager/dispatcher.d/
. Este último parece o caminho de menor resistência.