Como rotear seletivamente o tráfego de rede através da VPN no Mac OS X Leopard?


96

Não quero enviar todo o tráfego da minha rede para a VPN quando estiver conectado à rede da minha empresa (via VPN) de casa. Por exemplo, quando estou trabalhando em casa, gostaria de fazer backup de todos os meus arquivos no Time Capsule em casa e ainda assim poder acessar a rede interna da empresa.

Estou usando o cliente VPN interno do Leopard. Tentei desmarcar "Enviar todo o tráfego pela conexão VPN". Se fizer isso, perderei o acesso aos sites internos da minha empresa, seja via curl ou pelo navegador da Web (embora os IPs internos ainda estejam acessíveis). Seria ideal se eu pudesse escolher seletivamente um conjunto de IPs ou domínios a serem roteados através da VPN e manter o restante em minha própria rede. Isso é possível com o cliente VPN interno do Leopard? Se você tiver alguma recomendação de software, gostaria de ouvi-las também.


2
A primeira solução funcionará apenas em uma VPN PPP. A seguinte solução funcionará em um VPN Cisco (e outros tipos de nada específico para Cisco) superuser.com/questions/91191/...
dr jimbob

Respostas:


84

Crie o arquivo / etc / ppp / ip-up com o seguinte conteúdo:

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 

substituindo <SUBNET>pela sub-rede, você deseja rotear pela VPN (por exemplo, 192.168.0.0/16)

execute como root:

chmod 0755 /etc/ppp/ip-up

Este arquivo será executado sempre que você se conectar à VPN.

Os parâmetros fornecidos ao script:

  • $1: A interface da VPN (por exemplo ppp0)
  • $2: Desconhecido, estava 0no meu caso
  • $3: IP do servidor VPN
  • $4: Endereço de gateway VPN
  • $5: Gateway regular (não vpn) para suas conexões LAN

1
A dica de Aleksei funcionou para mim. Só estou me perguntando se a primeira linha (#! / Bin / sh) está fazendo alguma coisa. Não está comentado. Estou perguntando isso desde que eu estou descrevendo isso para uso em nossa empresa e quanto mais simples melhor :-) Obrigado, Edgar
Edgar Wieringa

1
@ EdgarWieringa: converteu sua resposta em um comentário. Espero que seja melhor! :)
studiohack

6
@ Edgar - não. Essa primeira linha é especial. en.wikipedia.org/wiki/Shebang_(Unix)
James Moore

6
No 10.7 / Lion, tive mais sorte com: / sbin / route add 172.16.0.0/16 -interface $ 1 Os argumentos que vi recebendo o ip-up são: $ 1 = interface VPN, por exemplo, 'ppp0' $ 2 = '0' (não qual é esse valor) $ 3 = Seu IP da VPN $ 4 = Endereço IP do gateway público da VPN $ 5 = Gateway padrão normal para ethernet / wifi
Gabe Martin-Dempesy

4
O que acontece se eu tiver duas ou mais conexões VPN configuradas? Como faço para distinguir entre eles /etc/ppp/ip-uppara poder adicionar as rotas de acordo? O nome amigável da VPN será passado como o sexto argumento ( ipparam)?
Kal

11

Eu queria fazer uma coisa semelhante. Conecte a VPN e, em seguida, roteie uma rede adicional através dessa VPN. Acabei com o seguinte bit de Applescript:

-- Connect Work VPN

tell application "System Events"
    tell network preferences
        tell current location
            tell service "Work"
                connect
                tell current configuration
                    repeat until get connected = true
                        delay 1
                    end repeat
                end tell
            end tell
        end tell
    end tell
end tell

set gateway to "192.168.1.1"

do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges

Você precisa alterar "Work"o nome da sua conexão VPN, 192.168.1.1o endereço do gateway e 172.16.0.0/16o endereço da rede para a qual deseja rotear. Redes adicionais podem ser adicionadas repetindo a linha final com endereços diferentes.


1
(Além disso, para aqueles que se perguntam sobre esse endereço IP: exatamente como o questionador falou, 172.16.0.0/16 é um espaço de endereço privado, como 10.xxx e 192.168.xx. Na verdade, faz parte da VPN, e não algum site externo ou qualquer outro).
Arjan

1
Então, o 192.168.1.1seu roteador está na VPN ou o roteador na LAN? E você não precisa definir a rota padrão de volta para sua LAN?
Jack M.

8

Há um recurso oculto nas Preferências de rede no MacOS: você pode classificar interfaces .

Abra Preferências do Sistema -> Rede -> Clique no gearcanto inferior esquerdo ->Set service Order...

<code> Definir ordem de serviço ... </code> Pedido de VPN

É fundamental que você tenha suas interfaces de rede classificadas na ordem em que deseja que elas sejam usadas. Se você deseja que TODOS os dados que não sejam da LAN acessem a VPN, coloque a interface da VPN no topo. Classificar assim

  1. VPN
  2. Ethernet
  3. Aeroporto

Assim não:

  1. Aeroporto
  2. Ethernet
  3. VPN

Dessa forma, não é necessário verificar a seguinte configuração em Session Options:

Enviar todo o tráfego pela conexão VPN

✅ Testado na L2TP VPNconexão


Eu não acho que isso responde à pergunta, a menos que o OP é fazer o backup para o Time Machine via Ethernet e conexão com a visão de rede da empresa Airport (conexão sem fio)
Josh Newman

1
Usei o truque de inicialização ppp, mas não funcionou até que eu movesse minha conexão VPN abaixo da conexão sem fio. Esta é uma resposta válida.
Arosboro

Seria realmente a resposta principal! Muito obrigado, seria impossível descobrir!
Andre Soares

1
Isso funciona para VPNs L2TP IPSec, mas NÃO para VPNs Cisco IPSec. VPNs Cisco IPSec não estão disponíveis no "Definir Ordem de Serviço" de diálogo
goofology

1

Eu dei uma olhada on-line para ver se consigo encontrar alguma coisa e, até onde eu entendi, você parece querer usar o computador normalmente, além de se conectar a sites internos da empresa. precisa configurar uma tabela de roteamento personalizada.

Aparentemente, esse link se aplica apenas ao 10.4, mas o material da linha de comando ainda pode funcionar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.