gateway PPTP Windows
por
em 25-01-2015 às 22:16 (3389 Visualizações)
Pessoal, espero que esta dica seja útil para alguém por isso resolvi publicá-la, eu estava com problema na PPTP Vpn do windows em um cliente, quando ele fechava a VPN todo o tráfego dele passava pela conexão, vi que desativando a opção "utilizar gateway padrão em rede remota" todo o tráfego não era mais passado pela VPN porém tinha que adicionar rotas manualmente, coloquei rota estática porém tive alguns problemas e não funcionou a contento.
Com a ajuda do google desenvolvi um script que é uma mescla de VBScript com batch, o que ele faz:
Chama a conexão VPN criada;
Conecta a Vpn;
Identifica o IP da vpn ;
adiciona a rota desejada para saída da vpn;
Com a conexão vpn criada, seguem os passos a serem feitos:
No Script existem 3 variáveis que devem ser preenchidas:
NomeConexaoVPN nome da conexão criada
ipDestino ip ou a rede de destino que quer que saia pela vpn
mascaraDestino mascara de rede do ip de destino
Pode ser com o notepad, salve um arquivo com o nome conexaoVPN.vbs em qualquer lugar do seu equipamento e coloque o conteúdo abaixo e depois é só executá-lo. Este Script não funciona em WinXP no Win7 está funcionando perfeitamente. Para WINXP no final do post coloco o outro script.
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
arquivorota="rota.bat" 'colocando o nome do arquivo que será o bat responsável por identificar o ip da vpn e adicionar a rota
NomeConexaoVPN="Continuity" ' nome da conexão já criada
ipDestino="192.168.150.80" 'ip ou a rede de destino
mascaraDestino="255.255.255.255"
'CRIANDO BAT PARA DESCOBRIR O IP DA CONEXÃO VPN E APLICAR A ROTA DE SAÍDA POR ELE
Set objFile = objFSO.CreateTextFile(arquivorota,True) 'criando o arquivo
'escrevendo no arquivo
objFile.Writeline "@echo off"
objFile.Writeline "@echo Nome da conexao VPN:" & NomeConexaoVPN
objFile.Writeline "netsh interface ip show config name=" & Chr(34)& NomeConexaoVPN & Chr(34)& " | findstr " & Chr(34)& "IP" & Chr(34) & " > ip.dat" 'enviando a configuração de ip da conexão para o arquivo dat
objFile.Writeline "set /p ip= < ip.dat" 'pegando a linha que foi escrita do comando nesh
objFile.Writeline "del ip.dat" 'apagando o dat criado, a informação já foi pega na linha acima
objFile.Writeline "set ip=%ip:~-15%" 'pegando os 15 ultimos caracteres que é o numero do ip
objFile.Writeline "set ip=%ip: =%" 'retirando os espaços em branco da várial se houver
objFile.Writeline "@echo IP da VPN: %ip%" 'imprimindo o ip capturado
objFile.Writeline "set destino=" & ipDestino 'colocando o ip de destino ou a rede para ser incluído a rota
objFile.Writeline "@echo adicionando a rota para %destino%"
objFile.Writeline "route add %destino% mask " & mascaraDestino & " %ip%" 'adicionando a rota
objFile.Writeline "timeout /T 5 > nul" 'timer este pode ser diminuido seu valor
'objFile.Writeline "pause" 'timer
objFile.Close 'fechando o aqrquivo
WshShell.Run "Rasphone.exe -d " & NomeConexaoVPN 'chamando a conexão
WshShell.AppActivate "Rasphone.exe -d " & NomeConexaoVPN'definindo a tela de conexão como ativa
WScript.Sleep 1000 'timer para que seja aberta a janela
WshShell.SendKeys "%C" 'enviando a tecla de atalho ALT + C, esta invoca o botão conectar da janela de conexão
WScript.Sleep 5000 'timer para aguardar conectar, se a conexão for mais demorada este timer pode ser aumentado
WshShell.Run "cmd.exe /c " & arquivorota ' executando o bat gerado para incluir as rotas
WScript.Sleep 5000 'aguardando finalizar a execução do bat
objFSO.DeleteFile(arquivorota) 'excluindo o arquivo bat
Set WSHShell = Nothing
'FIM DO SCRIPT
AQUI vai o script para WINXP
Dim WMI, Configs, Config, Adapters, Adapter, ipVPN
Set WshShell = WScript.CreateObject("WScript.Shell")
ipVPN=""
NomeConexaoVPN="Continuity" ' nome da conexão já criada
ipDestino="192.168.150.80" 'ip ou a rede de destino
mascaraDestino="255.255.255.255"
WshShell.Run "Rasphone.exe -d " & NomeConexaoVPN 'chamando a conexão
WshShell.AppActivate "Rasphone.exe -d " & NomeConexaoVPN 'definindo a tela de conexão como ativa
WScript.Sleep 1000 'timer para que seja aberta a janela
WshShell.SendKeys "%C" 'enviando a tecla de atalho ALT + C, esta invoca o botão conectar da janela de conexão
WScript.Sleep 5000 'timer para aguardar conectar, se a conexão for mais demorada este timer pode ser aumentado
'*****LOCALIZANDO O IP DA CONEXÃO****************
Set WMI = GetObject("winmgmts:{impersonationlevel=impersonate}" _
& "root/cimv2")
Set Configs = WMI.ExecQuery("Select * " _
& "From Win32_NetworkAdapterConfiguration Where IPEnabled=True")
For Each Config In Configs
Set Adapters = _
WMI.AssociatorsOf("Win32_NetworkAdapterConfiguration.Index=" _
& Config.Index, "Win32_NetworkAdapterSetting")
'Fazendo o loop para localizar o adaptador referente a vpn
For Each Adapter In Adapters
If InStr(Adapter.Description,"Miniport") Then
WScript.Echo "Adaptador da rede vpn: " & Adapter.Description & " IP: " & Config.IPAddress(0)
ipVPN = Config.IPAddress(0) 'jogando o ip para a variável
'WScript.Echo Config.IPAddress(0)
End If
Next
Next
'*****FIM LOCALIZAção O IP DA CONEXÃO****************
if trim(ipVPN)<>"" then 'se existe ip da VPN inclui a rota para a vpn
WshShell.run "cmd /k route add" & ipDestino & " mask " & mascaraDestino & ipVPN
end if
'FIM DO SCRIPT
Espero que ajude!!
Comentários
+ Enviar Comentário