Windows does not really offer any good ways of setting up a permanent VPN connection that is stable.
A pretty nice solution to this problem by combining
- Windows Powershell
- Windows VPN Client
- Windows Task scheduler
1. Set up a new VPN Connection. Just follow the usual “Connect to a workplace” wizard. Make sure that the VPN connection works.
2. After creating the connection – set Redialing properties.
- Redeal attempts - 99
- Time between redial attempts - 1 minute
- Idle time before handing up - never
- Redial if line is dropped - ticket
3. Uncheck “Use default gateway on remote network” – in order to prevent all network/internet trafic to go through the VPN (unless this is what you want).
4.Since the Redial functionality of the VPN Connection isn’t trustable – it’s best to deal with this yourself. It’s powershell time. Create c:\vpn.ps1 and add the following:
$ip = "10.20.30.40" $result = gwmi -query "SELECT * FROM Win32_PingStatus WHERE Address = '$ip'" if ($result.StatusCode -eq 0) { Write-Host "$ip is up." } else{ Write-Host "$ip is down." Write-Host "Disconnecting..." rasdial.exe DegreeVPN /DISCONNECT Write-Host "Connecting..." rasdial.exe DegreeVPN vpnUsername vpnPassword12345 }
The script pings an IP that should be available through the VPN. If the ping is unsucecssfull – the connection is reestablished. You can also set up routes here (and get notifications by email every time the VPN was disconnected) if you add a few more lines to the script.
5. Start up a powershell and type “Set-ExecutionPolicy Unrestricted” order to allow the script to be executed.
6. Schedule this script to execute at startup (no user/login necessary) and also every 5 minutes.