Réponse éditée
(Re)amélioration de la réponse améliorée d'à peu près tout le monde (@elmart, @user26312, moi-même). Les modifications ne devraient pas être nécessaires dans le script :
#!/bin/bash
default_line=$(netstat -rn |grep default)
gateway=$(echo $default_line | awk '{print $2}')
interface=$(echo $default_line | awk '{print $6}')
echo $gateway
echo $interface
scutil <<EOF
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
EOF
route delete default
route delete -ifscope $interface default
route add -ifscope $interface default $gateway
route add -net 0.0.0.0 -interface $interface
Rendez le fichier dans lequel vous mettez ceci, exécutable et exécuté (après connexion avec le VPN) avec sudo. Avant que le script ne fasse des changements, il regarde votre route par défaut actuelle et connaît donc votre passerelle et interface actuelles.
Ancienne réponse
Il ne s'agit pas d'une solution complète, mais vous devrez effectuer les deux opérations de haut niveau suivantes après chaque configuration de connexion VPN :
- Nous devrons définir l'interface du tunnel comme étant
ppp0
- Refaire les routes par défaut (parce que le point 1. définit implicitement la mauvaise passerelle par défaut, le tunnel partagé devrait toujours fonctionner correctement par la suite).
Créez un fichier avec le nom scutil-forti
par exemple
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
Refaire les routes de la passerelle, donc faire un autre fichier, routes-forti
avec (attention aux lignes contenant les paramètres spécifiques de votre réseau) :
sudo route delete default
sudo route delete -ifscope en0 default # This line depends on your interface
sudo route add -ifscope en0 default 192.168.2.252 # This depends on your normal local gateway.
sudo route add -net 0.0.0.0 -interface en0
maintenant, exécutez,
$ cat scutil-forti |sudo scutil ; bash routes-forti