Kernel config:
zgrep IP_MULTIPLE_TABLES < /proc/config.gz
that needs to return 'IP_MULTIPLE_TABLES=y'
PPTP config:
/etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
user_name label SECRET_PASS *
The user_name is your user name from HE.
The label is whatever you want to call your tunnel.
SECRET_PASS is the pass you set for the tunnel from HE.
/etc/ppp/peers/[label] (use the name of whatever you called your tunnel)
pty "pptp tunnel_server --nolaunchpppd"
name user_name
remotename he.net
file /etc/ppp/options.label
The tunnel_server is the server you connect to at HE.
The user_name is your user name from HE.
The remote name is the name of your tunnel.
The file option is the file you use for your tunnel specific settings. Change the label to what you used up in /etc/ppp/chap-secrets.
/etc/ppp/options.label
lock
noauth
persist
nodefaultroute
mtu 1400
mru 1400
nobsdcomp
nodeflate
lcp-echo-failure 30
lcp-echo-interval 10
Add the following to /etc/ppp/ip-up
echo "1 admin" >> /etc/iproute2/rt_tables
ip route add default dev ppp0 table admin
ip rule add from your_ip_from_he table admin
The your_ip_from_he needs to be the IP that HE is routing to you.
Add the following to /etc/ppp/ip-down
ip rule del from your_ip_from_he table admin
ip route del default dev ppp0 table admin
sed "/1 admin/d" /etc/iproute2/rt_tables
The your_ip_from_he needs to be the IP that HE is routing to you.
After all this is done, all you need to do is the following
pon label
poff label
The label is whatever you called your tunnel in /etc/ppp/chap-secrets and the peers file.
*edit: corrected title and added some options