I’ve used this method to connect to a windows PPTP VPN server on PCLinuxOS 2010 , but I am sure it will work on other ditros too.
First make sure sure pptp-linux and ppp packages are installed on your client PC.
you may install them by yum or apt-get or package manager of your linux.
then use the following command to connect to VPN.
pppd pty "pptp IP_OR_FQDN_VPN_SERVER --nolaunchpppd" file /etc/ppp/options.pptp user USERNAME password PASSWORD
replace IP_OR_FQDN_VPN_SERVER with IP or DNS of your VPS server.
replace USERNAME with your VPN username.
replace PASSWORD with your VPN password.
wait for like 10-15 seconds , then run ifconfig command , you should see ppp0 interface there , if it is not there , you can troubleshoot by looking into syslog of your linux.
please note this command is good for connecting to a windows VPN server with default configuration , if you have any custom settings , you may need to edit /etc/ppp/options.pptp file.
to disconnect form VPN , use the following command :
killall pppd
if you need to route all of your traffic to VPN server ( use it as a gateway ) , do the following :
create a file named vpn-up in /etc/ppp/ip-up.d and put the following lines inside it :
#!/bin/bash H=`ps aux | grep 'pppd pty' | grep -v grep | awk '{print $14}'` DG=`route -n | grep UG | awk '{print $2}'` DEV=`route -n | grep UG | awk '{print $8}'` route add -host $H gw $DG dev $DEV route del default $DEV route add default dev ppp0
and make it executable by :
chmod +x vpn-up
create another file named vpn-down in /etc/ppp/ip-down.d and put the following lines inside it :
#!/bin/bash H=`route -n | grep UGH | awk '{print $1}'` DG=`route -n | grep UGH | awk '{print $2}'` DEV=`route -n | grep UGH | awk '{print $8}'` route del -host $H route add default gw $DG dev $DEV
and make it executable by :
chmod +x vpn-down
now reconnect to VPN , and your routing will be done automatically.