In the need for a simple and easy to use OS X based Always On VPN solution? If so, I may have something for you.
We are using a straight forward L2TP over IPSec VPN connection for connecting into our Pentesting lab. Beside giving me access to many of my most needed tools it also allows me to surf the web without any proxy or firewall limitation. As I encountered several VPN disconnects over my work day I decided to solve it once an forever by automatically reconnecting the VPN after a dropout.
To do so I wrote the following Apple Script based on this Apple Support Communities discussion.
global PING_HOST global VPN_NAME set PING_HOST to "vpn.example.com" # A host on the web to ensure the current connection is working at all set VPN_NAME to "Your VPN" # The name of the VPN connection to dial (works with PPTP, L2TP over IPSec and Cisco IPSec) on idle try # as the ping causes an exception if no response is received we only try to connect to the server if it's really reachable and thereby surpress error messages do shell script "ping -c 1 -W 500 " & PING_HOST tell application "System Events" tell current location of network preferences set myConnection to the service VPN_NAME if myConnection is not null then if current configuration of myConnection is not connected then connect myConnection end if end if end tell end tell end try return 2 # schedule to run again in two seconds end idle
Simply save it as an application and check the box “Stay open after run handler”:
As long as the App it is running, your VPN connection will be redialed automatically. This small helper gained a permanent spot in my Dock!
PS: To give the App a nicer appearance you may want to change it’s icon to this free one. Here is a tutorial on how to do that.
Edit: Updated the code to use the “on idle” handler