Resposta Editada
(Re) melhorou apenas sobre a resposta melhorada de todos os outros (@elmart, @ user26312, eu mesmo). As edições não devem ser necessárias no 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
Faça o arquivo que você colocou, execute e execute (depois de conectar-se à VPN) com o sudo. Antes do script fazer qualquer alteração, ele verifica sua rota padrão atual e, portanto, conhece seu gateway e sua interface atuais.
Resposta antiga
Não é uma solução completa, você terá que fazer as seguintes duas coisas de alto nível após cada configuração de conexão VPN:
- Teremos que configurar a interface do túnel para
ppp0
- Refazer rotas padrão (porque 1. define implicitamente o gateway padrão incorreto, o túnel dividido ainda deve funcionar corretamente daqui em diante)
Crie um arquivo com o nome scutil-forti
, por exemplo
d.init
get State:/Network/Service/forticlientsslvpn/IPv4
d.add InterfaceName ppp0
set State:/Network/Service/forticlientsslvpn/IPv4
Refazer rotas de gateway, portanto, crie outro arquivo, routes-forti
, com (lembre-se das linhas com configurações específicas para sua rede):
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
agora, execute
$ cat scutil-forti |sudo scutil ; bash routes-forti