O seguinte funciona para mim. Execute-os após conectar-se à Cisco VPN. (Estou usando o cliente Cisco interno do OS X, não o cliente da marca Cisco.)
sudo route -nv add -net 10 -interface utun0
sudo route change default 192.168.0.1
Substitua 10
no primeiro comando pela rede que está do outro lado do túnel.
Substitua 192.168.0.1
pelo gateway da sua rede local.
Coloquei em um script bash, assim:
$ cat vpn.sh
#!/bin/bash
if [[ $EUID -ne 0 ]]; then
echo "Run this as root"
exit 1
fi
route -nv add -net 10 -interface utun0
route change default 192.168.0.1
Também encontrei uma explicação sobre como executar isso automaticamente quando você conecta a VPN, mas é tarde na sexta-feira e não tenho vontade de tentar :)
Editar:
Desde então, deixei o trabalho em que estava usando a Cisco VPN, portanto isso é de memória.
O 10
no primeiro comando é a rede que você deseja rotear pela VPN. 10
é mão curta para 10.0.0.0/8
. No caso de Tuan Anh Tran, parece que a rede é 192.168.5.0/24
.
Quanto a qual gateway especificar no segundo comando, ele deve ser seu gateway local. Quando você faz login em uma VPN que evita o túnel dividido, ela aplica essa política alterando suas tabelas de roteamento para que todos os pacotes sejam roteados na interface virtual. Então, você deseja alterar sua rota padrão para a que era antes de acessar a VPN .
A maneira mais fácil de descobrir o gateway é executar netstat -rn
antes de fazer login na VPN e olhar o endereço IP à direita do destino "padrão". Por exemplo, aqui está o que parece na minha caixa agora:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.1.1 UGSc 29 0 en1
10.0.1/24 link#5 UCS 3 0 en1
10.0.1.1 0:1e:52:xx:xx:xx UHLWIi 55 520896 en1 481
10.0.1.51 7c:c5:37:xx:xx:xx UHLWIi 0 1083 en1 350
10.0.1.52 127.0.0.1 UHS 0 0 lo0
Meu gateway é 10.0.1.1
- fica à direita do destino "padrão".
Usando as informações do mehaase, escrevi um script Python que realmente simplifica esse processo no Mac. Quando você o executa, o script salva suas informações de firewall, lança o cliente AnyConnect, aguarda o login e, em seguida, corrige as rotas e o firewall. Basta executar o script no 'terminal'.
fonte
O script Python nesta resposta anterior foi útil, no entanto, não tratou das rotas que o AnyConnect usou para controlar outras interfaces no dispositivo (como interfaces VMware). Também não foi capaz de lidar com várias redes VPN.
Aqui está o script que eu uso:
fonte
É muito provável que seu administrador deseje configurar conexões VPN para usar o roteamento local para as sub-redes 10.121. * E 10.122. * E deixe o controle remoto (sua máquina doméstica) rotear todo o restante das solicitações. (economiza largura de banda e responsabilidade)
Você está usando o "VPN Client" da Cisco? OS OS?
se você usar a VPN do OS X (configurada através do Painel de Preferências de Rede), poderá clicar em "avançado" e selecionar a guia "VPN sob demanda". depois forneça as sub-redes necessárias para a VPN usar.
fonte
Eu queria um 'aplicativo' nativo que eu possa executar no logon (e continuar executando / oculto) para ativar o roteamento do Split Tunnel, semelhante a uma função da Locamatic . Talvez eu bata na Locamatic em algum momento e brinque com ela. Também posso enviar este AppleScript para o Github. Eu não queria mexer com um daemon, como esta resposta sugere.
Este script assume que a VPN tem
VPN (Cisco IPSec)
nome padrão e a rota da VPN é10.10.10.1/22
>10.10.20.10
. Isso precisará ser alterado / rotas adicionais adicionadas. Execute o terminal>netstat -rn
quando a VPN estiver conectada (antes de ativar este script) para ver as rotas adicionadas à VPN.Esse script também gera notificações no estilo de rosnado no Notification Center :)
Encontrei alguns problemas com a resposta de Mark E. Haase , pois minha VPN da Cisco modifica o gateway existente de uma rota para (en0 específica da interface) e adiciona o gateway da VPN como uma rota, exigindo a exclusão de dois gateways padrão e a adição de volta. o gateway padrão original
UCSc
UGScI
UCS
UGSc
Graças a Deus pelo StackExchange / google, este é o meu primeiro AppleScript e eu não seria capaz de montá-lo sem algumas horas de pesquisa no Google.
Sugestões / correções / otimizações são bem-vindas!
AppleScript ( GitHubGist ):
salvar como um aplicativo:
clique com o botão direito do mouse em> mostrar o conteúdo do pacote, adicione o seguinte a info.plist (isso oculta o ícone do aplicativo da dock, exigindo o uso do Activity Monitor ou do terminal>
pkill -f 'Split Tunnel'
para sair do aplicativo, omita se você QUER um ícone de dock:crie um novo
routeNOPASSWD
arquivo de uma linha (sem extensão) usando o código a seguir EXATAMENTE (isso pode impedir o acesso ao sudo se for feito incorretamente, procurevisudo
mais informações no google - isso permite que os comandos sudo no AppleScript sejam executados SEM um prompt de senha, omita se você QUER um prompt de senha quando a tabela de roteamento precisar ser alterada):copie este arquivo para
/etc/sudoers.d
execute os seguintes comandos no terminal (o segundo comando solicitará a senha - isso permite que os
sudo route
comandos no AppleScript sejam executados SEM solicitar a senha, omita se um prompt de senha for desejado quando o script estiver alterando a tabela de roteamento)finalmente, adicione o aplicativo a Prefs do sistema> Usuários e grupos> itens de login
fonte
Você deve solicitar ao administrador do roteador ao qual está se conectando para configurar um "grupo" separado que faz o tunelamento dividido e fornece um arquivo PCF que contém o nome e a senha do grupo.
fonte
Eu tive o mesmo problema e consegui isso graças a @mehaase
Depois de criar o
~/vpn.sh
como respondido por @mehaase, você pode colocar isso em um script de automação de aplicativo executável, seguindo estas etapas:do shell script "sudo ~/vpn.sh" with administrator privileges
Você também pode precisar executar
chmod 700 ~/vpn.sh
no Terminal para conceder privilégios de execução ao script.Após conectar-se à VPN, você pode simplesmente executar este script de aplicativo. Digite sua senha de administrador e clique em OK - Concluído. :)
fonte