Goal: To selectively route traffic over a VPN, so that general browsing/downloads goes via the normal primary connection, with my business VPN traffic going over the VPN.

I have tried a similar method mentioned here, but no matter how I changed the details it didn't work.

The VPN works, I can connect and route all traffic over it, so that is not the issue.

Home IP: 192.168.34.X

IP from VPN: 192.168.1.X

IP's (via VPN) trying to access in the internal network: 10.4.X.X, 196.220.X.X

How to selectively route traffic for one specified IP adddress through the VPN tunnel (not all traffic)?

  • Shame I cannot comment for some reason --- this is not an answer but a follow-up. So before deleting it, please see my question here: apple.stackexchange.com/questions/96071/… I would like to route my VM traffic (or just some specific public IPs) over my PPTP VPN, but (maybe because my settings are not manual) I cannot figure out the specifics. Thanks!
    – László
    Commented Jul 10, 2013 at 22:04

1 Answer 1


Step 1, create two plain text files named ip-up and ip-down in /etc/ppp and make the two files executable:

$ sudo touch /etc/ppp/ip-{up,down}
$ sudo chmod +x /etc/ppp/ip-{up,down}

Step 2, modify the file ip-up, add the following:

export PATH="/bin:/sbin:/usr/sbin:/usr/bin"

OLDGW=`netstat -nr | grep '^default' | grep -v 'ppp' | sed 's/default *\([0-9\.]*\) .*/\1/'`

if [ ! -e /tmp/pptp_oldgw ]; then
    echo "${OLDGW}" > /tmp/pptp_oldgw

dscacheutil -flushcache
route add "${OLDGW}"

Step 3, modify the ip-down, add the following:

export PATH="/bin:/sbin:/usr/sbin:/usr/bin"

if [ ! -e /tmp/pptp_oldgw ]; then
        exit 0

ODLGW=`cat /tmp/pptp_oldgw`

route delete "${OLDGW}"
rm /tmp/pptp_oldgw
  • Tried this exactly as you outlined - it did not work. Still not able to access either of the webpages via the VPN only while other browsing is via default connection. Any further thoughts? Commented Aug 7, 2012 at 19:39
  • The script is selectively not route traffic for specific IP. Other than those IP, all route via VPN. ip-up runs when you connect to VPN, the specific IP will add to your old route table (so not going through VPN). ip-down runs when you disconnect from VPN.
    – kukoo
    Commented Aug 8, 2012 at 0:57

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .